<?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>66079</bug_id>
          
          <creation_ts>2011-08-11 11:09:43 -0700</creation_ts>
          <short_desc>[work in progress] Implement MutationListener/MutationTarget, a replacement for DOM Mutation Events</short_desc>
          <delta_ts>2012-03-06 12:31:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>449888</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-11 11:09:43 -0700</bug_when>
    <thetext>[work in progress] Implement MutationListener/MutationTarget, a replacement for DOM Mutation Events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449901</commentid>
    <comment_count>1</comment_count>
      <attachid>103650</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-11 11:32:14 -0700</bug_when>
    <thetext>Created attachment 103650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449902</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-11 11:34:34 -0700</bug_when>
    <thetext>As noted in title, this is is a work in progress, and is neither itself a complete implementation nor small enough to be reviewed reasonably.  Instead, it&apos;s meant to illustrate a WebKit implementation close to Jonas Sicking&apos;s proposal for a replacement to MutationEvents in http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0369.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449905</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-11 11:40:29 -0700</bug_when>
    <thetext>Also, pulled from the ChangeLog:

        Partially implements an experimental, vendor-prefixed API with the
        hope of eventually replacing MutationEvents. The API is based in
        large part on a proposal by Jonas Sicking in a message to public-webapps:
 
        http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0369.html

        That thread is very long, but has helpfully been summarized by
        Rafael Weinstein in a recent message:

        http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/0779.html

        Note that this patch is in no way meant to be a complete
        implementation. The biggest missing feature is the actual dispatching
        of MutationRecordLists to MutationListeners: the included layout
        test instead calls a &quot;spinMutationQueue&quot; function to trigger
        notifications. This is not actually meant to be exposed to JS,
        though: my hope is to instead call spinMutationQueue from
        C++, either from somewhere in WebCore or (more likely) in
        the embedder. I have a separate change which implements the
        latter in Chromium.

        The other main thing missing from this patch is that MutationRecords
        are not dispatched in all the proper places, e.g., the handling of
        innerHTML is not as we hope it to be. This is simply a matter of
        wanting to put this patch up to get feedback: it shouldn&apos;t be
        much work to add MutationRecord dispatching in all the proper
        places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450815</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-12 21:52:38 -0700</bug_when>
    <thetext>I suggest sending a note about this work to webkit-dev. The idea of moving away from DOM mutation events is of course a generally accepted one, and there are many people who may want to participate in one way or another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452651</commentid>
    <comment_count>5</comment_count>
      <attachid>104260</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-17 15:47:09 -0700</bug_when>
    <thetext>Created attachment 104260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452757</commentid>
    <comment_count>6</comment_count>
      <attachid>104260</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-17 17:28:09 -0700</bug_when>
    <thetext>Comment on attachment 104260
Patch

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

This looks really cool.

Why do apparently new files have licenses so divergent in terms of copyright holder, date and terms?

&gt; LayoutTests/fast/dom/mutation-listener.html:91
&gt; +  &lt;/script&gt;

Is it worth adding negative tests, eg when you’re listening to attribute mutation child mutation doesn’t fire the listener, etc.? And tests that merging work? etc.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:483
&gt; +        push(@customInternalFields, &quot;mutationListenerCacheIndex&quot;);

Why not just use the event listener cache?

&gt; Source/WebCore/dom/MutationRecord.cpp:41
&gt; +// TODO(adamk): Figure out whether we want to share a single empty node list, or

Sharing a single empty node list is a bad idea: Presumably want it to appear as a unique object to JavaScript (ie expandos stuck on in one place not appearing in another) and deciding when to create a wrapper could be tedious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453122</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-18 10:36:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 104260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104260&amp;action=review
&gt; 
&gt; This looks really cool.
&gt; 
&gt; Why do apparently new files have licenses so divergent in terms of copyright holder, date and terms?

Most should be new and marked Google 2011; the main case where this diverges is under bindings/js, where the classes are modified copies of JSEventListener. Not sure what the usual WebKit style is for this.

&gt; &gt; LayoutTests/fast/dom/mutation-listener.html:91
&gt; &gt; +  &lt;/script&gt;
&gt; 
&gt; Is it worth adding negative tests, eg when you’re listening to attribute mutation child mutation doesn’t fire the listener, etc.? And tests that merging work? etc.

More tests are definitely in order, this file for now is a basic proof that _something_ is happening. As noted above, the implementation isn&apos;t complete, e.g., setting innerHTML doesn&apos;t do what it&apos;s supposed to (batching all the removals and insertions together into a single MutationRecord).

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:483
&gt; &gt; +        push(@customInternalFields, &quot;mutationListenerCacheIndex&quot;);
&gt; 
&gt; Why not just use the event listener cache?

Well, the biggest reason is that it doesn&apos;t exist on Node, since there&apos;s now an alternative way of handling refcounting for event listeners on nodes.  In general I&apos;m fairly unhappy with how much EventListener logic had to be duplicated in the bindings, so suggestions on how that could be reduced are welcome (I plan to look into some template-based approach when I get a chance).

&gt; &gt; Source/WebCore/dom/MutationRecord.cpp:41
&gt; &gt; +// TODO(adamk): Figure out whether we want to share a single empty node list, or
&gt; 
&gt; Sharing a single empty node list is a bad idea: Presumably want it to appear as a unique object to JavaScript (ie expandos stuck on in one place not appearing in another) and deciding when to create a wrapper could be tedious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455816</commentid>
    <comment_count>8</comment_count>
      <attachid>104930</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-23 16:42:09 -0700</bug_when>
    <thetext>Created attachment 104930
Replace MutationRecordList with an array of MutationRecords</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456271</commentid>
    <comment_count>9</comment_count>
      <attachid>105032</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-24 11:45:28 -0700</bug_when>
    <thetext>Created attachment 105032
Remove MutationTypes, use bitmasks everywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457134</commentid>
    <comment_count>10</comment_count>
      <attachid>105241</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-25 14:25:35 -0700</bug_when>
    <thetext>Created attachment 105241
Make Document, DocumentFragment, and Element implement MutationTarget instead of Node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458568</commentid>
    <comment_count>11</comment_count>
      <attachid>105544</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-29 16:50:43 -0700</bug_when>
    <thetext>Created attachment 105544
MutationRecord changes: addedCount, childlistIndex, and inDocument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458624</commentid>
    <comment_count>12</comment_count>
      <attachid>105558</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-29 18:28:54 -0700</bug_when>
    <thetext>Created attachment 105558
MutationRecord: removed prevValue/newValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458630</commentid>
    <comment_count>13</comment_count>
      <attachid>105559</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-29 18:42:01 -0700</bug_when>
    <thetext>Created attachment 105559
MutationRecord: memory optimization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459143</commentid>
    <comment_count>14</comment_count>
      <attachid>105685</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-30 13:33:13 -0700</bug_when>
    <thetext>Created attachment 105685
Merged to r94094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459383</commentid>
    <comment_count>15</comment_count>
      <attachid>105727</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-30 18:18:59 -0700</bug_when>
    <thetext>Created attachment 105727
Coalesce childlist notifications for innerHTML etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460003</commentid>
    <comment_count>16</comment_count>
      <attachid>105845</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-31 15:50:52 -0700</bug_when>
    <thetext>Created attachment 105845
Created MutationScope.{h,cpp}, some API updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461524</commentid>
    <comment_count>17</comment_count>
      <attachid>106198</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-09-02 14:26:05 -0700</bug_when>
    <thetext>Created attachment 106198
Added tests and fixes for replaceChild, insertBefore, innerHTML</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461613</commentid>
    <comment_count>18</comment_count>
      <attachid>106218</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-09-02 16:22:45 -0700</bug_when>
    <thetext>Created attachment 106218
Test reorganization</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103650</attachid>
            <date>2011-08-11 11:32:14 -0700</date>
            <delta_ts>2011-08-17 15:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66079-20110811113218.patch</filename>
            <type>text/plain</type>
            <size>120658</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNWZiMDFmMGNjZWY2ZmU2Njc1ODQ0Y2E5YWQ0YmY5NGEzZTQ3OWY2Li5hYTAwZmQ4
NGJjNDAyZTFhZWI2OGM0YzYxMTE4MGIxNmUxYzcyMDA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDgtMTEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFy
Z2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlz
dGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0xMCAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgTmV0d29y
ay5pbml0aWFsQ29udGVudFNldCBmcm9tIHByb3RvY29sLCBzdG9yZSB3b3JrZXJzIGNvbnRlbnQg
b24gYmFja2VuZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxp
c3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDBiMWZhM2YxMjczZTUxZjhlNjBhNmQwZjE2
ZjEyMTg1YTNkOGIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0
YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdGhhdCBN
dXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBtdXRhdGlvbnNbMF0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRl
ZE5vZGVzWzBdCitQQVNTIG11dGF0aW9uc1sxXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVk
Tm9kZXNbMV0KK1BBU1MgbXV0YXRpb25zWzJdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWRO
b2Rlc1syXQorUEFTUyBsaXN0ZW5lckNhbGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS5y
ZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3ZlZE5vZGVzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlz
IHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJOYW1lIGlzICJkYXRhLWZvbyIKK1BBU1MgbGlz
dGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHRleHROb2Rl
c1swXQorUEFTUyBsaXN0ZW5lckNhbGxlZCBpcyB0cnVlCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2M3N2E4ODQ0MjBkMzAyYzA1MDdjODRlZTNiZWRiNjFiNzlhMzM4NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwKQEAgLTAs
MCArMSw5NCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KyAgPGRpdiBpZD0ic2FuZGJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+CisgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25MaXN0ZW5lcnMgd29y
ayBhcyBleHBlY3RlZC4nKTsKKyAgICAgICAgdmFyIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAg
IHZhciBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworICAgICAgICB2YXIgaW5zZXJ0ZWROb2RlczsK
KyAgICAgICAgdmFyIHJlbW92ZWROb2RlczsKKyAgICAgICAgdmFyIG1vZGlmaWVkQXR0cnM7Cisg
ICAgICAgIHZhciB0ZXh0Tm9kZXM7CisgICAgICAgIGZ1bmN0aW9uIGxpc3RlbmVyKG0pIHsKKyAg
ICAgICAgICAgIGxpc3RlbmVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9
IG07CisgICAgICAgICAgICB2YXIgaW5zZXJ0ZWRJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIg
cmVtb3ZlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBhdHRySW5kZXggPSAwOworICAgICAg
ICAgICAgdmFyIHRleHROb2RlSW5kZXggPSAwOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBtLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKG1baV0udHlwZSA9PSAn
Y2hpbGRsaXN0JykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1b
aV0uaW5zZXJ0ZWROb2Rlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLmluc2VydGVkTm9kZXNbJyArIGogKyAnXScs
ICdpbnNlcnRlZE5vZGVzWycgKyAoaW5zZXJ0ZWRJbmRleCsrKSArICddJyk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtW2ld
LnJlbW92ZWROb2Rlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLnJlbW92ZWROb2Rlc1snICsgaiArICddJywgJ3Jl
bW92ZWROb2Rlc1snICsgKHJlbW92ZWRJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1baV0udHlwZSA9PSAnYXR0cmlidXRl
JykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9u
c1snICsgaSArICddLmF0dHJOYW1lJywgbW9kaWZpZWRBdHRyc1thdHRySW5kZXgrK10pOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdjaGFyYWN0ZXJkYXRhJykgewor
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10udGFyZ2V0
JywgJ3RleHROb2Rlc1snICsgKHRleHROb2RlSW5kZXgrKykgKyAnXScpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5zZXJ0ZWROb2RlcyA9IFtdOwor
ICAgICAgICAgICAgcmVtb3ZlZE5vZGVzID0gW107CisgICAgICAgICAgICBtb2RpZmllZEF0dHJz
ID0gW107CisgICAgICAgICAgICB0ZXh0Tm9kZXMgPSBbXTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gVGVzdCBpbnNlcnRpb25zLCAi
YnViYmxpbmciLCBhbmQgZGUtZHVwaW5nLgorICAgICAgICB2YXIgaW5uZXJTYW5kYm94ID0gc2Fu
ZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAg
IHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDog
dHJ1ZX0pOworICAgICAgICB2YXIgYSA9IHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYS50ZXh0Q29udGVudCA9ICdoZWxsbywgd29y
bGQnOworICAgICAgICB2YXIgYiA9IGlubmVyU2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBpbnNlcnRlZE5vZGVzID0gW2EsIGEuZmly
c3RDaGlsZCwgYl07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxz
ZTsKKworICAgICAgICAvLyBUZXN0IHJlbW92YWwuCisgICAgICAgIGlubmVyU2FuZGJveC53ZWJr
aXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7CisgICAg
ICAgIGlubmVyU2FuZGJveC5yZW1vdmVDaGlsZChiKTsKKyAgICAgICAgcmVtb3ZlZE5vZGVzID0g
W2JdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzaG91bGRCZVRydWUo
J2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgLy8gVGVzdCBhdHRyaWJ1dGUgbXV0YXRpb24uCisgICAgICAgIGlubmVyU2FuZGJveC53
ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7YXR0cmlidXRlOiB0cnVlfSk7Cisg
ICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbJ2RhdGEtZm9vJ107CisgICAgICAgIGlubmVyU2FuZGJv
eC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywgJ215ZGF0YScpOworICAgICAgICBzcGluTXV0YXRp
b25RdWV1ZSgpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAg
ICAgIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBjaGFyYWN0ZXJk
YXRhIG11dGF0aW9uLgorICAgICAgICBzYW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIo
bGlzdGVuZXIsIHtjaGFyYWN0ZXJkYXRhOiB0cnVlfSk7CisgICAgICAgIHRleHROb2RlcyA9IFth
LmZpcnN0Q2hpbGRdOworICAgICAgICBhLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5
ZSEnOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzaG91bGRCZVRydWUo
J2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgc2FuZGJveC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAg
ICAgICAgc2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykpOwor
ICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzaG91bGRCZUZhbHNlKCdsaXN0
ZW5lckNhbGxlZCcpOworCisgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworICA8L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM0OWFjNDIw
MzRkYzkzZTkyYTU4YzY4MWZiZWU3ZTJjYTkyMTA4ZDYuLjM0NDc5N2JhMDk2N2M3MDg0ZWEzODYy
MTYzZDdkY2ZjN2MwMjQxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMDAgQEAKKzIwMTEtMDgt
MTEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4g
cHJvZ3Jlc3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJl
cGxhY2VtZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBpbXBsZW1lbnRzIGFuIGV4cGVyaW1l
bnRhbCwgdmVuZG9yLXByZWZpeGVkIEFQSSB3aXRoIHRoZQorICAgICAgICBob3BlIG9mIGV2ZW50
dWFsbHkgcmVwbGFjaW5nIE11dGF0aW9uRXZlbnRzLiBUaGUgQVBJIGlzIGJhc2VkIGluCisgICAg
ICAgIGxhcmdlIHBhcnQgb24gYSBwcm9wb3NhbCBieSBKb25hcyBTaWNraW5nIGluIGEgbWVzc2Fn
ZSB0byBwdWJsaWMtd2ViYXBwczoKKworICAgICAgICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hp
dmVzL1B1YmxpYy9wdWJsaWMtd2ViYXBwcy8yMDExSnVsU2VwLzAzNjkuaHRtbAorCisgICAgICAg
IFRoYXQgdGhyZWFkIGlzIHZlcnkgbG9uZywgYnV0IGhhcyBoZWxwZnVsbHkgYmVlbiBzdW1tYXJp
emVkIGJ5CisgICAgICAgIFJhZmFlbCBXZWluc3RlaW4gaW4gYSByZWNlbnQgbWVzc2FnZToKKwor
ICAgICAgICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJsaWMtd2ViYXBw
cy8yMDExSnVsU2VwLzA3NzkuaHRtbAorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGlz
IGluIG5vIHdheSBtZWFudCB0byBiZSBhIGNvbXBsZXRlCisgICAgICAgIGltcGxlbWVudGF0aW9u
LiBUaGUgYmlnZ2VzdCBtaXNzaW5nIGZlYXR1cmUgaXMgdGhlIGFjdHVhbCBkaXNwYXRjaGluZwor
ICAgICAgICBvZiBNdXRhdGlvblJlY29yZExpc3RzIHRvIE11dGF0aW9uTGlzdGVuZXJzOiB0aGUg
aW5jbHVkZWQgbGF5b3V0CisgICAgICAgIHRlc3QgaW5zdGVhZCBjYWxscyBhICJzcGluTXV0YXRp
b25RdWV1ZSIgZnVuY3Rpb24gdG8gdHJpZ2dlcgorICAgICAgICBub3RpZmljYXRpb25zLiBUaGlz
IGlzIG5vdCBhY3R1YWxseSBtZWFudCB0byBiZSBleHBvc2VkIHRvIEpTLAorICAgICAgICB0aG91
Z2g6IG15IGhvcGUgaXMgdG8gaW5zdGVhZCBjYWxsIHNwaW5NdXRhdGlvblF1ZXVlIGZyb20KKyAg
ICAgICAgQysrLCBlaXRoZXIgZnJvbSBzb21ld2hlcmUgaW4gV2ViQ29yZSBvciAobW9yZSBsaWtl
bHkpIGluCisgICAgICAgIHRoZSBlbWJlZGRlci4gSSBoYXZlIGEgc2VwYXJhdGUgY2hhbmdlIHdo
aWNoIGltcGxlbWVudHMgdGhlCisgICAgICAgIGxhdHRlciBpbiBDaHJvbWl1bS4KKworICAgICAg
ICBUaGUgb3RoZXIgbWFpbiB0aGluZyBtaXNzaW5nIGZyb20gdGhpcyBwYXRjaCBpcyB0aGF0IE11
dGF0aW9uUmVjb3JkcworICAgICAgICBhcmUgbm90IGRpc3BhdGNoZWQgaW4gYWxsIHRoZSBwcm9w
ZXIgcGxhY2VzLCBlLmcuLCB0aGUgaGFuZGxpbmcgb2YKKyAgICAgICAgaW5uZXJIVE1MIGlzIG5v
dCBhcyB3ZSBob3BlIGl0IHRvIGJlLiBUaGlzIGlzIHNpbXBseSBhIG1hdHRlciBvZgorICAgICAg
ICB3YW50aW5nIHRvIHB1dCB0aGlzIHBhdGNoIHVwIHRvIGdldCBmZWVkYmFjazogaXQgc2hvdWxk
bid0IGJlCisgICAgICAgIG11Y2ggd29yayB0byBhZGQgTXV0YXRpb25SZWNvcmQgZGlzcGF0Y2hp
bmcgaW4gYWxsIHRoZSBwcm9wZXIKKyAgICAgICAgcGxhY2VzLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
dXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0
aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0
aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6Omlzb2xhdGVkV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjp3cmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6c2V0V3JhcHBlcik6CisgICAgICAgIEpTTXV0
YXRpb25MaXN0ZW5lciBpcyB2ZXJ5IHNpbWlsYXIgdG8gSlNFdmVudExpc3RlbmVyLAorICAgICAg
ICB3aXRoIGEgZmV3IHNpbXBsaWZpY2F0aW9ucy4gIEl0cyByZWFzb24gZm9yIGV4aXN0aW5nCisg
ICAgICAgIGlzIHRoYXQgTm9kZS53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyIG5lZWRzIHRvIGJl
aGF2ZQorICAgICAgICBsaWtlIGFkZEV2ZW50TGlzdGVuZXIsIGluIHRoYXQgZHVwbGljYXRlIGFk
ZGl0aW9ucyBhcmUKKyAgICAgICAgaWdub3JlZC4gVGhpcyByZXF1aXJlcyB0aGUgb3BlcmF0b3I9
PSBtZXRob2QuIFdlIGFsc28KKyAgICAgICAgd2FudCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUg
c2FtZSBNdXRhdGlvblJlY29yZAorICAgICAgICBtb3JlIHRoYW4gb25jZSB0byBhIGdpdmVuIGxp
c3RlbmVyLCBhbmQgZm9yIHRoaXMKKyAgICAgICAgd2UgdXNlIGEgSGFzaE1hcCwgdGh1cyB0aGUg
fGhhc2h8IG1ldGhvZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjp3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6d2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIFNpbmNlIE11dGF0aW9uTGlzdGVuZXJzIHRoZW1zZWx2ZXMgYXJlIGN1c3RvbSwgc28K
KyAgICAgICAgbXVzdCBiZSBtdXRhdGlvbiBsaXN0ZW5lciBhZGRpdGlvbiBhbmQgcmVtb3ZhbC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAg
KEdldEludGVybmFsRmllbGRzKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V3JhcHBlcjo6Z2V0TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVy
OjpkaXNwb3NlTGlzdGVuZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxp
c3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVu
ZXI6Omhhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lk
Q2FsbGJhY2suaC4KKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmdldExpc3RlbmVyT2JqZWN0KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Y2xlYXJX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmRv
RmluZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
cjo6ZmluZE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgIFRoZSBWOCBlcXVpdmFsZW50cyBvZiB0
aGUgSlNNdXRhdGlvbkxpc3RlbmVyIGFib3ZlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmg6CisgICAgICAgIEdlbmVyYWxpemVkIGludm9r
ZUNhbGxiYWNrIHRvIG1ha2UgaXQgc3VpdCB0aGUgcHVycG9zZXMgb2YKKyAgICAgICAgVjhNdXRh
dGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6d2Via2l0QWRkTXV0
YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6d2Via2l0
UmVtb3ZlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgQW5kIHRoZSBlcXVpdmFs
ZW50IGN1c3RvbSBtZXRob2RzIG9uIE5vZGUuCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2
ZW50KToKKyAgICAgICAgRGlzcGF0Y2ggImNoYXJhY3RlcmRhdGEiIG11dGF0aW9ucy4KKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1v
dmFsRXZlbnRzKToKKyAgICAgICAgRGlzcGF0Y2ggImNoaWxkbGlzdCIgbXV0YXRpb25zLgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0
dHJpYnV0ZSk6CisgICAgICAgIERpc3BhdGNoICJhdHRyaWJ1dGUiIG11dGF0aW9ucy4KKyAgICAg
ICAgKiBkb20vTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uTGlzdGVuZXI6On5NdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRp
b25MaXN0ZW5lci5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlz
dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRl
eHREYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6TXV0YXRp
b25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJl
Y29yZCk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25SZWNvcmQ6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6aW5z
ZXJ0ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpuZXh0Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6YXR0ck5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25SZWNvcmQ6OnByZXZWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
blJlY29yZDo6bmV3VmFsdWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5pZGw6IEFk
ZGVkLgorICAgICAgICBNdXRhdGlvblJlY29yZHMgYXJlIGFuYWxvZ291cyB0byBFdmVudHM6IHRo
ZXkgaG9sZCBkYXRhCisgICAgICAgIGFib3V0IGEgc2luZ2xlIG11dGF0aW9uLgorICAgICAgICAq
IGRvbS9NdXRhdGlvblJlY29yZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uUmVjb3JkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkTGlzdDo6TXV0YXRpb25SZWNvcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
UmVjb3JkTGlzdDo6fk11dGF0aW9uUmVjb3JkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZExpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZExpc3Q6Oml0ZW0pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZExpc3QuaDogQWRkZWQu
CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICBN
dXRhdGlvblJlY29yZExpc3RzIGFyZSBhcnJheS1saWtlIG9iamVjdHMgd2hpY2ggYXJlIHBhc3Nl
ZCB0bworICAgICAgICBNdXRhdGlvbkxpc3RlbmVycywgY29udGFpbmluZyBhbGwgTXV0YXRpb25S
ZWNvcmRzIHNpbmNlIHRoZSBsYXN0IHRpbWUKKyAgICAgICAgZWFjaCBsaXN0ZW5lciB3YXMgbm90
aWZpZWQuCisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25Db250ZXh0OjpNdXRhdGlvbkNvbnRleHRQdHJI
YXNoOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0VmVjdG9yTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFjdGl2ZU11dGF0aW9uQ29udGV4dHMpOgorICAgICAgICAoV2ViQ29yZTo6
c3Bpbk11dGF0aW9uUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlTXV0YXRpb25RdWV1
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6YWRkTXV0YXRpb25MaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6cmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6ZW5xdWV1ZU11dGF0aW9uKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuaDogQWRkZWQuCisgICAgICAgIE11dGF0aW9u
VGFyZ2V0IGlzIGFuYWxvZ291cyB0byBFdmVudFRhcmdldCwgYW5kIGlzIGEgbWl4aW4gZm9yIE5v
ZGUuCisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0RGF0YTo6TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0RGF0YTo6fk11dGF0aW9uVGFyZ2V0RGF0YSk6Cisg
ICAgICAgIE11dGF0aW9uVGFyZ2V0RGF0YSBpcyBtZWFudCB0byBiZSBwYXJ0IG9mIE5vZGVSYXJl
RGF0YS4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UeXBlcy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y2hpbGRsaXN0TmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblR5cGVzOjphdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uVHlwZXM6OmNoYXJhY3RlcmRhdGFOYW1lKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25UeXBl
cy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpjaGlsZGxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UeXBlczo6c2V0Q2hpbGRsaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uVHlwZXM6OmF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVz
OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y2hhcmFj
dGVyZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpzZXRDaGFyYWN0ZXJk
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6Ok11dGF0aW9uVHlwZXMpOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmlkbDogQWRkZWQuCisgICAgICAgIEEgc2ltcGxl
IG9iamVjdCB0aGF0J3MgdGhlIHNlY29uZCBhcmd1bWVudCB0byBhZGRNdXRhdGlvbkxpc3RlbmVy
LgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoTXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bXV0YXRpb25UYXJnZXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6Cisg
ICAgICAgIE11dGF0aW9uVGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRh
KToKKyAgICAgICAgKiBkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6UmVnaXN0ZXJlZE11
dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXI6Om1lcmdlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c3Bpbk11dGF0aW9uUXVldWUpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAg
ICBOb3RlIHRoYXQgdGhlc2UgY2hhbmdlcyB0byBET01XaW5kb3cgYXJlbid0IHJlYWxseSBwYXJ0
IG9mIHRoZSBjaGFuZ2UsCisgICAgICAgIGFuZCBhcmUgc2ltcGx5IGEgc2hpbSB0byBtYWtlIGl0
IGVhc3kgdG8gZGVhbCB3aXRoIG11dGF0aW9ucyB3aGlsZSB3ZQorICAgICAgICBmaWd1cmUgb3V0
IHRoZSB0aW1lLXRvLXJ1biBpc3N1ZXMuCisKIDIwMTEtMDgtMTAgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIE5l
dHdvcmsuaW5pdGlhbENvbnRlbnRTZXQgZnJvbSBwcm90b2NvbCwgc3RvcmUgd29ya2VycyBjb250
ZW50IG9uIGJhY2tlbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQw
YmFlZTU5ZDJjMDJhODRhNWEyZTc2M2FkOTZjNTM3MC4uY2YxMjc5Y2UwOTJjNTBjNzFkMjBmZmUw
M2E1YzRjYTI4MGNlOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYg
KzI0NCwxMCBAQAogI2luY2x1ZGUgIkpTTWV0YWRhdGFDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAi
SlNNb3VzZUV2ZW50LmNwcCIKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuY3BwIgorI2luY2x1
ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5j
cHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZExpc3QuY3BwIgorI2luY2x1ZGUgIkpTTXV0
YXRpb25UeXBlcy5jcHAiCiAjaW5jbHVkZSAiSlNOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUg
IkpTTmF2aWdhdG9yLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDI2YjYwYWIzMTMxZDlhZTRmNmYy
MzYzNDE3MTI1MGY2YTU1YzA3ZjguLjU5MzViMjBiOTFlYjRjODcwNDYyNDhmYzZmMzU1M2JkZmY0
Y2VmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzE1LDYgKzMxNSwxMCBA
QCBET01fQ0xBU1NFUyA9IFwKICAgICBNZXRhZGF0YUNhbGxiYWNrIFwKICAgICBNb3VzZUV2ZW50
IFwKICAgICBNdXRhdGlvbkV2ZW50IFwKKyAgICBNdXRhdGlvbkxpc3RlbmVyIFwKKyAgICBNdXRh
dGlvblJlY29yZCBcCisgICAgTXV0YXRpb25SZWNvcmRMaXN0IFwKKyAgICBNdXRhdGlvblR5cGVz
IFwKICAgICBOYW1lZE5vZGVNYXAgXAogICAgIE5hdmlnYXRvciBcCiAgICAgTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IgXApAQCAtNTcxLDcgKzU3NSw3IEBAIERPTV9DTEFTU0VTID0gXAogCiAuUEhP
TlkgOiBhbGwKIAotSlNfRE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIEpTRXZlbnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCwkKERPTV9DTEFTU0VT
OiU9SlMlLmgpKQorSlNfRE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIEpTRXZlbnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCBKU011dGF0aW9uTGlz
dGVuZXIuaCwkKERPTV9DTEFTU0VTOiU9SlMlLmgpKQogCiBXRUJfRE9NX0hFQURFUlMgOj0KIGlm
ZXEgKCQoZmluZHN0cmluZyBCVUlMRElOR19XWCwkKEZFQVRVUkVfREVGSU5FUykpLCBCVUlMRElO
R19XWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggOGE5YmMxZGQ0
ODg4ZWRiM2MwYjJiMDIyZmNjMjU1Mjk1OTU0ZmYzMS4uODljMjc2NzRhYTRkYmZmMWQyNDVmOTIx
ZDc4MjY5MGM1OTdhZjI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
QEAgLTIzMSw2ICsyMzEsNyBAQAogICAgICAgIyBDdXN0b20gYmluZGluZ3MgaW4gYmluZGluZ3Mv
djgvY3VzdG9tIGV4aXN0IGZvciB0aGVzZS4KICAgICAgICcuLi9kb20vRXZlbnRMaXN0ZW5lci5p
ZGwnLAogICAgICAgJy4uL2RvbS9FdmVudFRhcmdldC5pZGwnLAorICAgICAgJy4uL2RvbS9NdXRh
dGlvbkxpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4vaHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKIAog
ICAgICAgIyBCaW5kaW5ncyB3aXRoIGN1c3RvbSBPYmplY3RpdmUtQyBpbXBsZW1lbnRhdGlvbnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMmM2MzJhZDRlMzUzYmI0MjkyYTY2OGYwNzZjMDEzNGYwNGUz
NTA5MS4uNDg0N2Q4YjgzMzVmZGViNmY3NDNkZmQ4N2JlZWRkYTUxOTZlYjZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMTE3Nyw2ICsxMTc3LDEwIEBACiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQ
b3J0LmlkbCcsCiAgICAgICAgICAgICAnZG9tL01vdXNlRXZlbnQuaWRsJywKICAgICAgICAgICAg
ICdkb20vTXV0YXRpb25FdmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmlkbCcsCisgICAgICAg
ICAgICAnZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRh
dGlvblR5cGVzLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9Ob2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVGaWx0ZXIuaWRs
JywKQEAgLTIwNzUsNiArMjA3OSw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhJc29s
YXRlZENvbnRleHQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0
ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIu
aCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcCcs
CkBAIC01MzE5LDYgKzUzMjYsMTYgQEAKICAgICAgICAgICAgICdkb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9NdXRhdGlvblJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNv
cmRMaXN0LmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkTGlzdC5oJywKKyAg
ICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0
YXRpb25UYXJnZXQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywK
KyAgICAgICAgICAgICdkb20vTXV0YXRpb25UeXBlcy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9N
dXRhdGlvblR5cGVzLmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuY3BwJywKICAg
ICAgICAgICAgICdkb20vTmFtZU5vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5v
ZGVNYXAuY3BwJywKQEAgLTUzNjAsNiArNTM3Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1Jhbmdl
RXhjZXB0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcs
CiAgICAgICAgICAgICAnZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAg
ICAgICAnZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2Rv
bS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU2Nv
cGVkRXZlbnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDBiYTg0NjQ2M2U1MjdkZTZmZGEzMGFiNzk5NjhlNmVhYjRjOWEyYmQuLjNkNzhjNGFk
YTVlZTljOTI1ZjBmMGFhODg2OWI3Mjc2YWM5ZWQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MTAsOSArNTQxMCwyMyBA
QAogCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2
MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXIuY3BwICovOyB9OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
aCAqLzsgfTsKKwkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURB
MzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OworCQlDNjcx
REEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5
IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLzsgfTsKKwkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5
IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTNBMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9u
UmVjb3JkTGlzdC5jcHAgKi87IH07CisJCUM2NzFEQTQxMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011
dGF0aW9uUmVjb3JkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzY3MURBM0IxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0
LmggKi87IH07CisJCUM2NzFEQTQyMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURB
M0MxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5jcHAgKi87IH07CisJCUM2NzFE
QTQzMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTNEMTNFMzcxNDkwMDU1OEFFOSAv
KiBKU011dGF0aW9uVHlwZXMuaCAqLzsgfTsKKwkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8q
IE11dGF0aW9uVGFyZ2V0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0
YS5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgg
Ki87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0
TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAg
Ki87IH07CiAJCUM2RjQxMDQ3MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNDEwNDYxMzBDNkU4
OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAgKi87IH07CisJCUM2RjY3MTRFMTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNv
cmQuY3BwICovOyB9OworCQlDNkY2NzE1MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNv
cmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2RjY3MTQzMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuY3BwICovOyB9
OworCQlDNkY2NzE1NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDYxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLzsgfTsKKwkJQzZGNjcxNTUxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDNkY2NzE1NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UeXBlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0ODEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25UeXBlcy5jcHAgKi87IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERF
M0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5jcHAgKi87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011
dGF0aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LzsgfTsKIAkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmggKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjEzNyw5ICsxMjE1MSwzMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNB
OTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdseXBoTWV0cmljc01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3
NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8q
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRh
dGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzQTEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZExpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlv
blJlY29yZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlv
blJlY29yZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBM0MxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDNjcxREEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25UeXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0
YXRpb25UYXJnZXREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0
aW9uVGFyZ2V0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5
QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVh
cGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0Ux
M0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJl
Y29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJl
Y29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQxMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNdXRhdGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNDMxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZExpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NDEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25SZWNvcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE11dGF0aW9uUmVjb3JkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmRMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBNdXRhdGlvblJlY29yZExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0
YXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDgxM0Uz
NUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTXV0YXRpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUM2RjY3MTQ5MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNEExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlw
ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMg
LyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNC
RjY3QjEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8q
IGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTU5LDYgKzEzMTk2LDcgQEAKIAkJ
CQk4OTg3ODU3NjEyMkNBMURBMDAzQUFCREEgLyogRmlsZUFQSSAqLywKIAkJCQlBODNCNzkwODBD
Q0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzgg
LyogSW5zcGVjdG9yICovLAorCQkJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlv
biAqLywKIAkJCQkzMzUwM0M5QzEwMTc5QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLywK
IAkJCQkxQUMyMjYwMjBEQjY5RUE3MDA4OUI2NjkgLyogT2ZmbGluZSAqLywKIAkJCQlBOUQyNDdG
OTBENzU3RTQxMDBGREY5NTkgLyogUGx1Z2lucyAqLywKQEAgLTE1NDA1LDYgKzE1NDQzLDcgQEAK
IAkJCQk4NUFGQTdBQjBBQUYzQkIwMDBFODQzMDUgLyogRXZlbnRzICovLAogCQkJCTg1QzU2RDAz
MEFBOEJBQTcwMEQ5NTc1NSAvKiBIVE1MICovLAogCQkJCTg1RTcxMTNEMEFDNUQ0QTEwMDUzMjcw
RiAvKiBJbnRlcm5hbCAqLywKKwkJCQlDNjcxREE1RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRp
b24gKi8sCiAJCQkJODUzOEYwNTcwQUQ3MjJCOTAwNkE4MUQxIC8qIFJhbmdlcyAqLywKIAkJCQk4
NTA2NTcwNDBBQUI0NzZDMDAyRDE1QzAgLyogU3R5bGVTaGVldHMgKi8sCiAJCQkJODVBMEY5OEUw
QUM3MTZGNDAwMTYxRkRDIC8qIFNWRyAqLywKQEAgLTE4NTEzLDYgKzE4NTUyLDggQEAKIAkJCQkz
MzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5
MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJ
CQkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICov
LAorCQkJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3Bw
ICovLAorCQkJCUM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIu
aCAqLywKIAkJCQk5M0I3MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcCAqLywKIAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmggKi8sCiAJCQkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpT
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLywKQEAgLTE5MTY4LDYgKzE5MjA5LDI2IEBACiAJCQl0
YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUM2NzFEQTQ0MTNFMzcxNjgw
MDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQzY3MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
Y3BwICovLAorCQkJCUM2NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3Jk
LmggKi8sCisJCQkJQzY3MURBM0ExM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRM
aXN0LmNwcCAqLywKKwkJCQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJl
Y29yZExpc3QuaCAqLywKKwkJCQlDNjcxREEzQzEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlv
blR5cGVzLmNwcCAqLywKKwkJCQlDNjcxREEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlv
blR5cGVzLmggKi8sCisJCQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzY3MURBNUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9u
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQlu
YW1lID0gTXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFMUM4
QkU0QjBFOEJEMEQxMDA2NENCN0QgLyogVGhyZWFkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTkxNCw2ICsxOTk3NSwyMCBAQAogCQkJCTg1MDMxQjMz
MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzNDBB
NDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5oICovLAogCQkJCTkzRUVDMUYzMDlDMjg3
NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQlDNkY2NzEzRTEzRTM1RTVF
MDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTNGMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmlkbCAqLywKKwkJCQlDNkY2NzE0MDEzRTM1RTVF
MDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2RjY3MTQxMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovLAorCQkJCUM2RjY3MTQyMTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwgKi8sCisJCQkJQzZGNjcxNDMxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uUmVjb3JkTGlzdC5jcHAgKi8sCisJCQkJQzZGNjcxNDQxM0UzNUU1RTAw
REUzQjlDIC8qIE11dGF0aW9uUmVjb3JkTGlzdC5oICovLAorCQkJCUM2RjY3MTQ1MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuaWRsICovLAorCQkJCUM2RjY3MTQ2MTNFMzVF
NUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZGNjcxNDcxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEyRDIxM0YzNEM0QTAw
OTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovLAorCQkJCUM2RjY3MTQ4MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmNwcCAqLywKKwkJCQlDNkY2NzE0OTEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25UeXBlcy5oICovLAorCQkJCUM2RjY3MTRBMTNFMzVFNUUwMERFM0I5
QyAvKiBNdXRhdGlvblR5cGVzLmlkbCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQg
LyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyog
TmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVk
Tm9kZU1hcC5pZGwgKi8sCkBAIC0xOTk3OCw2ICsyMDA1Myw3IEBACiAJCQkJQTg0RDgyN0IxMUQz
MzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1
MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJ
ODUwMzFCMzYwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8s
CisJCQkJQzZGNjcxNEIxM0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1l
bnRNYXJrZXIuaCAqLywKIAkJCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZl
bnRRdWV1ZS5jcHAgKi8sCiAJCQkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2
ZW50UXVldWUuaCAqLywKQEAgLTIyMDMyLDYgKzIyMTA4LDEwIEBACiAJCQkJODk4Nzg1QjkxMjJD
QTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzFEQTQxMTNFMzcxNDkwMDU1
OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURB
NDMxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDg1LDggQEAKIAkJ
CQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlv
bkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyog
TXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEwMDk0
MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIz
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMjYxODEsNiArMjYyNjMsMTQgQEAKIAkJCQk5NzdFMkUwRTEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1
MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlE
RTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUM2RjY3MTUxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29y
ZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1RTAwREUzQjlDIC8q
IE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU2MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTVD
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25S
ZWNvcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2NzFEQTQyMTNFMzcxNDkwMDU1OEFF
OSAvKiBKU011dGF0aW9uVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTY2
ZjA3OTJkNmVmMDIxY2UzYjU0ZjcxNTI3ZjQ5ODllMGMwYWY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCww
ICsxLDEzMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0
YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5j
bHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRp
b25MaXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFw
cGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCisgICAgOiBtX3dyYXBwZXIoKmlzb2xhdGVkV29ybGQt
Pmdsb2JhbERhdGEoKSwgd3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQoreworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0TWF5QmVO
dWxsKCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOwor
ICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7CisKK30KKworSlNNdXRhdGlvbkxp
c3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKCkKK3sKK30KKwordm9pZCBKU011dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE11dGF0aW9uUmVjb3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
fHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKKworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gbV9qc0Z1bmN0aW9uLmdldCgpOworCisg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBpZiAo
IWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNET01XaW5kb3cqIHdpbmRv
dyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICBGcmFtZSog
ZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm47CisgICAgLy8gVGhlIHdpbmRvdyBtdXN0IHN0aWxsIGJlIGFjdGl2ZSBpbiBpdHMg
ZnJhbWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTIx
Pi4KKyAgICAvLyBGSVhNRTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBjaGFuZ2Ug
RE9NV2luZG93OjpmcmFtZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNoZWQgd2lu
ZG93IHVzZWQgdG8gYmUgaW4uCisgICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAhPSB3aW5kb3ct
PmltcGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNoZWNrIG5l
ZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/CisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0g
ZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91
dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAg
ICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
KyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24s
IGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAg
IGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBKU1ZhbHVlKCk7CisgICAgICAgIGNhbGxUeXBlID0ganNG
dW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIH0KKworICAgIGlmIChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBy
b3RlY3QodGhpcyk7CisKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAg
ICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucykpOworCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpOworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5k
eW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRh
LnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9u
KQorICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2
ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQg
dGhlIHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1l
bnQgb3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+aXRlbSgwKS0+dGFyZ2V0KCkpOworICAg
ICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAg
ICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVj
KTsKKyAgICB9Cit9CisKK2Jvb2wgSlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0
IE11dGF0aW9uTGlzdGVuZXImIGxpc3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0
ZW5lcioganNNdXRhdGlvbkxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxp
c3RlbmVyKj4oJmxpc3RlbmVyKTsKKyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRp
b25MaXN0ZW5lci0+bV9qc0Z1bmN0aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVu
ZXI6Omhhc2goKQoreworICAgIHJldHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhh
c2g6Omhhc2gobV9qc0Z1bmN0aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZDVmZGEyZDY0MGUyOWEzNTAxYTU4N2QyMzQ1ZjAwNjVlZDM5NDE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3Rl
bmVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2lmbmRlZiBKU011dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9u
TGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhl
YXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50
aW1lL1dyaXRlQmFycmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdy
YXBwZXJXb3JsZDsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9u
TGlzdGVuZXIgOiBwdWJsaWMgTXV0YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SlNNdXRhdGlvbkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlz
dGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3Rl
bmVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+SlNNdXRhdGlvbkxpc3RlbmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBo
YXNoKCk7CisKKyAgICBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJl
dHVybiBtX2lzb2xhdGVkV29ybGQuZ2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBw
ZXIoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIp
IGNvbnN0IHsgbV93cmFwcGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNdXRhdGlvblJlY29yZExpc3QqKTsKKworcHJpdmF0ZToKKyAgICBKU011dGF0aW9uTGlz
dGVuZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERP
TVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisKKyAgICBtdXRhYmxlIEpTQzo6V3JpdGVC
YXJyaWVyPEpTQzo6SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICBtdXRhYmxlIEpTQzo6V2Vh
azxKU0M6OkpTT2JqZWN0PiBtX3dyYXBwZXI7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiBtX2lzb2xhdGVkV29ybGQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBKU011dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKaW5kZXggNTFlM2JiODZhYWVlMzJiNWYyMTY1OWJlMTM3YzgyYTQ0MzJm
ZGYxMS4uY2E4NmRkMmVhYmUzNjc5ZmM1OGY2YjE5OWIyYzU0Y2M1M2UwZjcwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC01OCw5ICs1OCwxMSBA
QAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJK
U011dGF0aW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKU1RleHQuaCIKKyNpbmNsdWRl
ICJNdXRhdGlvblR5cGVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vdGF0aW9u
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC0yMDUsNiArMjA3LDQz
IEBAIHZvaWQgSlNOb2RlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KG5vZGUpKTsKIH0KIAorSlNWYWx1ZSBKU05vZGU6
OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNWYWx1ZSBqc1R5
cGVzID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFqc1R5cGVzLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmpl
Y3QgPSBhc09iamVjdChqc1R5cGVzKTsKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXMg
PSBNdXRhdGlvblR5cGVzOjpjcmVhdGUoKTsKKyAgICBKU1ZhbHVlIGpzQ2hpbGRsaXN0ID0ganNU
eXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNoaWxkbGlzdCIpKTsKKyAg
ICBpZiAoanNDaGlsZGxpc3QuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRDaGlsZGxp
c3QoanNDaGlsZGxpc3QuZ2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0g
anNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsK
KyAgICBpZiAoanNBdHRyaWJ1dGUuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRBdHRy
aWJ1dGUoanNBdHRyaWJ1dGUuZ2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQ2hhcmFjdGVy
ZGF0YSA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGFyYWN0
ZXJkYXRhIikpOworICAgIGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkpCisgICAgICAg
IHR5cGVzLT5zZXRDaGFyYWN0ZXJkYXRhKGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpOwor
CisgICAgaW1wbCgpLT5hZGRNdXRhdGlvbkxpc3RlbmVyKEpTTXV0YXRpb25MaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgY3VycmVudFdvcmxkKGV4ZWMpKSwgdHlwZXMp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTTm9kZTo6d2Via2l0
UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBs
aXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpbXBsKCktPnJlbW92ZU11
dGF0aW9uTGlzdGVuZXIoSlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVu
ZXIpLCB0aGlzLCBjdXJyZW50V29ybGQoZXhlYykpLmdldCgpKTsKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKworCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBw
ZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDZjMGZlMGUwNDRk
NGVlNGRhOWU4ZTY0YTExZmIwOTRiZTUzMjUyMi4uNzkwM2VlZmQxZTIxMWJkZDNmN2RjMTJkOGJh
ZTJiYTFmMmIxMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ3OSw2ICs0NzksMTAgQEAgc3ViIEdldEludGVybmFs
RmllbGRzCiAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZXZlbnRMaXN0ZW5l
ckNhY2hlSW5kZXgiKTsKICAgICB9CiAKKyAgICBpZiAoSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUp
KSB7CisgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAibXV0YXRpb25MaXN0ZW5l
ckNhY2hlSW5kZXgiKTsKKyAgICB9CisKICAgICBpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsK
ICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3Js
ZEluZGV4Iik7CiAgICAgfQpAQCAtMzI1NSw2ICszMjU5LDExIEBAIHN1YiBOYXRpdmVUb0pTVmFs
dWUKICAgICAgICAgcmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0
aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcio+KCR7dmFsdWV9KS0+Z2V0TGlzdGVuZXJP
YmplY3QoaW1wLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSA6IHY4OjpIYW5kbGU8djg6OlZh
bHVlPih2ODo6TnVsbCgpKSI7CiAgICAgfQogCisgICAgaWYgKCR0eXBlIGVxICJNdXRhdGlvbkxp
c3RlbmVyIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOE11dGF0aW9uTGlzdGVuZXIuaCJ9
ID0gMTsKKyAgICAgICAgcmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihz
dGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2Jq
ZWN0KCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIjsKKyAgICB9CisKICAg
ICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgJGltcGxJ
bmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuICIkdmFsdWUtPmRlc2VyaWFs
aXplKCkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5k
ZXggMDg2YTNhMjE5NjFkYzI4MDlhMjA3Y2ZiYWU3ZjUyZDA3ZTNkZjgxYy4uODYwZjAxM2M3MDU1
NzY4Y2NiMWUxNzJkZGVkYzRjYWJlNmVkZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSAiVjhMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIlY4TWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VD
aGFubmVsLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2RlTWFwLmgiCiAj
aW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCkBA
IC00ODEsNiArNDgzLDE5IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gVjhET01XcmFwcGVy
OjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhCiAjZW5kaWYKIH0KIAor
UGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlz
dGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29r
dXApCit7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0
OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBpZiAobG9va3VwID09IExpc3RlbmVyRmluZE9ubHkpCisgICAgICAgIHJldHVy
biBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcih2YWx1ZSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGNvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CisgICAgaWYgKGds
b2JhbE9iamVjdFByb3RvdHlwZUlzRE9NV2luZG93KGdsb2JhbFByb3RvdHlwZSkpCisgICAgICAg
IHJldHVybiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHZh
bHVlKTsKKyAgICByZXR1cm4gMDsKK30KKwogI2lmIEVOQUJMRShYUEFUSCkKIC8vIFhQYXRoLXJl
bGF0ZWQgdXRpbGl0aWVzCiBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBWOERPTVdyYXBwZXI6Omdl
dFhQYXRoTlNSZXNvbHZlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFY4UHJveHkqIHBy
b3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBlYjIy
MDUxNzJiM2M5NGIwOGFlNjdmNTU0YjIwYWVlMjg4MTQ5ZjkwLi5lMGRjMTI1YjhhMjk5NGVlZmRi
Y2I1Y2Y0ZGQ4NjA3MmYxZWE1NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaApAQCAtODksNiArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVj
dChFdmVudFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGdldEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNB
dHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2
ODo6VmFsdWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAg
ICAgICAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkz
MzI2N2I5MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4
OWU4ZDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblBy
b3BlcnR5TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBW
KG9iamVjdFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxp
c3RlbmVyKSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkg
XAogICAgIFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTZkY2M3NjMzZjUxOTZhZjExOTg2ZDhmZWUwNTZmMDA1NzAyNTE3MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25M
aXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0
ZW5lck1hbmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1
ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Y4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVyKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3
b3JsZENvbnRleHQpCisgICAgOiBtX2xpc3RlbmVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
OjpOZXcobGlzdGVuZXIpKQorICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQorewor
ICAgIG1fbGlzdGVuZXIuTWFrZVdlYWsodGhpcywgJndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJh
Y2spOworfQorCitWOE11dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIoKQorewor
ICAgIGlmICghbV9saXN0ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3Bl
IHNjb3BlOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0
ZW5lck9iamVjdCgpOworICAgICAgICBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldy
YXBwZXIobGlzdGVuZXIpOworICAgIH0KKyAgICBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30K
Kwordm9pZCBWOE11dGF0aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIFY4TXV0
YXRpb25MaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIq
PihwYXJhbWV0ZXIpOworICAgIGxpc3RlbmVyLT5kaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30K
Kwordm9pZCBWOE11dGF0aW9uTGlzdGVuZXI6OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpCit7Cisg
ICAgaWYgKCFtX2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICBtX2xpc3RlbmVyLkRpc3Bv
c2UoKTsKKyAgICAgICAgbV9saXN0ZW5lci5DbGVhcigpOworICAgIH0KK30KKwordm9pZCBWOE11
dGF0aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIE11dGF0aW9uUmVjb3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIC8vIERvbid0IHJlZW50
ZXIgVjggaWYgZXhlY3V0aW9uIHdhcyB0ZXJtaW5hdGVkIGluIHRoaXMgaW5zdGFuY2Ugb2YgVjgu
CisgICAgaWYgKGNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKG11dGF0aW9ucyk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CisKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhD
b250ZXh0KGNvbnRleHQsIG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4
Q29udGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzTXV0YXRpb25zID0gdG9WOCht
dXRhdGlvbnMpOworICAgIEFTU0VSVCghanNNdXRhdGlvbnMuSXNFbXB0eSgpKTsKKyAgICBpZiAo
anNNdXRhdGlvbnMuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOwor
ICAgIGJvb2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2so
bGlzdGVuZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vu
c2lnbmVkIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRI
YXNoPFY4TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRp
b25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMzRiNTE0ZDc3ZTM5ZDQ3ODdiZDQ0MmNmMTdiZjky
OTI5OGRjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlz
dGVuZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVk
ZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3Rl
bmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlz
dGVuZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdv
cmxkQ29udGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
TXV0YXRpb25SZWNvcmRMaXN0Kik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisgICAg
dmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0
TGlzdGVuZXJPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0Pjo6TmV3KG1fbGlzdGVuZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOE11dGF0aW9u
TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRl
eHRIYW5kbGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bvc2VMaXN0
ZW5lck9iamVjdCgpOworCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9saXN0ZW5l
cjsKKyAgICBXb3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhMWJiNTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMyMjcxNDk4OTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9u
TGlzdGVuZXJNYW5hZ2VyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlcl9oCisjZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorCisjaW5j
bHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVu
ZXIuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZvciBWOE11dGF0
aW9uTGlzdGVuZXIgb2JqZWN0cyB0aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMgb2Ygdjg6Ok9i
amVjdCB0byBzcGVlZCB1cCBsb29rdXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmlu
ZFdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+SXNPYmpl
Y3QoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBkb0ZpbmRXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdyYXBwZXIodjg6
OkxvY2FsPHY4OjpWYWx1ZT4pOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFwcGVyKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gbGlzdGVuZXJPYmplY3QpCisgICAgeworICAgICAgICBsaXN0ZW5l
ck9iamVjdC0+RGVsZXRlSGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9u
TGlzdGVuZXIoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBNdXRhdGlvbkxpc3Rl
bmVyKiBkb0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgewor
ICAgICAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciA9
IG9iamVjdC0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlz
dGVuZXIoKSk7CisgICAgICAgIGlmIChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlzdGVuZXIqPih2
ODo6RXh0ZXJuYWw6OlVud3JhcChsaXN0ZW5lcikpOworICAgIH0KK307CisKK2lubGluZSBQYXNz
UmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRP
ckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJU
KHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0g
djg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0aW9uTGlzdGVu
ZXIqIHdyYXBwZXIgPSBkb0ZpbmRXcmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdyYXBwZXIpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHdy
YXBwZXJQdHIgPSBWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdvcmxkQ29udGV4
dEhhbmRsZShVc2VDdXJyZW50V29ybGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikKKyAgICAgICAg
b2JqZWN0LT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25MaXN0
ZW5lcigpLCB2ODo6RXh0ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOworCisgICAgcmV0
dXJuIHdyYXBwZXJQdHIucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMxYTNmYjg3NDIy
MDAxMDdiMGUyNDRiOGU1Li44NmU0YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMyOGIzNTIyNDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC02Niw2
ICs2Niw3IEBAIFY4TG9jYWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8gQSB2YWx1ZSBj
YW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0
ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NFUlQob2JqZWN0
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGNhY2hlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwogICAg
IGlmIChjYWNoZS0+SXNOdWxsKCkgfHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAg
Y2FjaGUgPSB2ODo6QXJyYXk6Ok5ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggMTFmMzA5
YjY5OTRhMTA4OTAwMmExMTJiNWZmMDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRlYmM3MmRkZTE1
ZGE2MWVhMzRkNDgxMDJjMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02MywxNCArNjMs
MTQgQEAgdm9pZCBWOEN1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgIGludm9r
ZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5nZXQoKSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0
aW9uQ2F0Y2hlcjsKICAgICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIGlmIChjYWxs
YmFjay0+SXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3Qo
Y2FsbGJhY2spKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+OjpOZXcodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CiAg
ICAgfSBlbHNlIGlmIChjYWxsYmFjay0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6TG9jYWw8
djg6OlZhbHVlPiBoYW5kbGVFdmVudEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImhhbmRsZUV2ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5j
dGlvbi0+SXNGdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgyMWM2NTM1NzU3
YzM0ZDVhMmNjM2MxMDE1NWM4NTk1NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkxNmQ1MGZjNGQ5
ZWQyYTAyYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21Wb2lkQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgog
fTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5
cGUsIG9yIHRocmV3IGV4Y2VwdGlvbikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Citib29sIGludm9rZUNhbGxiYWNrKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0
NmY4MGY2ODFhY2ZjNDk5NmY5MDRjNWQ3Li40Njg0NDc4OWI1ZjhiN2M5NGZkNzk4NjlhMjA3YzI4
ZjBmM2NiZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZ1N0
YXRlLmgiCiAjaW5jbHVkZSAiVjhDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJWOENvbW1lbnQu
aCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCiAj
aW5jbHVkZSAiVjhEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudFR5cGUu
aCIKQEAgLTQ4LDExICs0OSwxNCBAQAogI2luY2x1ZGUgIlY4RW50aXR5LmgiCiAjaW5jbHVkZSAi
VjhFbnRpdHlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uVHlwZXMuaCIK
ICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOE5vdGF0aW9uLmgiCiAjaW5jbHVkZSAi
VjhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVk
ZSAiVjhUZXh0LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtMTMxLDYgKzEzNSw0MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhO
b2RlOjphcHBlbmRDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
cmV0dXJuIHY4OjpOdWxsKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6Ondl
YmtpdEFkZE11dGF0aW9uTGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLk5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcigp
Iik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVy
OjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAg
ICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXM7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVs
bChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFd
KTsKKyAgICAgICAgdHlwZXMgPSBNdXRhdGlvblR5cGVzOjpjcmVhdGUoKTsKKyAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpO
ZXcoImNoaWxkbGlzdCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkpCisg
ICAgICAgICAgICB0eXBlcy0+c2V0Q2hpbGRsaXN0KHY4Q2hpbGRsaXN0LT5Cb29sZWFuVmFsdWUo
KSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1
dGUuSXNFbXB0eSgpKQorICAgICAgICAgICAgdHlwZXMtPnNldEF0dHJpYnV0ZSh2OEF0dHJpYnV0
ZS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJh
Y3RlcmRhdGEgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7
CisgICAgICAgIGlmICghdjhDaGFyYWN0ZXJkYXRhLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHR5
cGVzLT5zZXRDaGFyYWN0ZXJkYXRhKHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkpOwor
ICAgIH0KKyAgICBpZiAobGlzdGVuZXIgJiYgdHlwZXMpIHsKKyAgICAgICAgVjhOb2RlOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKS0+YWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgdHlwZXMp
OworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0s
IFY4Tm9kZTo6bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjp3ZWJr
aXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVu
ZXIoKSIpOworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3Jh
cHBlcjo6Z2V0TXV0YXRpb25MaXN0ZW5lcihhcmdzWzBdLCBMaXN0ZW5lckZpbmRPbmx5KTsKKyAg
ICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KS0+cmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lci5nZXQoKSk7CisgICAgICAgIHJlbW92
ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1swXSwgVjhOb2RlOjptdXRhdGlv
bkxpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZv
cmNlTmV3T2JqZWN0KQogewogICAgIGlmICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZlLi45
ZmM4NGU2OGRjM2FlYzlkOWEzNTg5YzgxZmExNDZiODk3Mzc4OTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
Ik11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9pZCBDaGFyYWN0
ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVy
RGF0YU1vZGlmaWVkKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisgICAgZGlzcGF0Y2hNdXRh
dGlvbihNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMpKTsKIH0KIAog
dm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uNjMwZDYxYmMwNWVh
NGY2N2IyZGNlMmIyMjg0OWQ5N2U0OTcxZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9u
RXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3gu
aCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIK
KyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTA5NSw2ICsxMDk3LDExIEBAIHN0YXRp
YyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVm
UHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hp
bGQtPmRvY3VtZW50KCk7CiAKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gaW5zZXJ0ZWROb2Rl
czsKKyAgICBpbnNlcnRlZE5vZGVzLmFwcGVuZChjKTsKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgp
KQorICAgICAgICBjLT5wYXJlbnROb2RlKCktPmRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoYy0+cGFyZW50Tm9kZSgpLCBTdGF0aWNOb2RlTGlz
dDo6YWRvcHQoaW5zZXJ0ZWROb2RlcyksIDAsIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIGlm
IChjLT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6
RE9NTk9ERUlOU0VSVEVEX0xJU1RFTkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVu
dChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50
LCB0cnVlLCBjLT5wYXJlbnROb2RlKCkpKTsKIApAQCAtMTExNiw2ICsxMTIzLDEyIEBAIHN0YXRp
YyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0
cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxk
LT5kb2N1bWVudCgpOwogCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsK
KyAgICByZW1vdmVkTm9kZXMuYXBwZW5kKGMpOworCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkK
KyAgICAgICAgYy0+cGFyZW50Tm9kZSgpLT5kaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3Jk
OjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMCwgU3RhdGljTm9kZUxp
c3Q6OmFkb3B0KHJlbW92ZWROb2RlcyksIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIC8vIGRp
c3BhdGNoIHByZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5wYXJlbnROb2Rl
KCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERVJFTU9WRURf
TElTVEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50
Tm9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVk
MTRmODcwNzI5NjViODRkZGNiYi4uYzk0M2JkZjY1Mjk4NDFiNWM1ODZjNjQxODAyYjJjNmVkYjQ1
NzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgog
I2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKQEAgLTY5OSw2ICs3MDAsOCBAQCB2b2lkIEVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgp
KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9j
dW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIGRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25S
ZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lLCAiIiwgIiIpKTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiAr
NzM1LDggQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3luY2hyb25pemlu
Z1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
TW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAgZGlzcGF0Y2hN
dXRhdGlvbihNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1l
LmxvY2FsTmFtZSgpLCAiIiwgIiIpKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1l
bnQ6OmNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTA2YzRjZjJkNDk2NTUxOGRkZThlOWJkMGNjNmFmMTFlNWNhMzdkMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIE11dGF0aW9uTGlzdGVu
ZXJfaAorCisjaW5jbHVkZSA8d3RmL1JlZmNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNdXRhdGlvblJlY29yZExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworCitjbGFzcyBNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRp
b25MaXN0ZW5lcj4geworcHVibGljOgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTXV0YXRpb25SZWNvcmRMaXN0KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNo
KCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkxpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzVjNjg5MWE0NzcwN2M4ODVhNjc1OTAwMzA5NTQxY2E4ZGZi
OWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVu
ZXIuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAg
ICAgICAgUHVyZUludGVyZmFjZSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBNdXRh
dGlvbkxpc3RlbmVyIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBNdXRhdGlvblJlY29y
ZExpc3QgbXV0YXRpb25zKTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29y
ZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWVlMzk2NjMxMTJjZjE3NjZhMGMzNjY0YWVkMTM1NzRlODM0MmEz
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5j
cHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorCisjaW5jbHVkZSAiTXV0YXRpb25UeXBlcy5oIgorI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworLy8gVE9ETyhh
ZGFtayk6IEZpZ3VyZSBvdXQgd2hldGhlciB3ZSB3YW50IHRvIHNoYXJlIGEgc2luZ2xlIGVtcHR5
IG5vZGUgbGlzdCwgb3IKKy8vIGRvIHNvbWV0aGluZyBlbHNlIHNtYXJ0LgorY2xhc3MgRW1wdHlO
b2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEVtcHR5Tm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCkgY29u
c3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbXB0eU5v
ZGVMaXN0KCkgeyB9Cit9OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0
aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0
LCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBpbnNlcnRlZCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVt
b3ZlZCwgUGFzc1JlZlB0cjxOb2RlPiBuZXh0Tm9kZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlw
ZXM6OmNoaWxkbGlzdE5hbWUoKSwgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1faW5zZXJ0ZWRO
b2RlcyA9IGluc2VydGVkOworICAgIGlmICghbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcykKKyAg
ICAgICAgbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgp
OworICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRh
dGlvbi0+bV9yZW1vdmVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9
IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX25leHROb2RlID0gbmV4
dE5vZGU7CisgICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxN
dXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0
IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIFJlZlB0
cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQo
TXV0YXRpb25UeXBlczo6YXR0cmlidXRlTmFtZSgpLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+
bV9hdHRyTmFtZSA9IGF0dHJOYW1lOworICAgIG11dGF0aW9uLT5tX3ByZXZWYWx1ZSA9IHByZXZW
YWx1ZTsKKyAgICBtdXRhdGlvbi0+bV9uZXdWYWx1ZSA9IG5ld1ZhbHVlOworICAgIHJldHVybiBt
dXRhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0
aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVz
OjpjaGFyYWN0ZXJkYXRhTmFtZSgpLCB0YXJnZXQpKTsKK30KKworTXV0YXRpb25SZWNvcmQ6Ok11
dGF0aW9uUmVjb3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30K
KworTXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCgpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29y
ZC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBi
ZTI5ZjM5ZmE2NmZmYWMwNGNlNGU0OWY5YWU0MTE1ZTY0ZjRlYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisjaW5jbHVk
ZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZmNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE11dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1JlZlB0cjxO
b2RlPiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGluc2VydGVkLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiByZW1vdmVkLCBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVm
UHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgU3Ry
aW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxO
b2RlPiB0YXJnZXQpOworCisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIE5vZGUqIHRh
cmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAn
Y2hpbGRsaXN0JworICAgIE5vZGVMaXN0KiBpbnNlcnRlZE5vZGVzKCkgeyByZXR1cm4gbV9pbnNl
cnRlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIHsgcmV0dXJu
IG1fcmVtb3ZlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZSogbmV4dE5vZGUoKSB7IHJldHVybiBt
X25leHROb2RlLmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUoKSB7IHJldHVybiBtX2F0dHJOYW1lOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUoKSB7IHJldHVybiBtX3ByZXZWYWx1ZTsgfQorICAg
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CisKK3ByaXZh
dGU6CisgICAgTXV0YXRpb25SZWNvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVm
UHRyPE5vZGU+IHRhcmdldCk7CisKKyAgICBBdG9taWNTdHJpbmcgbV90eXBlOworICAgIFJlZlB0
cjxOb2RlPiBtX3RhcmdldDsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1faW5zZXJ0ZWROb2RlczsK
KyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1fcmVtb3ZlZE5vZGVzOworICAgIFJlZlB0cjxOb2RlPiBt
X25leHROb2RlOworICAgIEF0b21pY1N0cmluZyBtX2F0dHJOYW1lOworICAgIFN0cmluZyBtX3By
ZXZWYWx1ZTsKKyAgICBTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25S
ZWNvcmQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZTdiY2NlZDYxZTBkYzk2YmJhMGM3NzZjZGE5YjkyNWI4Y2Q2YjczCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgdGFyZ2V0OworCisgICAgICAgIC8vIEZvciB0
eXBlID09ICdjaGlsZGxpc3QnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAg
ICAgICBpbnNlcnRlZE5vZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3Qg
ICAgICAgcmVtb3ZlZE5vZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAg
ICAgICAgbmV4dE5vZGU7CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0dHJOYW1lOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgcHJldlZhbHVlOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgbmV3VmFsdWU7CisgICAgfTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZTJm
MzBiMzAyYmQ2NGQxYTI0ZmNkYjAzOGQ4YzZkNmExODVhMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuY3BwCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisKKyNp
bmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZExpc3Q+IE11dGF0aW9u
UmVjb3JkTGlzdDo6Y3JlYXRlKFBhc3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IG11dGF0
aW9ucykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkTGlzdChtdXRh
dGlvbnMpKTsKK30KKworTXV0YXRpb25SZWNvcmRMaXN0OjpNdXRhdGlvblJlY29yZExpc3QoUGFz
c093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zKQoreworICAgIE93blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4gb3duZWRNdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgbV9t
dXRhdGlvbnMuc3dhcCgqb3duZWRNdXRhdGlvbnMpOworfQorCitNdXRhdGlvblJlY29yZExpc3Q6
On5NdXRhdGlvblJlY29yZExpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIE11dGF0aW9uUmVj
b3JkTGlzdDo6bGVuZ3RoKCkKK3sKKyAgICByZXR1cm4gbV9tdXRhdGlvbnMuc2l6ZSgpOworfQor
CitNdXRhdGlvblJlY29yZCogTXV0YXRpb25SZWNvcmRMaXN0OjppdGVtKHVuc2lnbmVkIGxvbmcg
aW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IG1fbXV0YXRpb25zLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9tdXRhdGlvbnNbaW5kZXhdLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25SZWNvcmRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTM1OWYyOWU2NDljNzJlZTcwYmZhZmE4YjEzMzYyMTQ1YmMyYmZmMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3Qu
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblJlY29yZExpc3RfaAorI2RlZmluZSBN
dXRhdGlvblJlY29yZExpc3RfaAorCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZjb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBN
dXRhdGlvblJlY29yZFZlY3RvcjsKKworY2xhc3MgTXV0YXRpb25SZWNvcmRMaXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8TXV0YXRpb25SZWNvcmRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TXV0YXRpb25SZWNvcmRMaXN0PiBjcmVhdGUoUGFzc093blB0cjxNdXRhdGlvblJl
Y29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgfk11dGF0aW9uUmVjb3JkTGlzdCgpOworCisgICAg
dW5zaWduZWQgbG9uZyBsZW5ndGgoKTsKKyAgICBNdXRhdGlvblJlY29yZCogaXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNdXRhdGlvblJlY29yZExp
c3QoUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCisgICAgTXV0YXRpb25SZWNv
cmRWZWN0b3IgbV9tdXRhdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0LmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZGRmMzAxOTNhZmIwZmQ0ZmQ1MzU0M2U5MWFkYjhkMjNkYmQ5ZmRmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNJbmRleEdl
dHRlciwKKyAgICBdIE11dGF0aW9uUmVjb3JkTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgTXV0YXRpb25SZWNvcmQgaXRlbShp
biBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25UYXJnZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNjdhMDdjY2QxY2MwZmM3ZDBkN2E3
MzBlNzk4ZDMyMzcwOWEzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25UYXJnZXQuY3BwCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgor
I2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0
RGF0YS5oIgorI2luY2x1ZGUgIk11dGF0aW9uVHlwZXMuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitz
dHJ1Y3QgTXV0YXRpb25Db250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxE
b2N1bWVudD4gZCwgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRv
Y3VtZW50KGQpCisgICAgICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlz
dGVuZXI7Cit9OworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAg
ICByZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0
ckhhc2g8RG9jdW1lbnQqPjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXkt
Pmxpc3RlbmVyLT5oYXNoKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IE11dGF0aW9uQ29udGV4dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGEtPmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9
PSAqYi0+bGlzdGVuZXI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRh
dGlvbkNvbnRleHQqLCBNdXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhh
c2g+IENvbnRleHRWZWN0b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0
VmVjdG9yTWFwJiBjb250ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENvbnRleHRWZWN0b3JNYXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERl
cXVlPE93blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4g
PiwgYWN0aXZlQ29udGV4dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisK
K3ZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25D
b250ZXh0cygpLmlzRW1wdHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBj
b250ZXh0ID0gYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBP
d25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFw
KCkudGFrZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5k
bGVFdmVudChjb250ZXh0LT5kb2N1bWVudC5nZXQoKSwgTXV0YXRpb25SZWNvcmRMaXN0OjpjcmVh
dGUodi5yZWxlYXNlKCkpLmdldCgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGVuc3VyZU11
dGF0aW9uUXVldWVkKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIFBh
c3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0aW9uKQoreworICAgIFJlZlB0cjxNdXRh
dGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlvbjsKKyAgICBBU1NFUlQobXV0YXRpb24t
PnRhcmdldCgpKTsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpKTsK
KyAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IE11dGF0
aW9uQ29udGV4dChtdXRhdGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50KCksIHBycExpc3RlbmVyKSk7
CisKKyAgICBwYWlyPENvbnRleHRWZWN0b3JNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBj
b250ZXh0VmVjdG9yTWFwKCkuYWRkKGNvbnRleHQuZ2V0KCksIDApOworICAgIGlmIChyZXN1bHQu
c2Vjb25kKSB7CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IE11dGF0aW9uUmVj
b3JkVmVjdG9yOworICAgICAgICBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkuYXBwZW5kKGNvbnRl
eHQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgTXV0YXRpb25SZWNvcmRWZWN0b3IqIHYgPSByZXN1
bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAodi0+aXNFbXB0eSgpIHx8IHYtPmxhc3QoKSAhPSBt
dXRhdGlvbikKKyAgICAgICAgdi0+YXBwZW5kKG11dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJn
ZXQ6On5NdXRhdGlvblRhcmdldCgpCit7Cit9CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OmFkZE11
dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwg
UGFzc1JlZlB0cjxNdXRhdGlvblR5cGVzPiBwcnBUeXBlcykKK3sKKyAgICBSZWZQdHI8TXV0YXRp
b25UeXBlcz4gdHlwZXMgPSBwcnBUeXBlczsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ciByZWdpc3RlcmVkTGlzdGVuZXIocHJwTGlzdGVuZXIsICp0eXBlcyk7CisgICAgTXV0YXRpb25U
YXJnZXREYXRhKiBkID0gZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgc2l6ZV90IGlu
ZGV4ID0gZC0+bGlzdGVuZXJzLmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCisgICAgICAgIGQtPmxpc3RlbmVycy5hcHBlbmQocmVnaXN0ZXJlZExp
c3RlbmVyKTsKKyAgICBlbHNlCisgICAgICAgIGQtPmxpc3RlbmVyc1tpbmRleF0ubWVyZ2VUeXBl
cygqdHlwZXMpOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3Rl
bmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0
YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7
CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0
YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNT
RVJUKHBycE11dGF0aW9uKTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJw
TXV0YXRpb247CisgICAgdWludDhfdCBtYXNrID0gMDsKKyAgICBpZiAobXV0YXRpb24tPnR5cGUo
KSA9PSBNdXRhdGlvblR5cGVzOjpjaGlsZGxpc3ROYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRh
dGlvblR5cGVzOjpDaGlsZGxpc3Q7CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBN
dXRhdGlvblR5cGVzOjphdHRyaWJ1dGVOYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRhdGlvblR5
cGVzOjpBdHRyaWJ1dGU7CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlv
blR5cGVzOjpjaGFyYWN0ZXJkYXRhTmFtZSgpKQorICAgICAgICBtYXNrID0gTXV0YXRpb25UeXBl
czo6Q2hhcmFjdGVyZGF0YTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+bGlzdGVu
ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5lcnNbaV0udHlwZXMgJiBt
YXNrKQorICAgICAgICAgICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJzW2ldLmxp
c3RlbmVyLCBtdXRhdGlvbik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzIzZTNiMDVkZDJjNTc1
NWU3OWVkNDMyYWUzMDZjOWU3MDkxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25UYXJnZXQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRh
cmdldF9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0ZW5lcjsK
K2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworY2xhc3Mg
TXV0YXRpb25UeXBlczsKKworY2xhc3MgTXV0YXRpb25UYXJnZXQgeworcHVibGljOgorICAgIHZv
aWQgYWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+LCBQYXNz
UmVmUHRyPE11dGF0aW9uVHlwZXM+KTsKKyAgICB2b2lkIHJlbW92ZU11dGF0aW9uTGlzdGVuZXIo
TXV0YXRpb25MaXN0ZW5lciopOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTXV0YXRpb24o
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgfk11dGF0aW9uVGFyZ2V0KCk7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVm
UHRyPE11dGF0aW9uUmVjb3JkPik7CisKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSog
bXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRh
KiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRhdGlv
blF1ZXVlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9u
VGFyZ2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGJlMTBjMzBkMmUwYTNiOTQ0OTAwZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0
RGF0YV9oCisKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyPiBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0YSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEoKSB7
IH0KKyAgICB+TXV0YXRpb25UYXJnZXREYXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3RlbmVy
VmVjdG9yIGxpc3RlbmVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIE11dGF0aW9uVGFyZ2V0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25UeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmNhZjUxNTdmMmUxZGFhZTY4MzIyZTMyMzE2M2FhZjczNDAyOTY2YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmNwcApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVHlwZXMu
aCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0
YXRpb25UeXBlczo6Y2hpbGRsaXN0TmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgiY2hpbGRsaXN0IikpOworICAgIHJldHVybiBuYW1lOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE11dGF0aW9uVHlwZXM6OmF0dHJpYnV0ZU5hbWUoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImF0dHJpYnV0ZSIp
KTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvblR5
cGVzOjpjaGFyYWN0ZXJkYXRhTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG5hbWUsICgiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30K
KworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUzNjIzZGRjYTNmZmJhMWZiOTk3ZWVkZGZlYzJmMGM1Nzg5ZTUxN2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE11dGF0aW9uVHlwZXNfaAorI2RlZmluZSBNdXRhdGlvblR5cGVzX2gKKworI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11
dGF0aW9uVHlwZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblR5cGVzPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25UeXBlcz4gY3JlYXRlKGJvb2wgY2hpbGRs
aXN0ID0gZmFsc2UsIGJvb2wgYXR0cmlidXRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyZGF0YSA9
IGZhbHNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblR5cGVz
KGNoaWxkbGlzdCwgYXR0cmlidXRlLCBjaGFyYWN0ZXJkYXRhKSk7CisgICAgfQorCisgICAgZW51
bSBNdXRhdGlvblR5cGVGbGFncyB7CisgICAgICAgIENoaWxkbGlzdCA9ICgxIDw8IDApLAorICAg
ICAgICBBdHRyaWJ1dGUgPSAoMSA8PCAxKSwKKyAgICAgICAgQ2hhcmFjdGVyZGF0YSA9ICgxIDw8
IDIpCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNoaWxkbGlzdE5h
bWUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKCk7Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2hhcmFjdGVyZGF0YU5hbWUoKTsKKworICAg
IGJvb2wgY2hpbGRsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZGxpc3Q7IH0KKyAgICB2b2lk
IHNldENoaWxkbGlzdChib29sIGNoaWxkbGlzdCkgeyBtX2NoaWxkbGlzdCA9IGNoaWxkbGlzdDsg
fQorICAgIGJvb2wgYXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGU7IH0KKyAg
ICB2b2lkIHNldEF0dHJpYnV0ZShib29sIGF0dHJpYnV0ZSkgeyBtX2F0dHJpYnV0ZSA9IGF0dHJp
YnV0ZTsgfQorICAgIGJvb2wgY2hhcmFjdGVyZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFj
dGVyZGF0YTsgfQorICAgIHZvaWQgc2V0Q2hhcmFjdGVyZGF0YShib29sIGNoYXJhY3RlcmRhdGEp
IHsgbV9jaGFyYWN0ZXJkYXRhID0gY2hhcmFjdGVyZGF0YTsgfQorCitwcml2YXRlOgorICAgIE11
dGF0aW9uVHlwZXMoYm9vbCBjaGlsZGxpc3QsIGJvb2wgYXR0cmlidXRlLCBib29sIGNoYXJhY3Rl
cmRhdGEpCisgICAgICAgIDogbV9jaGlsZGxpc3QoY2hpbGRsaXN0KQorICAgICAgICAsIG1fYXR0
cmlidXRlKGF0dHJpYnV0ZSkKKyAgICAgICAgLCBtX2NoYXJhY3RlcmRhdGEoY2hhcmFjdGVyZGF0
YSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2NoaWxkbGlzdDsKKyAgICBib29sIG1fYXR0
cmlidXRlOworICAgIGJvb2wgbV9jaGFyYWN0ZXJkYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UK
KworI2VuZGlmIC8vIE11dGF0aW9uVHlwZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uVHlwZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlwZXMu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk3ZDBiMzMyNGVhN2NjZWY3ZTUyMzEzNTg1YTEyYTAyNWI3YWY3YTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5pZGwK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgTXV0YXRpb25UeXBl
cyB7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGNoaWxkbGlzdDsKKyAgICAgICAgYXR0cmli
dXRlIGJvb2xlYW4gYXR0cmlidXRlOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjaGFyYWN0
ZXJkYXRhOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMjdhMmRiZjZlMjljZWQ3NTIy
YjkwOThmMGRiYWNiNDA1Yjc5NzI4OS4uNjYzN2YzNzQwZGEzN2I1NjFmNDc5MjUxYmY4NmVlMzlj
NDU5ZDk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVu
dC5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgi
CkBAIC0yODYxLDYgKzI4NjIsMjMgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6ZGlzcGF0Y2hNdXRhdGlvbihQYXNz
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChOb2RlKiBuID0gdGhp
czsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkKKyAgICAgICAgbi0+ZW5xdWV1ZU11dGF0aW9uKG11
dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXREYXRhKiBOb2RlOjptdXRhdGlvblRhcmdldERh
dGEoKQoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRpb25U
YXJnZXREYXRhKCkgOiAwOworfQorCitNdXRhdGlvblRhcmdldERhdGEqIE5vZGU6OmVuc3VyZU11
dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNp
Zm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxYTk5MmU1NDZiMTE2OGM4MzdlYzc5MTE1NmQx
ODdmZjE5YWQ2MmQ3Li5kNzkzODM2YjdmYzY1ZGVmOTUzMTk1ZTFlNDE3MTg3NmY0ZDRhODEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCiAjaW5jbHVkZSAiVHJlZVNoYXJlZC5oIgpAQCAtOTMsNyArOTQsNyBAQCBlbnVtIFN0eWxl
Q2hhbmdlVHlwZSB7CiAgICAgU3ludGhldGljU3R5bGVDaGFuZ2UgPSAzIDw8IG5vZGVTdHlsZUNo
YW5nZVNoaWZ0CiB9OwogCi1jbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitjbGFz
cyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJO
b2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKICAg
ICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKIApA
QCAtNTc3LDYgKzU3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVF
dmVudFRhcmdldERhdGEoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE11dGF0aW9uKFBh
c3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+KTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0
YSogbXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEq
IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZs
YWdzIHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggYWFjZWYx
NWI2NjViNTBlNjE5NDA1MGRjZThkM2EwMTdjYzE0ZjZkNS4uMzJhYjIyYjJiYjIzZTc0YjFiYmUz
NjhiYTlkZTljZjc4YzI1OTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbApAQCAtMTU5LDYgKzE1OSwxMSBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09C
SkVDVElWRV9DCisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBNdXRhdGlvblR5cGVzIHR5cGVzKTsK
KyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11
dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIpOworI2VuZGlmCisKICAgICB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmgKaW5kZXggYjkyMWEyM2EyMzdmMmM0N2Y2NzQ2NWJlZGNjZjQxNzY0
ZjllOTNjOS4uMWVhMDlhMDliY2Q3NWRhYzRhOGVhYTRkYWI1OWZmNmIyZDQwZGQ3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2xh
c3NOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk11
dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgpAQCAtMTIxLDYgKzEy
MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YS5nZXQoKTsK
ICAgICB9CiAKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsg
cmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgTXV0YXRpb25UYXJnZXRE
YXRhKiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX211
dGF0aW9uVGFyZ2V0RGF0YSkKKyAgICAgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRv
cHRQdHIobmV3IE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgICAgIHJldHVybiBtX211dGF0aW9u
VGFyZ2V0RGF0YS5nZXQoKTsKKyAgICB9CisKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNGb2N1c2VkOyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkg
eyBtX2lzRm9jdXNlZCA9IGZvY3VzZWQ7IH0KIApAQCAtMTMzLDYgKzE0Miw3IEBAIHByaXZhdGU6
CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURh
dGE+IG1fbm9kZUxpc3RzOwogICAgIE93blB0cjxFdmVudFRhcmdldERhdGE+IG1fZXZlbnRUYXJn
ZXREYXRhOworICAgIE93blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJnZXRE
YXRhOwogICAgIHNob3J0IG1fdGFiSW5kZXg7CiAgICAgYm9vbCBtX3RhYkluZGV4V2FzU2V0RXhw
bGljaXRseSA6IDE7CiAgICAgYm9vbCBtX2lzRm9jdXNlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMWI3Mjgx
Y2Y2ZDMxNWI2YWNkZjQyNzJmMjFjYTcwZmZjNzcwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFJlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJNdXRhdGlvblR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJl
Z2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
cihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIGNvbnN0IE11dGF0aW9uVHlwZXMmIHQp
CisgICAgICAgIDogbGlzdGVuZXIobCkKKyAgICAgICAgLCB0eXBlcygwKQorICAgIHsKKyAgICAg
ICAgbWVyZ2VUeXBlcyh0KTsKKyAgICB9CisKKyAgICB2b2lkIG1lcmdlVHlwZXMoY29uc3QgTXV0
YXRpb25UeXBlcyYgbmV3VHlwZXMpCisgICAgeworICAgICAgICB0eXBlcyB8PSBuZXdUeXBlcy5j
aGlsZGxpc3QoKSA/IE11dGF0aW9uVHlwZXM6OkNoaWxkbGlzdCA6IDA7CisgICAgICAgIHR5cGVz
IHw9IG5ld1R5cGVzLmF0dHJpYnV0ZSgpID8gTXV0YXRpb25UeXBlczo6QXR0cmlidXRlIDogMDsK
KyAgICAgICAgdHlwZXMgfD0gbmV3VHlwZXMuY2hhcmFjdGVyZGF0YSgpID8gTXV0YXRpb25UeXBl
czo6Q2hhcmFjdGVyZGF0YSA6IDA7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAqbGlzdGVuZXIgPT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKworICAgIFJlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVzOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3ZDIxYjk2
MmExZGIyYjBhMDZlNjNlOTA2YmI2N2QzZjJkLi5mYjdlYjBjZDhiMWY4NWExOTJhOTBkNzFlMTkw
NmU0NmQ3MmU3ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03Miw2ICs3Miw3
IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0
Y2hlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFy
Z2V0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2Vu
dGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTg4Myw0ICsxODg0LDkgQEAgU3RvcmFnZUlu
Zm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogfQogI2VuZGlmCiAKK3Zv
aWQgRE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSgpCit7CisgICAgOjpXZWJDb3JlOjpzcGlu
TXV0YXRpb25RdWV1ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAppbmRleCBhMmFkODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZk
Li5kYzliMDFkYzVjY2FjNjQ5OGZjYWRmMjNlYTI3Yjc3M2I3NDdhNDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKQEAgLTQxNCw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFBlcmZvcm1hbmNlKiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAg
dm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2lu
ZG93KEZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwMzY2
YTFmYjdlMTQ3NTVlZTE1NTRhOGEzYzBmZWMxMTk2Li42MjI3MTU3MDIzOTNhODk3MDQzZTFhM2Mz
ODQyMmRmNGUyOGUzY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC04MDMsNiAr
ODAzLDExIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICAvLyB3aW5kb3cudG9TdHJpbmcoKSBy
ZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGluIFY4CiAgICAgICAgIFtWOERvTm90Q2hlY2tTaWdu
YXR1cmUsIERvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tLCBEb250RW51bV0gRE9NU3Ry
aW5nIHRvU3RyaW5nKCk7CiAjZW5kaWYgLy8gZGVmaW5lZChWOF9CSU5ESU5HKQorCisgICAgICAg
IC8vIEZJWE1FKGFkYW1rKTogRE8gTk9UIFNVQk1JVAorICAgICAgICAvLyBUaGlzIG5lZWRzIHRv
IGJlIGV4cG9zZWQgdG8gSlMgdW50aWwgZW1iZWRkZXJzIGFyZSBtb2RpZmllZCB0byBjYWxsIHNw
aW5NdXRhdGlvblF1ZXVlKCkKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiBlYWNoIHRhc2suCisg
ICAgICAgIHZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104260</attachid>
            <date>2011-08-17 15:47:09 -0700</date>
            <delta_ts>2011-08-23 16:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66079-20110817154708.patch</filename>
            <type>text/plain</type>
            <size>120586</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJj
NmQxYjc5Njk2Yzc5NGEzNWJiLi44NjgxMGFkMTAyZDViYzU5YjFkMmY2NjlhMzRmZDdjNzY2OTk2
NDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTEgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFu
IHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5lIHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29t
cGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMGIxZmEzZjEyNzNlNTFmOGU2MGE2ZDBmMTZmMTIxODVh
M2Q4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IE11dGF0aW9u
TGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG11dGF0aW9uc1swXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVkTm9kZXNb
MF0KK1BBU1MgbXV0YXRpb25zWzFdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1sx
XQorUEFTUyBtdXRhdGlvbnNbMl0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRlZE5vZGVzWzJd
CitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBsaXN0ZW5lckNh
bGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgdGV4dE5vZGVzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Yzc3
YTg4NDQyMGQzMDJjMDUwN2M4NGVlM2JlZGI2MWI3OWEzMzg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDk0
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICA8ZGl2
IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlwdD4KKyAg
ICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4
cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgdmFyIGxp
c3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBpbnNlcnRlZE5vZGVzOworICAgICAg
ICB2YXIgcmVtb3ZlZE5vZGVzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRyczsKKyAgICAgICAg
dmFyIHRleHROb2RlczsKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAg
ICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAg
ICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVk
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbVtpXS5pbnNl
cnRlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWycgKyBpICsgJ10uaW5zZXJ0ZWROb2Rlc1snICsgaiArICddJywgJ2luc2Vy
dGVkTm9kZXNbJyArIChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5v
ZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBp
ICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4
dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnNlcnRlZE5vZGVzID0gW107CisgICAgICAg
ICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsK
KyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJibGlu
ZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIHZhciBpbm5lclNhbmRib3ggPSBzYW5kYm94LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHZhciBhID0gc2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgICAgICBhLnRleHRDb250ZW50ID0gJ2hlbGxvLCB3b3JsZCc7Cisg
ICAgICAgIHZhciBiID0gaW5uZXJTYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGluc2VydGVkTm9kZXMgPSBbYSwgYS5maXJzdENoaWxk
LCBiXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFkZE11
dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgaW5u
ZXJTYW5kYm94LnJlbW92ZUNoaWxkKGIpOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAg
bW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgaW5uZXJTYW5kYm94LnNldEF0
dHJpYnV0ZSgnZGF0YS1mb28nLCAnbXlkYXRhJyk7CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVl
KCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgbGlz
dGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0
YXRpb24uCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5l
ciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RD
aGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBz
YW5kYm94LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7CisgICAgICAg
IHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlRmFsc2UoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgIDwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNkZDczMGY0MmNl
ZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uZmVkOWZlMGY4YTY2YjdmNjQ3NmY1OGRmOThlZGY5
ZWFlMTk0MjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMCBAQAorMjAxMS0wOC0xMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBpbiBwcm9ncmVz
c10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEgcmVwbGFjZW1l
bnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJpbWVudGFsLCB2
ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZlbnR1YWxseSBy
ZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAgICAgICAgbGFy
Z2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNzYWdlIHRvIHB1
YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVi
bGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAgICAgVGhhdCB0
aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1hcml6ZWQgYnkK
KyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgorCisgICAgICAg
IGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFK
dWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggaXMgaW4gbm8g
d2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBi
aWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5nCisgICAgICAg
IG9mIE11dGF0aW9uUmVjb3JkTGlzdHMgdG8gTXV0YXRpb25MaXN0ZW5lcnM6IHRoZSBpbmNsdWRl
ZCBsYXlvdXQKKyAgICAgICAgdGVzdCBpbnN0ZWFkIGNhbGxzIGEgInNwaW5NdXRhdGlvblF1ZXVl
IiBmdW5jdGlvbiB0byB0cmlnZ2VyCisgICAgICAgIG5vdGlmaWNhdGlvbnMuIFRoaXMgaXMgbm90
IGFjdHVhbGx5IG1lYW50IHRvIGJlIGV4cG9zZWQgdG8gSlMsCisgICAgICAgIHRob3VnaDogbXkg
aG9wZSBpcyB0byBpbnN0ZWFkIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUgZnJvbQorICAgICAgICBD
KyssIGVpdGhlciBmcm9tIHNvbWV3aGVyZSBpbiBXZWJDb3JlIG9yIChtb3JlIGxpa2VseSkgaW4K
KyAgICAgICAgdGhlIGVtYmVkZGVyLiBJIGhhdmUgYSBzZXBhcmF0ZSBjaGFuZ2Ugd2hpY2ggaW1w
bGVtZW50cyB0aGUKKyAgICAgICAgbGF0dGVyIGluIENocm9taXVtLgorCisgICAgICAgIFRoZSBv
dGhlciBtYWluIHRoaW5nIG1pc3NpbmcgZnJvbSB0aGlzIHBhdGNoIGlzIHRoYXQgTXV0YXRpb25S
ZWNvcmRzCisgICAgICAgIGFyZSBub3QgZGlzcGF0Y2hlZCBpbiBhbGwgdGhlIHByb3BlciBwbGFj
ZXMsIGUuZy4sIHRoZSBoYW5kbGluZyBvZgorICAgICAgICBpbm5lckhUTUwgaXMgbm90IGFzIHdl
IGhvcGUgaXQgdG8gYmUuIFRoaXMgaXMgc2ltcGx5IGEgbWF0dGVyIG9mCisgICAgICAgIHdhbnRp
bmcgdG8gcHV0IHRoaXMgcGF0Y2ggdXAgdG8gZ2V0IGZlZWRiYWNrOiBpdCBzaG91bGRuJ3QgYmUK
KyAgICAgICAgbXVjaCB3b3JrIHRvIGFkZCBNdXRhdGlvblJlY29yZCBkaXNwYXRjaGluZyBpbiBh
bGwgdGhlIHByb3BlcgorICAgICAgICBwbGFjZXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9u
TGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5l
cjo6SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0
ZW5lcjo6fkpTTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6
Omhhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6aXNvbGF0ZWRXb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpzZXRXcmFwcGVyKToKKyAgICAgICAgSlNNdXRhdGlvbkxp
c3RlbmVyIGlzIHZlcnkgc2ltaWxhciB0byBKU0V2ZW50TGlzdGVuZXIsCisgICAgICAgIHdpdGgg
YSBmZXcgc2ltcGxpZmljYXRpb25zLiAgSXRzIHJlYXNvbiBmb3IgZXhpc3RpbmcKKyAgICAgICAg
aXMgdGhhdCBOb2RlLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIgbmVlZHMgdG8gYmVoYXZlCisg
ICAgICAgIGxpa2UgYWRkRXZlbnRMaXN0ZW5lciwgaW4gdGhhdCBkdXBsaWNhdGUgYWRkaXRpb25z
IGFyZQorICAgICAgICBpZ25vcmVkLiBUaGlzIHJlcXVpcmVzIHRoZSBvcGVyYXRvcj09IG1ldGhv
ZC4gV2UgYWxzbworICAgICAgICB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBzYW1lIE11
dGF0aW9uUmVjb3JkCisgICAgICAgIG1vcmUgdGhhbiBvbmNlIHRvIGEgZ2l2ZW4gbGlzdGVuZXIs
IGFuZCBmb3IgdGhpcworICAgICAgICB3ZSB1c2UgYSBIYXNoTWFwLCB0aHVzIHRoZSB8aGFzaHwg
bWV0aG9kLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGU6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAg
U2luY2UgTXV0YXRpb25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBhcmUgY3VzdG9tLCBzbworICAgICAg
ICBtdXN0IGJlIG11dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9uIGFuZCByZW1vdmFsLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50
ZXJuYWxGaWVsZHMpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
OjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVu
ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmRpc3Bv
c2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFz
aCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFj
ay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlzdGVuZXJPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZG9GaW5kV3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5k
T3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVxdWl2YWxlbnRzIG9mIHRoZSBKU011
dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2VuZXJhbGl6ZWQgaW52b2tlQ2FsbGJh
Y2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgorICAgICAgICBWOE11dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjp3ZWJraXRBZGRNdXRhdGlvbkxp
c3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjp3ZWJraXRSZW1vdmVN
dXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICBBbmQgdGhlIGVxdWl2YWxlbnQgY3Vz
dG9tIG1ldGhvZHMgb24gTm9kZS4KKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQpOgor
ICAgICAgICBEaXNwYXRjaCAiY2hhcmFjdGVyZGF0YSIgbXV0YXRpb25zLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNl
cnRpb25FdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVu
dHMpOgorICAgICAgICBEaXNwYXRjaCAiY2hpbGRsaXN0IiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRl
KToKKyAgICAgICAgRGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgorICAgICAgICAqIGRv
bS9NdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25M
aXN0ZW5lcjo6fk11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjppbnNlcnRlZE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
OjpuZXdWYWx1ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmlkbDogQWRkZWQuCisg
ICAgICAgIE11dGF0aW9uUmVjb3JkcyBhcmUgYW5hbG9nb3VzIHRvIEV2ZW50czogdGhleSBob2xk
IGRhdGEKKyAgICAgICAgYWJvdXQgYSBzaW5nbGUgbXV0YXRpb24uCisgICAgICAgICogZG9tL011
dGF0aW9uUmVjb3JkTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25S
ZWNvcmRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmRMaXN0
OjpNdXRhdGlvblJlY29yZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmRM
aXN0Ojp+TXV0YXRpb25SZWNvcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkTGlzdDo6
aXRlbSk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkTGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vTXV0YXRpb25SZWNvcmRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgIE11dGF0aW9u
UmVjb3JkTGlzdHMgYXJlIGFycmF5LWxpa2Ugb2JqZWN0cyB3aGljaCBhcmUgcGFzc2VkIHRvCisg
ICAgICAgIE11dGF0aW9uTGlzdGVuZXJzLCBjb250YWluaW5nIGFsbCBNdXRhdGlvblJlY29yZHMg
c2luY2UgdGhlIGxhc3QgdGltZQorICAgICAgICBlYWNoIGxpc3RlbmVyIHdhcyBub3RpZmllZC4K
KyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6OmVx
dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpzcGluTXV0
YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjphZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25UYXJnZXQg
aXMgYW5hbG9nb3VzIHRvIEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBtaXhpbiBmb3IgTm9kZS4KKyAg
ICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
TXV0YXRpb25UYXJnZXREYXRhIGlzIG1lYW50IHRvIGJlIHBhcnQgb2YgTm9kZVJhcmVEYXRhLgor
ICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblR5cGVzOjpjaGlsZGxpc3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uVHlwZXM6OmF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBl
czo6Y2hhcmFjdGVyZGF0YU5hbWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OmNoaWxkbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvblR5cGVzOjpzZXRDaGlsZGxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
eXBlczo6YXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJkYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldENoYXJhY3RlcmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6TXV0YXRpb25UeXBlcyk6CisgICAgICAg
ICogZG9tL011dGF0aW9uVHlwZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgQSBzaW1wbGUgb2JqZWN0
IHRoYXQncyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGFkZE11dGF0aW9uTGlzdGVuZXIuCisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNdXRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
TXV0YXRpb25UYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vTm9kZS5pZGw6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6
bWVyZ2VUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
cjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUg
dGhhdCB0aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhl
IGNoYW5nZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0
byBkZWFsIHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRp
bWUtdG8tcnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRh
NWEyZTc2M2FkOTZjNTM3MC4uY2YxMjc5Y2UwOTJjNTBjNzFkMjBmZmUwM2E1YzRjYTI4MGNlOTll
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCwxMCBAQAogI2lu
Y2x1ZGUgIkpTTWV0YWRhdGFDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNNb3VzZUV2ZW50LmNw
cCIKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25M
aXN0ZW5lci5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5jcHAiCisjaW5jbHVkZSAi
SlNNdXRhdGlvblJlY29yZExpc3QuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25UeXBlcy5jcHAi
CiAjaW5jbHVkZSAiSlNOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmNw
cCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDI2YjYwYWIzMTMxZDlhZTRmNmYyMzYzNDE3MTI1MGY2YTU1
YzA3ZjguLjU5MzViMjBiOTFlYjRjODcwNDYyNDhmYzZmMzU1M2JkZmY0Y2VmYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzE1LDYgKzMxNSwxMCBAQCBET01fQ0xBU1NFUyA9
IFwKICAgICBNZXRhZGF0YUNhbGxiYWNrIFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRhdGlv
bkV2ZW50IFwKKyAgICBNdXRhdGlvbkxpc3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBcCisg
ICAgTXV0YXRpb25SZWNvcmRMaXN0IFwKKyAgICBNdXRhdGlvblR5cGVzIFwKICAgICBOYW1lZE5v
ZGVNYXAgXAogICAgIE5hdmlnYXRvciBcCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IgXApA
QCAtNTcxLDcgKzU3NSw3IEBAIERPTV9DTEFTU0VTID0gXAogCiAuUEhPTlkgOiBhbGwKIAotSlNf
RE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZl
bnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCwkKERPTV9DTEFTU0VTOiU9SlMlLmgpKQorSlNf
RE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZl
bnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCBKU011dGF0aW9uTGlzdGVuZXIuaCwkKERPTV9D
TEFTU0VTOiU9SlMlLmgpKQogCiBXRUJfRE9NX0hFQURFUlMgOj0KIGlmZXEgKCQoZmluZHN0cmlu
ZyBCVUlMRElOR19XWCwkKEZFQVRVUkVfREVGSU5FUykpLCBCVUlMRElOR19XWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZjUxODYwMGE0ZTE0MTlkMDk2OTNmOWUw
MzY0MDYxOTFjYzJmMWE0Yy4uOTlhYTc5YTc1Yzk1ZjIzNmIyYmY4Mzc4NzhmZDI1YTA1ZTFlNGJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTIzMSw2ICsyMzEs
NyBAQAogICAgICAgIyBDdXN0b20gYmluZGluZ3MgaW4gYmluZGluZ3MvdjgvY3VzdG9tIGV4aXN0
IGZvciB0aGVzZS4KICAgICAgICcuLi9kb20vRXZlbnRMaXN0ZW5lci5pZGwnLAogICAgICAgJy4u
L2RvbS9FdmVudFRhcmdldC5pZGwnLAorICAgICAgJy4uL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlk
bCcsCiAgICAgICAnLi4vaHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKIAogICAgICAgIyBCaW5kaW5n
cyB3aXRoIGN1c3RvbSBPYmplY3RpdmUtQyBpbXBsZW1lbnRhdGlvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMTY4NDRiNzEwMTc4YTcxMjIxOGZmZDYwNmEyY2JjMjMzZDBjZDA3Mi4uY2MzZmVkMjAw
NmUxODdhMDEzYTk3NGY0NDUyMGExMzUyOTc3ZTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE3
OSw2ICsxMTc5LDEwIEBACiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL01vdXNlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25F
dmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAg
ICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmlkbCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uUmVjb3JkTGlzdC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblR5cGVzLmlkbCcs
CiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9O
b2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVGaWx0ZXIuaWRsJywKQEAgLTIwNzcsNiAr
MjA4MSw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcCcsCkBAIC01MzI2LDYgKzUz
MzMsMTYgQEAKICAgICAgICAgICAgICdkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NdXRhdGlv
bkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlv
blJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmRMaXN0LmNwcCcsCisg
ICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkTGlzdC5oJywKKyAgICAgICAgICAgICdkb20v
TXV0YXRpb25UYXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuaCcs
CisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKKyAgICAgICAgICAgICdk
b20vTXV0YXRpb25UeXBlcy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblR5cGVzLmgn
LAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20v
TmFtZU5vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuY3BwJywKQEAg
LTUzNjcsNiArNTM4NCw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAog
ICAgICAgICAgICAgJ2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlZ2lz
dGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBiYTg0NjQ2
M2U1MjdkZTZmZGEzMGFiNzk5NjhlNmVhYjRjOWEyYmQuLjNkNzhjNGFkYTVlZTljOTI1ZjBmMGFh
ODg2OWI3Mjc2YWM5ZWQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MTAsOSArNTQxMCwyMyBAQAogCQlDNUQ0QUE3QTEx
NkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5
cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVF
OUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9
OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODEx
MDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzY3
MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzgxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OworCQlDNjcxREEzRjEzRTM3MTQ5MDA1
NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25S
ZWNvcmQuaCAqLzsgfTsKKwkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25S
ZWNvcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM2NzFEQTNBMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkTGlzdC5jcHAg
Ki87IH07CisJCUM2NzFEQTQxMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURB
M0IxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmggKi87IH07CisJCUM2
NzFEQTQyMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBM0MxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5jcHAgKi87IH07CisJCUM2NzFEQTQzMTNFMzcxNDkwMDU1
OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2NzFEQTNEMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlw
ZXMuaCAqLzsgfTsKKwkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3
MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovOyB9OwogCQlD
NkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEy
ODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0
QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkw
QTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CiAJCUM2RjQx
MDQ3MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVu
dHJ5QmFzZS5jcHAgKi87IH07CisJCUM2RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovOyB9Owor
CQlDNkY2NzE1MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmRMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQzMTNFMzVF
NUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuY3BwICovOyB9OworCQlDNkY2NzE1NDEz
RTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmNwcCAqLzsgfTsKKwkJQzZGNjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNkY2NzE1NjEzRTM1
RTVFMDBERTNCOUMgLyogTXV0YXRpb25UeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0ODEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRp
b25UeXBlcy5jcHAgKi87IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0
aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAg
Ki87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTVC
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLzsgfTsKIAkJQ0EzQkY2
N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87
IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjEz
Nyw5ICsxMjE1MSwzMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRy
aWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoTWV0cmljc01h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3NjEwNjk3RTEzMDBDN0JC
MUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERp
c3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzODEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzQTEzRTM3MTQ5MDA1NThBRTkgLyog
SlNNdXRhdGlvblJlY29yZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvblJlY29yZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZExpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBM0MxM0UzNzE0OTAwNTU4QUU5IC8q
IEpTTXV0YXRpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU011dGF0aW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcx
REEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2
MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlD
IC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEz
RjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJl
Y29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0
aW9uUmVjb3JkLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDMxM0Uz
NUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZExpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNv
cmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uUmVjb3Jk
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NTEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmRMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBN
dXRhdGlvblJlY29yZExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJn
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDgxM0UzNUU1RTAwREUzQjlDIC8q
IE11dGF0aW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TXV0YXRpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQ5
MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNEExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlwZXMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJlZE11dGF0
aW9uTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNUExM0Uz
NUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0
ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3QjEwRDk5QkFFMDBF
NkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTU5LDYgKzEzMTk2LDcgQEAKIAkJCQk4OTg3ODU3NjEyMkNB
MURBMDAzQUFCREEgLyogRmlsZUFQSSAqLywKIAkJCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUg
LyogSFRNTCAqLywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICov
LAorCQkJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQkzMzUw
M0M5QzEwMTc5QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUMyMjYwMjBE
QjY5RUE3MDA4OUI2NjkgLyogT2ZmbGluZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5
NTkgLyogUGx1Z2lucyAqLywKQEAgLTE1NDA1LDYgKzE1NDQzLDcgQEAKIAkJCQk4NUFGQTdBQjBB
QUYzQkIwMDBFODQzMDUgLyogRXZlbnRzICovLAogCQkJCTg1QzU2RDAzMEFBOEJBQTcwMEQ5NTc1
NSAvKiBIVE1MICovLAogCQkJCTg1RTcxMTNEMEFDNUQ0QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAq
LywKKwkJCQlDNjcxREE1RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJODUz
OEYwNTcwQUQ3MjJCOTAwNkE4MUQxIC8qIFJhbmdlcyAqLywKIAkJCQk4NTA2NTcwNDBBQUI0NzZD
MDAyRDE1QzAgLyogU3R5bGVTaGVldHMgKi8sCiAJCQkJODVBMEY5OEUwQUM3MTZGNDAwMTYxRkRD
IC8qIFNWRyAqLywKQEAgLTE4NTEzLDYgKzE4NTUyLDggQEAKIAkJCQkzMzE0QUNFQTEwODkyMDg2
MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAw
NTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5
RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovLAorCQkJCUM2RjY3MTVB
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovLAorCQkJCUM2RjY3
MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQk5M0I3
MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywK
IAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmggKi8sCiAJCQkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCAqLywKQEAgLTE5MTY4LDYgKzE5MjA5LDI2IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJ
CQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRh
dGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzY3
MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2
NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8sCisJCQkJQzY3
MURBM0ExM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmNwcCAqLywKKwkJ
CQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZExpc3QuaCAqLywK
KwkJCQlDNjcxREEzQzEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmNwcCAqLywK
KwkJCQlDNjcxREEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi8sCisJ
CQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJQzY3MURBNUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gTXV0YXRpb247
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFMUM4QkU0QjBFOEJEMEQxMDA2
NENCN0QgLyogVGhyZWFkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xOTkxNCw2ICsxOTk3NSwyMCBAQAogCQkJCTg1MDMxQjMzMEE0NEVGQzcwMEY5OTJF
MCAvKiBNdXRhdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzNDBBNDRFRkM3MDBGOTkyRTAg
LyogTXV0YXRpb25FdmVudC5oICovLAogCQkJCTkzRUVDMUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBN
dXRhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25MaXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvbkxpc3RlbmVyLmlkbCAqLywKKwkJCQlDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZC5oICovLAorCQkJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blJlY29yZC5pZGwgKi8sCisJCQkJQzZGNjcxNDMxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
UmVjb3JkTGlzdC5jcHAgKi8sCisJCQkJQzZGNjcxNDQxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uUmVjb3JkTGlzdC5oICovLAorCQkJCUM2RjY3MTQ1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZExpc3QuaWRsICovLAorCQkJCUM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBN
dXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0
aW9uVGFyZ2V0RGF0YS5oICovLAorCQkJCUM2RjY3MTQ4MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblR5cGVzLmNwcCAqLywKKwkJCQlDNkY2NzE0OTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRp
b25UeXBlcy5oICovLAorCQkJCUM2RjY3MTRBMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5
cGVzLmlkbCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFw
LmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmgg
Ki8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8s
CkBAIC0xOTk3OCw2ICsyMDA1Myw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8q
IFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJF
MCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIx
M0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJ
QTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywK
IAkJCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8s
CiAJCQkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywK
QEAgLTIyMDMyLDYgKzIyMTA4LDEwIEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8q
IEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0
ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzFEQTQxMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0
aW9uUmVjb3JkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBNDMxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEOUMyQzEwQzE3
QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQy
NDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDg1LDggQEAKIAkJCQlCMUFENEU2MzEzQTEy
QTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFB
RDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlv
blRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAw
MDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3
NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxODEsNiArMjYyNjMsMTQgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyog
WFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhE
Q0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlERTc5MDQxM0YxNkM3RjAw
MDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNEUx
M0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM2RjY3MTUxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTVDMTNFMzVFQjIwMERFM0I5
QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzY3MURBM0Ux
M0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUM2NzFEQTQyMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9u
VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTY2ZjA3OTJkNmVmMDIxY2Uz
YjU0ZjcxNTI3ZjQ5ODllMGMwYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5o
IgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
IgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5jbHVkZSAiSlNOb2RlLmgi
CisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcihKU09i
amVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xh
dGVkV29ybGQpCisgICAgOiBtX3dyYXBwZXIoKmlzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwg
d3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQoreworICAgIGlm
ICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0TWF5QmVOdWxsKCptX2lzb2xhdGVk
V29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUKCFmdW5jdGlvbik7CisKK30KKworSlNNdXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRh
dGlvbkxpc3RlbmVyKCkKK3sKK30KKwordm9pZCBKU011dGF0aW9uTGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE11dGF0
aW9uUmVjb3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2Jq
ZWN0KiBqc0Z1bmN0aW9uID0gbV9qc0Z1bmN0aW9uLmdldCgpOworCisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0
PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ct
PmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gVGhlIHdpbmRvdyBtdXN0IHN0aWxsIGJlIGFjdGl2ZSBpbiBpdHMgZnJhbWUuIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTIxPi4KKyAgICAvLyBGSVhN
RTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBjaGFuZ2UgRE9NV2luZG93OjpmcmFt
ZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNoZWQgd2luZG93IHVzZWQgdG8gYmUg
aW4uCisgICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAhPSB3aW5kb3ctPmltcGwoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIg
Y29udGV4dHM/CisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgp
OworICAgIGlmICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlw
dCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGhhbmRs
ZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
aGFuZGxlRXZlbnQiKSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVu
Y3Rpb24gPSBKU1ZhbHVlKCk7CisgICAgICAgIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2Fs
bERhdGEoY2FsbERhdGEpOworICAgIH0KKworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5v
bmUpIHsKKyAgICAgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHByb3RlY3QodGhpcyk7CisK
KyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBlbmQo
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucykpOworCisgICAgICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBE
eW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2Jq
ZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQorICAgICAgICAgICAg
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQgdGhlIHRhcmdldCBzaG91
bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1lbnQgb3IgRE9NV2luZG93
PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIG11dGF0aW9ucy0+aXRlbSgwKS0+dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgY3VycmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisK
K2Jvb2wgSlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVu
ZXImIGxpc3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlv
bkxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3Rl
bmVyKTsKKyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9q
c0Z1bmN0aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQorewor
ICAgIHJldHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1
bmN0aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDVm
ZGEyZDY0MGUyOWEzNTAxYTU4N2QyMzQ1ZjAwNjVlZDM5NDE5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRl
ZiBKU011dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisj
aW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2Ns
YXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJs
aWMgTXV0YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNN
dXRhdGlvbkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNP
YmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3
cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlv
bkxpc3RlbmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlv
bkxpc3RlbmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBE
T01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVk
V29ybGQuZ2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFw
cGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNdXRhdGlvblJl
Y29yZExpc3QqKTsKKworcHJpdmF0ZToKKyAgICBKU011dGF0aW9uTGlzdGVuZXIoSlNDOjpKU09i
amVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCog
aXNvbGF0ZWRXb3JsZCk7CisKKyAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNP
YmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICBtdXRhYmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX3dyYXBwZXI7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29y
bGQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU011dGF0aW9u
TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
aW5kZXggNTFlM2JiODZhYWVlMzJiNWYyMTY1OWJlMTM3YzgyYTQ0MzJmZGYxMS4uY2E4NmRkMmVh
YmUzNjc5ZmM1OGY2YjE5OWIyYzU0Y2M1M2UwZjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC01OCw5ICs1OCwxMSBAQAogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKU1RleHQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblR5cGVz
LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vdGF0aW9uLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC0yMDUsNiArMjA3LDQzIEBAIHZvaWQgSlNOb2Rl
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KG5vZGUpKTsKIH0KIAorSlNWYWx1ZSBKU05vZGU6OndlYmtpdEFkZE11dGF0
aW9uTGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNWYWx1ZSBqc1R5cGVzID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgaWYgKCFqc1R5cGVzLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBhc09iamVjdChq
c1R5cGVzKTsKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXMgPSBNdXRhdGlvblR5cGVz
OjpjcmVhdGUoKTsKKyAgICBKU1ZhbHVlIGpzQ2hpbGRsaXN0ID0ganNUeXBlc09iamVjdC0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNoaWxkbGlzdCIpKTsKKyAgICBpZiAoanNDaGlsZGxp
c3QuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRDaGlsZGxpc3QoanNDaGlsZGxpc3Qu
Z2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRy
aWJ1dGUuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRBdHRyaWJ1dGUoanNBdHRyaWJ1
dGUuZ2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQ2hhcmFjdGVyZGF0YSA9IGpzVHlwZXNP
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGFyYWN0ZXJkYXRhIikpOworICAg
IGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRDaGFy
YWN0ZXJkYXRhKGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpOworCisgICAgaW1wbCgpLT5h
ZGRNdXRhdGlvbkxpc3RlbmVyKEpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgdGhpcywgY3VycmVudFdvcmxkKGV4ZWMpKSwgdHlwZXMpOworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTTm9kZTo6d2Via2l0UmVtb3ZlTXV0YXRpb25M
aXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpbXBsKCktPnJlbW92ZU11dGF0aW9uTGlzdGVuZXIo
SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBjdXJy
ZW50V29ybGQoZXhlYykpLmdldCgpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwor
CiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTEx
ZmIwOTRiZTUzMjUyMi4uNzkwM2VlZmQxZTIxMWJkZDNmN2RjMTJkOGJhZTJiYTFmMmIxMTZiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTQ3OSw2ICs0NzksMTAgQEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAg
IHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsK
ICAgICB9CiAKKyAgICBpZiAoSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpKSB7CisgICAgICAgIHB1
c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAibXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgiKTsK
KyAgICB9CisKICAgICBpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChA
Y3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAgICAg
fQpAQCAtMzI1NSw2ICszMjU5LDExIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgcmV0
dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcio+KCR7dmFsdWV9KS0+Z2V0TGlzdGVuZXJPYmplY3QoaW1wLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgp
KSI7CiAgICAgfQogCisgICAgaWYgKCR0eXBlIGVxICJNdXRhdGlvbkxpc3RlbmVyIikgeworICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJWOE11dGF0aW9uTGlzdGVuZXIuaCJ9ID0gMTsKKyAgICAgICAg
cmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOE11
dGF0aW9uTGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KCkpIDogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIjsKKyAgICB9CisKICAgICBpZiAoJHR5cGUgZXEg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUu
aCJ9ID0gMTsKICAgICAgICAgcmV0dXJuICIkdmFsdWUtPmRlc2VyaWFsaXplKCkiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDg2YTNhMjE5NjFk
YzI4MDlhMjA3Y2ZiYWU3ZjUyZDA3ZTNkZjgxYy4uODYwZjAxM2M3MDU1NzY4Y2NiMWUxNzJkZGVk
YzRjYWJlNmVkZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlY4TWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VDaGFubmVsLmgiCisjaW5j
bHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVy
TWFuYWdlci5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2Rl
LmgiCiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCkBAIC00ODEsNiArNDgzLDE5
IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhCiAjZW5kaWYKIH0KIAorUGFzc1JlZlB0cjxNdXRh
dGlvbkxpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApCit7CisgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7
CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
bG9va3VwID09IExpc3RlbmVyRmluZE9ubHkpCisgICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlz
dGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcih2YWx1ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBnbG9iYWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRl
eHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CisgICAgaWYgKGdsb2JhbE9iamVjdFByb3Rv
dHlwZUlzRE9NV2luZG93KGdsb2JhbFByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiBWOE11dGF0
aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHZhbHVlKTsKKyAgICByZXR1
cm4gMDsKK30KKwogI2lmIEVOQUJMRShYUEFUSCkKIC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVz
CiBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBWOERPTVdyYXBwZXI6OmdldFhQYXRoTlNSZXNvbHZl
cih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFY4UHJveHkqIHByb3h5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBlYjIyMDUxNzJiM2M5NGIwOGFl
NjdmNTU0YjIwYWVlMjg4MTQ5ZjkwLi5lMGRjMTI1YjhhMjk5NGVlZmRiY2I1Y2Y0ZGQ4NjA3MmYx
ZWE1NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAt
ODksNiArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCop
OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlz
dGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUsIExpc3Rl
bmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBMaXN0
ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAvLyBYUGF0aC1y
ZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlk
ZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5MmQxZjY0MDJh
Mjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVjdFByb3RvdHlw
ZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCisgICAg
VihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAgIFYoZGV2dG9v
bHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZkY2M3NjMzZjUxOTZhZjExOTg2ZDhmZWUwNTZmMDA1NzAyNTE3MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJW
OEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIK
KyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisg
ICAgOiBtX2xpc3RlbmVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobGlzdGVuZXIp
KQorICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQoreworICAgIG1fbGlzdGVuZXIu
TWFrZVdlYWsodGhpcywgJndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOworfQorCitWOE11
dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIoKQoreworICAgIGlmICghbV9saXN0
ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOwor
ICAgICAgICBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldyYXBwZXIobGlzdGVuZXIp
OworICAgIH0KKyAgICBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIFY4TXV0YXRpb25MaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIqPihwYXJhbWV0ZXIpOwor
ICAgIGxpc3RlbmVyLT5kaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpCit7CisgICAgaWYgKCFtX2xpc3Rl
bmVyLklzRW1wdHkoKSkgeworICAgICAgICBtX2xpc3RlbmVyLkRpc3Bvc2UoKTsKKyAgICAgICAg
bV9saXN0ZW5lci5DbGVhcigpOworICAgIH0KK30KKwordm9pZCBWOE11dGF0aW9uTGlzdGVuZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE11dGF0aW9uUmVj
b3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIC8vIERvbid0IHJlZW50ZXIgVjggaWYgZXhlY3V0
aW9uIHdhcyB0ZXJtaW5hdGVkIGluIHRoaXMgaW5zdGFuY2Ugb2YgVjguCisgICAgaWYgKGNvbnRl
eHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKG11dGF0aW9ucyk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQs
IG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzTXV0YXRpb25zID0gdG9WOChtdXRhdGlvbnMpOworICAg
IEFTU0VSVCghanNNdXRhdGlvbnMuSXNFbXB0eSgpKTsKKyAgICBpZiAoanNNdXRhdGlvbnMuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJvb2wgaWdub3Jl
ZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVuZXIsIDEsIGFy
Z3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVkIFY4TXV0YXRp
b25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4TXV0YXRpb25M
aXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIzMzRiNTE0ZDc3ZTM5ZDQ3ODdiZDQ0MmNmMTdiZjkyOTI5OGRjOGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVu
ZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmlu
ZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgor
I2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djguaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIE11
dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdv
cmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29udGV4dCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNvcmRM
aXN0Kik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5l
ciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBoYXNoKCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0TGlzdGVuZXJPYmplY3Qo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KG1fbGlz
dGVuZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKKyAg
ICBzdGF0aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOwor
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9saXN0ZW5lcjsKKyAgICBXb3JsZENv
bnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhMWJiNTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMyMjcxNDk4OTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCisj
ZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorCisjaW5jbHVkZSAiVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZvciBWOE11dGF0aW9uTGlzdGVuZXIgb2Jq
ZWN0cyB0aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMgb2Ygdjg6Ok9iamVjdCB0byBzcGVlZCB1
cCBsb29rdXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmluZFdyYXBwZXIodjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBkb0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1
ZT4pOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gbGlzdGVuZXJPYmplY3QpCisgICAgeworICAgICAgICBsaXN0ZW5lck9iamVjdC0+RGVsZXRl
SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBNdXRhdGlvbkxpc3RlbmVyKiBkb0ZpbmRXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQo
djg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciA9IG9iamVjdC0+R2V0SGlk
ZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7CisgICAg
ICAgIGlmIChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlzdGVuZXIqPih2ODo6RXh0ZXJuYWw6OlVu
d3JhcChsaXN0ZW5lcikpOworICAgIH0KK307CisKK2lubGluZSBQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkxvY2FsPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0aW9uTGlzdGVuZXIqIHdyYXBwZXIgPSBk
b0ZpbmRXcmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIHJldHVybiB3
cmFwcGVyOworCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHdyYXBwZXJQdHIgPSBWOE11
dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VDdXJy
ZW50V29ybGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikKKyAgICAgICAgb2JqZWN0LT5TZXRIaWRk
ZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25MaXN0ZW5lcigpLCB2ODo6RXh0
ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOworCisgICAgcmV0dXJuIHdyYXBwZXJQdHIu
cmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11
dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMxYTNmYjg3NDIyMDAxMDdiMGUyNDRiOGU1
Li44NmU0YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMyOGIzNTIyNDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC02Niw2ICs2Niw3IEBAIFY4TG9j
YWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9y
ZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVu
Y3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZpZWxk
Q291bnQoKSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hlID0g
b2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwogICAgIGlmIChjYWNoZS0+SXNO
dWxsKCkgfHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY2FjaGUgPSB2ODo6QXJy
YXk6Ok5ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggMTFmMzA5YjY5OTRhMTA4OTAwMmEx
MTJiNWZmMDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRlYmM3MmRkZTE1ZGE2MWVhMzRkNDgxMDJj
Mzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02MywxNCArNjMsMTQgQEAgdm9pZCBWOEN1
c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgIGludm9rZUNhbGxiYWNrKG1fY2Fs
bGJhY2ssIDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5nZXQoKSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBi
b29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9v
bCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKICAg
ICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAgICB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIGlmIChjYWxsYmFjay0+SXNGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
Pjo6TmV3KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3QoY2FsbGJhY2spKTsKKyAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CiAgICAgfSBlbHNlIGlmIChj
YWxsYmFjay0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5k
bGVFdmVudEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImhh
bmRsZUV2ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbi0+SXNGdW5jdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgyMWM2NTM1NzU3YzM0ZDVhMmNjM2MxMDE1
NWM4NTk1NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkxNmQ1MGZjNGQ5ZWQyYTAyYjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJu
cyBmYWxzZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRocmV3IGV4
Y2VwdGlvbikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYg
Y2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7Citib29sIGludm9rZUNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBj
YWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5
NmY5MDRjNWQ3Li40Njg0NDc4OWI1ZjhiN2M5NGZkNzk4NjlhMjA3YzI4ZjBmM2NiZjgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVk
ZSAiVjhDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJWOENvbW1lbnQuaCIKKyNpbmNsdWRlICJW
OERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudFR5cGUuaCIKQEAgLTQ4LDExICs0
OSwxNCBAQAogI2luY2x1ZGUgIlY4RW50aXR5LmgiCiAjaW5jbHVkZSAiVjhFbnRpdHlSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9u
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uVHlwZXMuaCIKICNpbmNsdWRlICJWOE5v
ZGUuaCIKICNpbmNsdWRlICJWOE5vdGF0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhUZXh0LmgiCisj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAt
MTMxLDYgKzEzNSw0MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGls
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OndlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLk5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcigpIik7CisgICAgUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxp
c3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAgICBSZWZQdHI8TXV0YXRp
b25UeXBlcz4gdHlwZXM7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBh
cmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdHlw
ZXMgPSBNdXRhdGlvblR5cGVzOjpjcmVhdGUoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlzdCIp
KTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICB0eXBl
cy0+c2V0Q2hpbGRsaXN0KHY4Q2hpbGRsaXN0LT5Cb29sZWFuVmFsdWUoKSk7CisgICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6
TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpKQor
ICAgICAgICAgICAgdHlwZXMtPnNldEF0dHJpYnV0ZSh2OEF0dHJpYnV0ZS0+Qm9vbGVhblZhbHVl
KCkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmpl
Y3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICgh
djhDaGFyYWN0ZXJkYXRhLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHR5cGVzLT5zZXRDaGFyYWN0
ZXJkYXRhKHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkpOworICAgIH0KKyAgICBpZiAo
bGlzdGVuZXIgJiYgdHlwZXMpIHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKS0+YWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgdHlwZXMpOworICAgICAgICBjcmVh
dGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4Tm9kZTo6bXV0YXRp
b25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5Ob2RlLndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoKSIpOworICAgIFJl
ZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0TXV0YXRp
b25MaXN0ZW5lcihhcmdzWzBdLCBMaXN0ZW5lckZpbmRPbmx5KTsKKyAgICBpZiAobGlzdGVuZXIp
IHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+cmVtb3ZlTXV0YXRp
b25MaXN0ZW5lcihsaXN0ZW5lci5nZXQoKSk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVu
Y3koYXJncy5Ib2xkZXIoKSwgYXJnc1swXSwgVjhOb2RlOjptdXRhdGlvbkxpc3RlbmVyQ2FjaGVJ
bmRleCk7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQog
ewogICAgIGlmICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3
NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZlLi45ZmM4NGU2OGRjM2FlYzlk
OWEzNTg5YzgxZmExNDZiODk3Mzc4OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQu
aCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRj
aE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRv
Y3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMpKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJE
YXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFjZTdmZTU3
ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uNjMwZDYxYmMwNWVhNGY2N2IyZGNlMmIyMjg0
OWQ5N2U0OTcxZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzUs
MTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0
aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtMTA5NSw2ICsxMDk3LDExIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBj
aGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7
CiAKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gaW5zZXJ0ZWROb2RlczsKKyAgICBpbnNlcnRl
ZE5vZGVzLmFwcGVuZChjKTsKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKQorICAgICAgICBjLT5w
YXJlbnROb2RlKCktPmRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxk
bGlzdENoYW5nZWQoYy0+cGFyZW50Tm9kZSgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQoaW5zZXJ0
ZWROb2RlcyksIDAsIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIGlmIChjLT5wYXJlbnROb2Rl
KCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERUlOU0VSVEVE
X0xJU1RFTkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50LCB0cnVlLCBjLT5wYXJl
bnROb2RlKCkpKTsKIApAQCAtMTExNiw2ICsxMTIzLDEyIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hp
bGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwog
CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsKKyAgICByZW1vdmVkTm9k
ZXMuYXBwZW5kKGMpOworCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgYy0+cGFy
ZW50Tm9kZSgpLT5kaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxp
c3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMCwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlbW92
ZWROb2RlcyksIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIC8vIGRpc3BhdGNoIHByZS1yZW1v
dmFsIG11dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERVJFTU9WRURfTElTVEVORVIpKQogICAg
ICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRk
ZGNiYi4uYzk0M2JkZjY1Mjk4NDFiNWM1ODZjNjQxODAyYjJjNmVkYjQ1NzM4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKQEAgLTY5OSw2ICs3MDAsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUs
CiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7
CiAjZW5kaWYKKworICAgIGRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lLCAiIiwgIiIpKTsKIH0KIAogdm9pZCBFbGVt
ZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiArNzM1LDggQEAgdm9pZCBF
bGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRl
KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlv
blJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCAi
IiwgIiIpKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5ZjQ0NWU5
NjA2ZTNiZWVjODIzNjJhNTVlZTUxOWNhNDRkYWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRh
dGlvblJlY29yZExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBN
dXRhdGlvbkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNv
cmRMaXN0KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9u
TGlzdGVuZXImKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNzVjNjg5MWE0NzcwN2M4ODVhNjc1OTAwMzA5NTQxY2E4ZGZiOWZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgUHVyZUludGVy
ZmFjZSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBNdXRhdGlvbkxpc3RlbmVyIHsK
KyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBNdXRhdGlvblJlY29yZExpc3QgbXV0YXRpb25z
KTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVj
b3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWVlMzk2NjMxMTJjZjE3NjZhMGMzNjY0YWVkMTM1NzRlODM0MmEzMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorCisj
aW5jbHVkZSAiTXV0YXRpb25UeXBlcy5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworLy8gVE9ETyhhZGFtayk6IEZpZ3VyZSBv
dXQgd2hldGhlciB3ZSB3YW50IHRvIHNoYXJlIGEgc2luZ2xlIGVtcHR5IG5vZGUgbGlzdCwgb3IK
Ky8vIGRvIHNvbWV0aGluZyBlbHNlIHNtYXJ0LgorY2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1Ymxp
YyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5Tm9kZUxpc3Qp
OworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbXB0eU5vZGVMaXN0KCkgeyB9Cit9
OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBpbnNlcnRlZCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgUGFzc1JlZlB0
cjxOb2RlPiBuZXh0Tm9kZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9u
ID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlwZXM6OmNoaWxkbGlzdE5h
bWUoKSwgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcyA9IGluc2VydGVk
OworICAgIGlmICghbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24t
Pm1faW5zZXJ0ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9u
LT5tX3JlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRhdGlvbi0+bV9yZW1vdmVk
Tm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6
OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX25leHROb2RlID0gbmV4dE5vZGU7CisgICAgcmV0
dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4g
TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgcHJldlZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29y
ZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlczo6
YXR0cmlidXRlTmFtZSgpLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9hdHRyTmFtZSA9IGF0
dHJOYW1lOworICAgIG11dGF0aW9uLT5tX3ByZXZWYWx1ZSA9IHByZXZWYWx1ZTsKKyAgICBtdXRh
dGlvbi0+bV9uZXdWYWx1ZSA9IG5ld1ZhbHVlOworICAgIHJldHVybiBtdXRhdGlvbi5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJkYXRh
TmFtZSgpLCB0YXJnZXQpKTsKK30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgOiBt
X3R5cGUodHlwZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKworTXV0YXRpb25SZWNv
cmQ6On5NdXRhdGlvblJlY29yZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZjMDU2MDRmNzE1NGQ4NWRh
MGM2MzZiZWQ3NTdkNGViZDdjYTgxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uUmVj
b3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisjaW5jbHVkZSAiTm9kZS5oIgorI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE11
dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IGluc2VydGVkLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVk
LCBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRh
dGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdl
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOwor
CisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIE5vZGUqIHRhcmdldCgpIHsgcmV0dXJu
IG1fdGFyZ2V0LmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAg
IE5vZGVMaXN0KiBpbnNlcnRlZE5vZGVzKCkgeyByZXR1cm4gbV9pbnNlcnRlZE5vZGVzLmdldCgp
OyB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIHsgcmV0dXJuIG1fcmVtb3ZlZE5vZGVz
LmdldCgpOyB9CisgICAgTm9kZSogbmV4dE5vZGUoKSB7IHJldHVybiBtX25leHROb2RlLmdldCgp
OyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0ck5hbWUoKSB7IHJldHVybiBtX2F0dHJOYW1lOyB9CisgICAgY29uc3QgU3RyaW5n
JiBwcmV2VmFsdWUoKSB7IHJldHVybiBtX3ByZXZWYWx1ZTsgfQorICAgIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgTXV0YXRp
b25SZWNvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdl
dCk7CisKKyAgICBBdG9taWNTdHJpbmcgbV90eXBlOworICAgIFJlZlB0cjxOb2RlPiBtX3Rhcmdl
dDsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1faW5zZXJ0ZWROb2RlczsKKyAgICBSZWZQdHI8Tm9k
ZUxpc3Q+IG1fcmVtb3ZlZE5vZGVzOworICAgIFJlZlB0cjxOb2RlPiBtX25leHROb2RlOworICAg
IEF0b21pY1N0cmluZyBtX2F0dHJOYW1lOworICAgIFN0cmluZyBtX3ByZXZWYWx1ZTsKKyAgICBT
dHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTdiY2NlZDYx
ZTBkYzk2YmJhMGM3NzZjZGE5YjkyNWI4Y2Q2YjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNv
cmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Tm9kZSAgICAgICAgICAgdGFyZ2V0OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxp
c3QnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAgICAgICBpbnNlcnRlZE5v
ZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgICAgICAgcmVtb3ZlZE5v
ZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgbmV4dE5vZGU7
CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0dHJOYW1lOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nICAgICAgcHJldlZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nICAgICAgbmV3VmFsdWU7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uUmVjb3JkTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZTJmMzBiMzAyYmQ2NGQxYTI0
ZmNkYjAzOGQ4YzZkNmExODVhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZExpc3QuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisKKyNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZExpc3Q+IE11dGF0aW9uUmVjb3JkTGlzdDo6Y3Jl
YXRlKFBhc3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IG11dGF0aW9ucykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkTGlzdChtdXRhdGlvbnMpKTsKK30KKwor
TXV0YXRpb25SZWNvcmRMaXN0OjpNdXRhdGlvblJlY29yZExpc3QoUGFzc093blB0cjxNdXRhdGlv
blJlY29yZFZlY3Rvcj4gbXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZl
Y3Rvcj4gb3duZWRNdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgbV9tdXRhdGlvbnMuc3dhcCgq
b3duZWRNdXRhdGlvbnMpOworfQorCitNdXRhdGlvblJlY29yZExpc3Q6On5NdXRhdGlvblJlY29y
ZExpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIE11dGF0aW9uUmVjb3JkTGlzdDo6bGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV9tdXRhdGlvbnMuc2l6ZSgpOworfQorCitNdXRhdGlvblJlY29y
ZCogTXV0YXRpb25SZWNvcmRMaXN0OjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID49IG1fbXV0YXRpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gbV9tdXRhdGlvbnNbaW5kZXhdLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWExNGM4YWM2ODgyNDRjNjc5NzNlMWE2MWNhZmQ5MTdhOWZiYmVkMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNdXRhdGlvblJlY29yZExpc3RfaAorI2RlZmluZSBNdXRhdGlvblJlY29yZExp
c3RfaAorCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZFZl
Y3RvcjsKKworY2xhc3MgTXV0YXRpb25SZWNvcmRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TXV0
YXRpb25SZWNvcmRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmRMaXN0PiBjcmVhdGUoUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOwor
ICAgIHZpcnR1YWwgfk11dGF0aW9uUmVjb3JkTGlzdCgpOworCisgICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGgoKTsKKyAgICBNdXRhdGlvblJlY29yZCogaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNdXRhdGlvblJlY29yZExpc3QoUGFzc093blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4pOworCisgICAgTXV0YXRpb25SZWNvcmRWZWN0b3IgbV9tdXRh
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGRmMzAxOTNhZmIw
ZmQ0ZmQ1MzU0M2U5MWFkYjhkMjNkYmQ5ZmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBj
b3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICBdIE11
dGF0aW9uUmVjb3JkTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKKyAgICAgICAgTXV0YXRpb25SZWNvcmQgaXRlbShpbiBbSXNJbmRleF0gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJn
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkwNjdhMDdjY2QxY2MwZmM3ZDBkN2E3MzBlNzk4ZDMyMzcwOWEz
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQu
Y3BwCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0
aW9uVGFyZ2V0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9u
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgIk11dGF0
aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVHlwZXMuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1Y3QgTXV0YXRpb25D
b250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1bWVudD4gZCwgUGFz
c1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3VtZW50KGQpCisgICAg
ICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7Cit9OworCitz
dHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gSW50SGFz
aDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8RG9jdW1lbnQq
Pjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxpc3RlbmVyLT5oYXNo
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11dGF0aW9uQ29udGV4
dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEt
PmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAqYi0+bGlzdGVuZXI7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlvbkNvbnRleHQqLCBN
dXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+IENvbnRleHRWZWN0
b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVjdG9yTWFwJiBjb250
ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRleHRWZWN0b3JN
YXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVlPE93blB0cjxNdXRh
dGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwgYWN0aXZlQ29udGV4
dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3ZvaWQgc3Bpbk11dGF0
aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmlzRW1w
dHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWN0aXZl
TXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25QdHI8TXV0YXRpb25S
ZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCkudGFrZShjb250ZXh0
LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVFdmVudChjb250ZXh0
LT5kb2N1bWVudC5nZXQoKSwgTXV0YXRpb25SZWNvcmRMaXN0OjpjcmVhdGUodi5yZWxlYXNlKCkp
LmdldCgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGVuc3VyZU11dGF0aW9uUXVldWVkKFBh
c3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IHBycE11dGF0aW9uKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0
YXRpb24gPSBwcnBNdXRhdGlvbjsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpKTsKKyAg
ICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpKTsKKyAgICBPd25QdHI8TXV0
YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IE11dGF0aW9uQ29udGV4dChtdXRh
dGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50KCksIHBycExpc3RlbmVyKSk7CisKKyAgICBwYWlyPENv
bnRleHRWZWN0b3JNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBjb250ZXh0VmVjdG9yTWFw
KCkuYWRkKGNvbnRleHQuZ2V0KCksIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAg
ICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IE11dGF0aW9uUmVjb3JkVmVjdG9yOworICAg
ICAgICBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkuYXBwZW5kKGNvbnRleHQucmVsZWFzZSgpKTsK
KyAgICB9CisgICAgTXV0YXRpb25SZWNvcmRWZWN0b3IqIHYgPSByZXN1bHQuZmlyc3QtPnNlY29u
ZDsKKyAgICBpZiAodi0+aXNFbXB0eSgpIHx8IHYtPmxhc3QoKSAhPSBtdXRhdGlvbikKKyAgICAg
ICAgdi0+YXBwZW5kKG11dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRh
cmdldCgpCit7Cit9CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OmFkZE11dGF0aW9uTGlzdGVuZXIo
UGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0cjxNdXRh
dGlvblR5cGVzPiBwcnBUeXBlcykKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXMg
PSBwcnBUeXBlczsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciByZWdpc3RlcmVkTGlz
dGVuZXIocHJwTGlzdGVuZXIsICp0eXBlcyk7CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0g
ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgc2l6ZV90IGluZGV4ID0gZC0+bGlzdGVu
ZXJzLmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIGQtPmxpc3RlbmVycy5hcHBlbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBl
bHNlCisgICAgICAgIGQtPmxpc3RlbmVyc1tpbmRleF0ubWVyZ2VUeXBlcygqdHlwZXMpOworfQor
Cit2b2lkIE11dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlz
dGVuZXIqIGxpc3RlbmVyKQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KCpkLT5saXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7CisgICAgICAgICAgICBk
LT5saXN0ZW5lcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0
cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNTRVJUKHBycE11dGF0aW9u
KTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOwor
ICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAg
dWludDhfdCBtYXNrID0gMDsKKyAgICBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5
cGVzOjpjaGlsZGxpc3ROYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRhdGlvblR5cGVzOjpDaGls
ZGxpc3Q7CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5cGVzOjph
dHRyaWJ1dGVOYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRhdGlvblR5cGVzOjpBdHRyaWJ1dGU7
CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5cGVzOjpjaGFyYWN0
ZXJkYXRhTmFtZSgpKQorICAgICAgICBtYXNrID0gTXV0YXRpb25UeXBlczo6Q2hhcmFjdGVyZGF0
YTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5lcnNbaV0udHlwZXMgJiBtYXNrKQorICAgICAgICAg
ICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJzW2ldLmxpc3RlbmVyLCBtdXRhdGlv
bik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzIzZTNiMDVkZDJjNTc1NWU3OWVkNDMyYWUzMDZj
OWU3MDkxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25U
YXJnZXQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldF9oCisjZGVmaW5l
IE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0ZW5lcjsKK2NsYXNzIE11dGF0aW9u
UmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworY2xhc3MgTXV0YXRpb25UeXBlczsK
KworY2xhc3MgTXV0YXRpb25UYXJnZXQgeworcHVibGljOgorICAgIHZvaWQgYWRkTXV0YXRpb25M
aXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+LCBQYXNzUmVmUHRyPE11dGF0aW9u
VHlwZXM+KTsKKyAgICB2b2lkIHJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5l
ciopOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRh
dGlvblJlY29yZD4pID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk11dGF0aW9uVGFy
Z2V0KCk7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPik7CisKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXRE
YXRhKCkgPSAwOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRhdGlv
blRhcmdldERhdGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFyZ2V0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGJlMTBjMzBkMmUw
YTNiOTQ0OTAwZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11
dGF0aW9uVGFyZ2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisKKyNpbmNs
dWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3R5cGVkZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyPiBNdXRhdGlvbkxp
c3RlbmVyVmVjdG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0YSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEoKSB7IH0KKyAgICB+TXV0YXRp
b25UYXJnZXREYXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yIGxpc3RlbmVy
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFy
Z2V0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNh
ZjUxNTdmMmUxZGFhZTY4MzIyZTMyMzE2M2FhZjczNDAyOTY2YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVHlwZXMuaCIKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRpb25UeXBlczo6Y2hp
bGRsaXN0TmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5h
bWUsICgiY2hpbGRsaXN0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIE11dGF0aW9uVHlwZXM6OmF0dHJpYnV0ZU5hbWUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImF0dHJpYnV0ZSIpKTsKKyAgICByZXR1cm4g
bmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJk
YXRhTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUs
ICgiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNjIzZGRjYTNmZmJh
MWZiOTk3ZWVkZGZlYzJmMGM1Nzg5ZTUxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25UeXBlcy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9u
VHlwZXNfaAorI2RlZmluZSBNdXRhdGlvblR5cGVzX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uVHlwZXMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblR5cGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TXV0YXRpb25UeXBlcz4gY3JlYXRlKGJvb2wgY2hpbGRsaXN0ID0gZmFsc2UsIGJv
b2wgYXR0cmlidXRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyZGF0YSA9IGZhbHNlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblR5cGVzKGNoaWxkbGlzdCwgYXR0
cmlidXRlLCBjaGFyYWN0ZXJkYXRhKSk7CisgICAgfQorCisgICAgZW51bSBNdXRhdGlvblR5cGVG
bGFncyB7CisgICAgICAgIENoaWxkbGlzdCA9ICgxIDw8IDApLAorICAgICAgICBBdHRyaWJ1dGUg
PSAoMSA8PCAxKSwKKyAgICAgICAgQ2hhcmFjdGVyZGF0YSA9ICgxIDw8IDIpCisgICAgfTsKKwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNoaWxkbGlzdE5hbWUoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKCk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgY2hhcmFjdGVyZGF0YU5hbWUoKTsKKworICAgIGJvb2wgY2hpbGRsaXN0
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZGxpc3Q7IH0KKyAgICB2b2lkIHNldENoaWxkbGlzdChi
b29sIGNoaWxkbGlzdCkgeyBtX2NoaWxkbGlzdCA9IGNoaWxkbGlzdDsgfQorICAgIGJvb2wgYXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGU7IH0KKyAgICB2b2lkIHNldEF0dHJp
YnV0ZShib29sIGF0dHJpYnV0ZSkgeyBtX2F0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsgfQorICAgIGJv
b2wgY2hhcmFjdGVyZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyZGF0YTsgfQorICAg
IHZvaWQgc2V0Q2hhcmFjdGVyZGF0YShib29sIGNoYXJhY3RlcmRhdGEpIHsgbV9jaGFyYWN0ZXJk
YXRhID0gY2hhcmFjdGVyZGF0YTsgfQorCitwcml2YXRlOgorICAgIE11dGF0aW9uVHlwZXMoYm9v
bCBjaGlsZGxpc3QsIGJvb2wgYXR0cmlidXRlLCBib29sIGNoYXJhY3RlcmRhdGEpCisgICAgICAg
IDogbV9jaGlsZGxpc3QoY2hpbGRsaXN0KQorICAgICAgICAsIG1fYXR0cmlidXRlKGF0dHJpYnV0
ZSkKKyAgICAgICAgLCBtX2NoYXJhY3RlcmRhdGEoY2hhcmFjdGVyZGF0YSkKKyAgICB7CisgICAg
fQorCisgICAgYm9vbCBtX2NoaWxkbGlzdDsKKyAgICBib29sIG1fYXR0cmlidXRlOworICAgIGJv
b2wgbV9jaGFyYWN0ZXJkYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIE11
dGF0aW9uVHlwZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlw
ZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlwZXMuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3ZDBiMzMyNGVhN2NjZWY3ZTUyMzEzNTg1YTEyYTAyNWI3YWY3YTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5pZGwKQEAgLTAsMCArMSwzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgTXV0YXRpb25UeXBlcyB7CisgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIGNoaWxkbGlzdDsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXR0
cmlidXRlOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjaGFyYWN0ZXJkYXRhOworICAgIH07
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzJkNzAzYWI1NDE5NGRlOTY5OWYzMWE0OWU1ZDZhMTg2
YzM2NWEyYS4uOTgyYzAyOGZlZjA5Njg0YWRjZDdiYjllZGRlN2JiNzNlYjY0OTcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUg
Ik11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0yODU5LDYgKzI4
NjAsMjMgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICB9CiB9CiAKK3ZvaWQgTm9kZTo6ZGlzcGF0Y2hNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0
aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChOb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPnBh
cmVudE5vZGUoKSkKKyAgICAgICAgbi0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKK30KKwor
TXV0YXRpb25UYXJnZXREYXRhKiBOb2RlOjptdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIHJl
dHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRpb25UYXJnZXREYXRhKCkgOiAw
OworfQorCitNdXRhdGlvblRhcmdldERhdGEqIE5vZGU6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0
YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU11dGF0aW9uVGFyZ2V0
RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCAxYTk5MmU1NDZiMTE2OGM4MzdlYzc5MTE1NmQxODdmZjE5YWQ2MmQ3Li5k
NzkzODM2YjdmYzY1ZGVmOTUzMTk1ZTFlNDE3MTg3NmY0ZDRhODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VS
TEhhc2guaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAi
VHJlZVNoYXJlZC5oIgpAQCAtOTMsNyArOTQsNyBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAg
ICAgU3ludGhldGljU3R5bGVDaGFuZ2UgPSAzIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0CiB9Owog
Ci1jbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitjbGFzcyBOb2RlIDogcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKICAgICBmcmllbmQgY2xhc3Mg
RG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKIApAQCAtNTc3LDYgKzU3OCwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+KTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJn
ZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0aW9u
VGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAg
SXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggYWFjZWYxNWI2NjViNTBlNjE5NDA1
MGRjZThkM2EwMTdjYzE0ZjZkNS4uMzJhYjIyYjJiYjIzZTc0YjFiYmUzNjhiYTlkZTljZjc4YzI1
OTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbApAQCAtMTU5LDYgKzE1OSwxMSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogI2VuZGlmCiAKKyNpZiAhZGVm
aW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAg
ICAgIFtDdXN0b21dIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxp
c3RlbmVyIGxpc3RlbmVyLCBpbiBNdXRhdGlvblR5cGVzIHR5cGVzKTsKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIg
bGlzdGVuZXIpOworI2VuZGlmCisKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKaW5kZXggYjkyMWEyM2EyMzdmMmM0N2Y2NzQ2NWJlZGNjZjQxNzY0ZjllOTNjOS4uMWVhMDlh
MDliY2Q3NWRhYzRhOGVhYTRkYWI1OWZmNmIyZDQwZGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0
YS5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgpAQCAtMTIxLDYgKzEyMiwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YS5nZXQoKTsKICAgICB9CiAKKyAgICBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRh
dGlvblRhcmdldERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0RGF0
YSkKKyAgICAgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIobmV3IE11dGF0
aW9uVGFyZ2V0RGF0YSk7CisgICAgICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQo
KTsKKyAgICB9CisKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb2N1
c2VkOyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkgeyBtX2lzRm9jdXNlZCA9
IGZvY3VzZWQ7IH0KIApAQCAtMTMzLDYgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVHJlZVNjb3Bl
KiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3Rz
OwogICAgIE93blB0cjxFdmVudFRhcmdldERhdGE+IG1fZXZlbnRUYXJnZXREYXRhOworICAgIE93
blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJnZXREYXRhOwogICAgIHNob3J0
IG1fdGFiSW5kZXg7CiAgICAgYm9vbCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA6IDE7CiAg
ICAgYm9vbCBtX2lzRm9jdXNlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3Rl
cmVkTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMWI3MjgxY2Y2ZDMxNWI2YWNkZjQy
NzJmMjFjYTcwZmZjNzcwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IGwsIGNvbnN0IE11dGF0aW9uVHlwZXMmIHQpCisgICAgICAgIDogbGlz
dGVuZXIobCkKKyAgICAgICAgLCB0eXBlcygwKQorICAgIHsKKyAgICAgICAgbWVyZ2VUeXBlcyh0
KTsKKyAgICB9CisKKyAgICB2b2lkIG1lcmdlVHlwZXMoY29uc3QgTXV0YXRpb25UeXBlcyYgbmV3
VHlwZXMpCisgICAgeworICAgICAgICB0eXBlcyB8PSBuZXdUeXBlcy5jaGlsZGxpc3QoKSA/IE11
dGF0aW9uVHlwZXM6OkNoaWxkbGlzdCA6IDA7CisgICAgICAgIHR5cGVzIHw9IG5ld1R5cGVzLmF0
dHJpYnV0ZSgpID8gTXV0YXRpb25UeXBlczo6QXR0cmlidXRlIDogMDsKKyAgICAgICAgdHlwZXMg
fD0gbmV3VHlwZXMuY2hhcmFjdGVyZGF0YSgpID8gTXV0YXRpb25UeXBlczo6Q2hhcmFjdGVyZGF0
YSA6IDA7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRNdXRh
dGlvbkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqbGlzdGVu
ZXIgPT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVzOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3ZDIxYjk2MmExZGIyYjBhMDZlNjNl
OTA2YmI2N2QzZjJkLi5mYjdlYjBjZDhiMWY4NWExOTJhOTBkNzFlMTkwNmU0NmQ3MmU3ZDAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgpAQCAtMTg4Myw0ICsxODg0LDkgQEAgU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6
d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogfQogI2VuZGlmCiAKK3ZvaWQgRE9NV2luZG93Ojpz
cGluTXV0YXRpb25RdWV1ZSgpCit7CisgICAgOjpXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRl
eCBhMmFkODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZkLi5kYzliMDFkYzVjY2Fj
NjQ5OGZjYWRmMjNlYTI3Yjc3M2I3NDdhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAg
LTQxNCw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBlcmZvcm1hbmNl
KiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBzcGluTXV0YXRp
b25RdWV1ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2luZG93KEZyYW1lKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwMzY2YTFmYjdlMTQ3NTVlZTE1
NTRhOGEzYzBmZWMxMTk2Li42MjI3MTU3MDIzOTNhODk3MDQzZTFhM2MzODQyMmRmNGUyOGUzY2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC04MDMsNiArODAzLDExIEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICAvLyB3aW5kb3cudG9TdHJpbmcoKSByZXF1aXJlcyBzcGVjaWFs
IGhhbmRsaW5nIGluIFY4CiAgICAgICAgIFtWOERvTm90Q2hlY2tTaWduYXR1cmUsIERvTm90Q2hl
Y2tEb21haW5TZWN1cml0eSwgQ3VzdG9tLCBEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7
CiAjZW5kaWYgLy8gZGVmaW5lZChWOF9CSU5ESU5HKQorCisgICAgICAgIC8vIEZJWE1FKGFkYW1r
KTogRE8gTk9UIFNVQk1JVAorICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGV4cG9zZWQgdG8g
SlMgdW50aWwgZW1iZWRkZXJzIGFyZSBtb2RpZmllZCB0byBjYWxsIHNwaW5NdXRhdGlvblF1ZXVl
KCkKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiBlYWNoIHRhc2suCisgICAgICAgIHZvaWQgc3Bp
bk11dGF0aW9uUXVldWUoKTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104930</attachid>
            <date>2011-08-23 16:42:09 -0700</date>
            <delta_ts>2011-08-24 11:45:23 -0700</delta_ts>
            <desc>Replace MutationRecordList with an array of MutationRecords</desc>
            <filename>bug-66079-20110823164208.patch</filename>
            <type>text/plain</type>
            <size>111032</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJj
NmQxYjc5Njk2Yzc5NGEzNWJiLi44NjgxMGFkMTAyZDViYzU5YjFkMmY2NjlhMzRmZDdjNzY2OTk2
NDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTEgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFu
IHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5lIHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29t
cGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMGIxZmEzZjEyNzNlNTFmOGU2MGE2ZDBmMTZmMTIxODVh
M2Q4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IE11dGF0aW9u
TGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG11dGF0aW9uc1swXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVkTm9kZXNb
MF0KK1BBU1MgbXV0YXRpb25zWzFdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1sx
XQorUEFTUyBtdXRhdGlvbnNbMl0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRlZE5vZGVzWzJd
CitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBsaXN0ZW5lckNh
bGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgdGV4dE5vZGVzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Yzc3
YTg4NDQyMGQzMDJjMDUwN2M4NGVlM2JlZGI2MWI3OWEzMzg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDk0
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICA8ZGl2
IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlwdD4KKyAg
ICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4
cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgdmFyIGxp
c3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBpbnNlcnRlZE5vZGVzOworICAgICAg
ICB2YXIgcmVtb3ZlZE5vZGVzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRyczsKKyAgICAgICAg
dmFyIHRleHROb2RlczsKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAg
ICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAg
ICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVk
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbVtpXS5pbnNl
cnRlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWycgKyBpICsgJ10uaW5zZXJ0ZWROb2Rlc1snICsgaiArICddJywgJ2luc2Vy
dGVkTm9kZXNbJyArIChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5v
ZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBp
ICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4
dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnNlcnRlZE5vZGVzID0gW107CisgICAgICAg
ICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsK
KyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJibGlu
ZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIHZhciBpbm5lclNhbmRib3ggPSBzYW5kYm94LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHZhciBhID0gc2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgICAgICBhLnRleHRDb250ZW50ID0gJ2hlbGxvLCB3b3JsZCc7Cisg
ICAgICAgIHZhciBiID0gaW5uZXJTYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGluc2VydGVkTm9kZXMgPSBbYSwgYS5maXJzdENoaWxk
LCBiXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFkZE11
dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgaW5u
ZXJTYW5kYm94LnJlbW92ZUNoaWxkKGIpOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAg
bW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgaW5uZXJTYW5kYm94LnNldEF0
dHJpYnV0ZSgnZGF0YS1mb28nLCAnbXlkYXRhJyk7CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVl
KCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgbGlz
dGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0
YXRpb24uCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5l
ciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RD
aGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBz
YW5kYm94LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7CisgICAgICAg
IHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlRmFsc2UoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgIDwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNkZDczMGY0MmNl
ZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uYjZhMzA4OTFkYmQwM2VkY2U4MWMyMzI3MGI1Nzc3
YjczYWI5ZjNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxMS0wOC0xMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBpbiBwcm9ncmVz
c10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEgcmVwbGFjZW1l
bnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJpbWVudGFsLCB2
ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZlbnR1YWxseSBy
ZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAgICAgICAgbGFy
Z2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNzYWdlIHRvIHB1
YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVi
bGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAgICAgVGhhdCB0
aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1hcml6ZWQgYnkK
KyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgorCisgICAgICAg
IGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFK
dWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggaXMgaW4gbm8g
d2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBi
aWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5nCisgICAgICAg
IG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRhdGlvbkxpc3RlbmVyczogdGhlIGluY2x1
ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQgY2FsbHMgYSAic3Bpbk11dGF0aW9uUXVl
dWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4gVGhpcyBpcyBu
b3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0byBKUywKKyAgICAgICAgdGhvdWdoOiBt
eSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0YXRpb25RdWV1ZSBmcm9tCisgICAgICAg
IEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdlYkNvcmUgb3IgKG1vcmUgbGlrZWx5KSBp
bgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBhIHNlcGFyYXRlIGNoYW5nZSB3aGljaCBp
bXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4gQ2hyb21pdW0uCisKKyAgICAgICAgVGhl
IG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhhdCBNdXRhdGlv
blJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRjaGVkIGluIGFsbCB0aGUgcHJvcGVyIHBs
YWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAgICAgIGlubmVySFRNTCBpcyBub3QgYXMg
d2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YKKyAgICAgICAgd2Fu
dGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQgZmVlZGJhY2s6IGl0IHNob3VsZG4ndCBi
ZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0aW9uUmVjb3JkIGRpc3BhdGNoaW5nIGlu
IGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4KKworICAgICAgICBUZXN0OiBmYXN0L2Rv
bS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRp
b25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3Rl
bmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5l
cjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjppc29sYXRlZFdvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6d3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBwZXIpOgorICAgICAgICBKU011dGF0aW9u
TGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZlbnRMaXN0ZW5lciwKKyAgICAgICAgd2l0
aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVhc29uIGZvciBleGlzdGluZworICAgICAg
ICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciBuZWVkcyB0byBiZWhhdmUK
KyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBpbiB0aGF0IGR1cGxpY2F0ZSBhZGRpdGlv
bnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVxdWlyZXMgdGhlIG9wZXJhdG9yPT0gbWV0
aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcgdGhlIHNhbWUg
TXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFuIG9uY2UgdG8gYSBnaXZlbiBsaXN0ZW5l
ciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBhIEhhc2hNYXAsIHRodXMgdGhlIHxoYXNo
fCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm9kZTo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGU6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIpOgorICAgICAg
ICBTaW5jZSBNdXRhdGlvbkxpc3RlbmVycyB0aGVtc2VsdmVzIGFyZSBjdXN0b20sIHNvCisgICAg
ICAgIG11c3QgYmUgbXV0YXRpb24gbGlzdGVuZXIgYWRkaXRpb24gYW5kIHJlbW92YWwuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZXRJ
bnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6OmdldE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0
ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlz
cG9zZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpo
YXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxi
YWNrLmguCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpnZXRMaXN0ZW5lck9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpkb0ZpbmRX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZp
bmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICBUaGUgVjggZXF1aXZhbGVudHMgb2YgdGhlIEpT
TXV0YXRpb25MaXN0ZW5lciBhYm92ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICBHZW5lcmFsaXplZCBpbnZva2VDYWxs
YmFjayB0byBtYWtlIGl0IHN1aXQgdGhlIHB1cnBvc2VzIG9mCisgICAgICAgIFY4TXV0YXRpb25M
aXN0ZW5lcjo6aGFuZGxlRXZlbnQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OndlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OndlYmtpdFJlbW92
ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIEFuZCB0aGUgZXF1aXZhbGVudCBj
dXN0b20gbWV0aG9kcyBvbiBOb2RlLgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6
CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZElu
c2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3ZhbEV2
ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11dGF0aW9ucy4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1
dGUpOgorICAgICAgICBEaXNwYXRjaCAiYXR0cmlidXRlIiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL011dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bkxpc3RlbmVyOjp+TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgICogZG9tL011dGF0aW9uTGlz
dGVuZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0
YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjp+TXV0YXRpb25SZWNvcmQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uUmVjb3JkOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Omluc2VydGVk
Tm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnJlbW92ZWROb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV4dE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmF0dHJOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uUmVjb3JkOjpwcmV2VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNv
cmQ6Om5ld1ZhbHVlKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaWRsOiBBZGRlZC4K
KyAgICAgICAgTXV0YXRpb25SZWNvcmRzIGFyZSBhbmFsb2dvdXMgdG8gRXZlbnRzOiB0aGV5IGhv
bGQgZGF0YQorICAgICAgICBhYm91dCBhIHNpbmdsZSBtdXRhdGlvbi4KKyAgICAgICAgKiBkb20v
TXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29u
dGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6OmVxdWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlTXV0
YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uVGFyZ2V0OjphZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlv
blRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25UYXJnZXQgaXMgYW5hbG9nb3VzIHRv
IEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBtaXhpbiBmb3IgTm9kZS4KKyAgICAgICAgKiBkb20vTXV0
YXRpb25UYXJnZXREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJn
ZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
YXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgTXV0YXRpb25UYXJnZXRE
YXRhIGlzIG1lYW50IHRvIGJlIHBhcnQgb2YgTm9kZVJhcmVEYXRhLgorICAgICAgICAqIGRvbS9N
dXRhdGlvblR5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVz
OjpjaGlsZGxpc3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OmF0dHJp
YnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y2hhcmFjdGVyZGF0
YU5hbWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uVHlwZXM6OmNoaWxkbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpz
ZXRDaGlsZGxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6YXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldENoYXJhY3RlcmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25UeXBlczo6TXV0YXRpb25UeXBlcyk6CisgICAgICAgICogZG9tL011dGF0aW9u
VHlwZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgQSBzaW1wbGUgb2JqZWN0IHRoYXQncyB0aGUgc2Vj
b25kIGFyZ3VtZW50IHRvIGFkZE11dGF0aW9uTGlzdGVuZXIuCisgICAgICAgICogZG9tL05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNdXRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgTXV0YXRpb25UYXJnZXQg
aW1wbGVtZW50YXRpb24uCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9k
ZS5pZGw6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9SZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6bWVyZ2VUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUgdGhhdCB0aGVzZSBjaGFu
Z2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNoYW5nZSwKKyAgICAg
ICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0byBkZWFsIHdpdGggbXV0
YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUtdG8tcnVuIGlzc3Vl
cy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRhNWEyZTc2M2FkOTZjNTM3
MC4uNWVjNWQ5ODU3YWE0NzI3ZjQ3Y2RlNWQyMjRjZTY1N2ZjYThlMWIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCw5IEBACiAjaW5jbHVkZSAiSlNNZXRhZGF0
YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpT
TXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCIKKyNp
bmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uVHlwZXMu
Y3BwIgogI2luY2x1ZGUgIkpTTmFtZWROb2RlTWFwLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRv
ci5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyNmI2MGFiMzEzMWQ5YWU0ZjZmMjM2MzQxNzEyNTBm
NmE1NWMwN2Y4Li5mZDNjZTI1NDc0NDYwNmFlYjkzOWQxNjRiZGVjZWFkM2ZlZmU0YmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMxNSw2ICszMTUsOSBAQCBET01fQ0xBU1NF
UyA9IFwKICAgICBNZXRhZGF0YUNhbGxiYWNrIFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRh
dGlvbkV2ZW50IFwKKyAgICBNdXRhdGlvbkxpc3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBc
CisgICAgTXV0YXRpb25UeXBlcyBcCiAgICAgTmFtZWROb2RlTWFwIFwKICAgICBOYXZpZ2F0b3Ig
XAogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yIFwKQEAgLTU3MSw3ICs1NzQsNyBAQCBET01f
Q0xBU1NFUyA9IFwKIAogLlBIT05ZIDogYWxsCiAKLUpTX0RPTV9IRUFERVJTPSQoZmlsdGVyLW91
dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBKU0V2ZW50VGFy
Z2V0LmgsJChET01fQ0xBU1NFUzolPUpTJS5oKSkKK0pTX0RPTV9IRUFERVJTPSQoZmlsdGVyLW91
dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBKU0V2ZW50VGFy
Z2V0LmggSlNNdXRhdGlvbkxpc3RlbmVyLmgsJChET01fQ0xBU1NFUzolPUpTJS5oKSkKIAogV0VC
X0RPTV9IRUFERVJTIDo9CiBpZmVxICgkKGZpbmRzdHJpbmcgQlVJTERJTkdfV1gsJChGRUFUVVJF
X0RFRklORVMpKSwgQlVJTERJTkdfV1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCmluZGV4IGY1MTg2MDBhNGUxNDE5ZDA5NjkzZjllMDM2NDA2MTkxY2MyZjFhNGMuLjk5YWE3
OWE3NWM5NWYyMzZiMmJmODM3ODc4ZmQyNWEwNWUxZTRiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0yMzEsNiArMjMxLDcgQEAKICAgICAgICMgQ3VzdG9tIGJp
bmRpbmdzIGluIGJpbmRpbmdzL3Y4L2N1c3RvbSBleGlzdCBmb3IgdGhlc2UuCiAgICAgICAnLi4v
ZG9tL0V2ZW50TGlzdGVuZXIuaWRsJywKICAgICAgICcuLi9kb20vRXZlbnRUYXJnZXQuaWRsJywK
KyAgICAgICcuLi9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAogICAgICAgJy4uL2h0bWwvVm9p
ZENhbGxiYWNrLmlkbCcsCiAKICAgICAgICMgQmluZGluZ3Mgd2l0aCBjdXN0b20gT2JqZWN0aXZl
LUMgaW1wbGVtZW50YXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE2ODQ0YjcxMDE3OGE3MTIy
MThmZmQ2MDZhMmNiYzIzM2QwY2QwNzIuLjRlNDBlYjJlYTQ3OTdjNzRhM2ZjZjBmMmVkZGNkNzAy
YTA0ZWY1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExNzksNiArMTE3OSw5IEBACiAgICAgICAg
ICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAgICAgICAgICAnZG9tL01vdXNlRXZlbnQu
aWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5pZGwnLAorICAgICAgICAgICAg
J2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uUmVj
b3JkLmlkbCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVHlwZXMuaWRsJywKICAgICAgICAg
ICAgICdkb20vTmFtZWROb2RlTWFwLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGUuaWRsJywK
ICAgICAgICAgICAgICdkb20vTm9kZUZpbHRlci5pZGwnLApAQCAtMjA3Nyw2ICsyMDgwLDkgQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlv
bkxpc3RlbmVyTWFuYWdlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUE9iamVjdC5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwJywKQEAgLTUzMjYsNiArNTMzMiwxNCBAQAog
ICAgICAgICAgICAgJ2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaCcs
CisgICAgICAgICAgICAnZG9tL011dGF0aW9uTGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnZG9t
L011dGF0aW9uUmVjb3JkLmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmgn
LAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldC5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvblRhcmdldC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXREYXRh
LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblR5cGVzLmNwcCcsCisgICAgICAgICAgICAn
ZG9tL011dGF0aW9uVHlwZXMuaCcsCiAgICAgICAgICAgICAnZG9tL05hbWVOb2RlTGlzdC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL05h
bWVkTm9kZU1hcC5jcHAnLApAQCAtNTM2Nyw2ICs1MzgxLDcgQEAKICAgICAgICAgICAgICdkb20v
UmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNl
ci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKKyAg
ICAgICAgICAgICdkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCcsCiAgICAgICAgICAg
ICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2Rv
bS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVl
dWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMGJhODQ2NDYzZTUyN2RlNmZkYTMwYWI3OTk2OGU2ZWFiNGM5YTJiZC4uYTgw
N2NiMTU1NDlkMGZmY2I1OTYzYjBkMGM1NzYwZDM5MjE3ZTM3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQxMCw5ICs1NDEw
LDIwIEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RDRBQTc4MTE2
QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3RTEzMDBDN0JCMUEgLyog
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5oICovOyB9OworCQlDNjcxREEzRTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJl
Y29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJ
CUM2NzFEQTNGMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcxREEzOTEzRTM3MTQ5MDA1
NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovOyB9OworCQlDNjcxREE0MjEzRTM3MTQ5MDA1
NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTNDMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9u
VHlwZXMuY3BwICovOyB9OworCQlDNjcxREE0MzEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlv
blR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NjcxREEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi87IH07CisJCUM2
NzJBMkQzMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzJBMkQyMTNGMzRDNEEwMDk0
MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAw
MEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBB
NTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OwogCQlDNkY0MTA0NzEzMEM2RTg5MDAzOTNE
RTQgLyogRW50cnlCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovOyB9
OworCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDAxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLzsgfTsKKwkJQzZGNjcxNTQxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blRhcmdldC5jcHAgKi87IH07CisJCUM2RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzZGNjcxNTYxM0UzNUU1RTAw
REUzQjlDIC8qIE11dGF0aW9uVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDgxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlw
ZXMuY3BwICovOyB9OworCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovOyB9
OworCQlDNkY2NzE1RDEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QjEzRTM1
RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi87IH07CiAJCUNBM0JGNjdDMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3QjEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuY3BwICovOyB9OwogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyB9Owog
CQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAz
MDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIxMzcsOSAr
MTIxNDgsMjcgQEAKIAkJQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01h
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaE1ldHJpY3NNYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8q
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzgxM0UzNzE0OTAw
NTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUM2NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBM0MxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0
YXRpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011
dGF0aW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzRDEz
RTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTXV0YXRpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNjcyQTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9k
aWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2MTMwQzZF
ODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRp
b25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRjEzRTM1
RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gTXV0YXRpb25MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJl
Y29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJlY29yZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25SZWNvcmQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uUmVj
b3JkLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDYxM0UzNUU1RTAw
REUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM2RjY3MTQ4MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5cGVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9uVHlwZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0OTEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
dXRhdGlvblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTRBMTNF
MzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNdXRhdGlvblR5cGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcx
NEIxM0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAv
KiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5
OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzE1OSw2ICsxMzE4OCw3IEBACiAJCQkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRBIC8q
IEZpbGVBUEkgKi8sCiAJCQkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8sCiAJ
CQkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLywKKwkJCQlDNjcxREE0
NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJMzM1MDNDOUMxMDE3OUE5QTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMUFDMjI2MDIwREI2OUVBNzAwODlCNjY5
IC8qIE9mZmxpbmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMg
Ki8sCkBAIC0xNTQwNSw2ICsxNTQzNSw3IEBACiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0MzA1
IC8qIEV2ZW50cyAqLywKIAkJCQk4NUM1NkQwMzBBQThCQUE3MDBEOTU3NTUgLyogSFRNTCAqLywK
IAkJCQk4NUU3MTEzRDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCisJCQkJQzY3MURB
NUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTg1MzhGMDU3MEFENzIyQjkw
MDZBODFEMSAvKiBSYW5nZXMgKi8sCiAJCQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8qIFN0
eWxlU2hlZXRzICovLAogCQkJCTg1QTBGOThFMEFDNzE2RjQwMDE2MUZEQyAvKiBTVkcgKi8sCkBA
IC0xODUxMyw2ICsxODU0NCw4IEBACiAJCQkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpT
RXhjZXB0aW9uQmFzZS5oICovLAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAv
KiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKKwkJCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLywKKwkJCQlDNkY2NzE1QjEzRTM1RUIyMDBE
RTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAogCQkJCTE0
Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCkBA
IC0xOTE2OCw2ICsxOTIwMSwyNCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAw
OwogCQl9OworCQlDNjcxREE0NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUM2NzFEQTM4MTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJCQlDNjcxREEzOTEzRTM3MTQ5
MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovLAorCQkJCUM2NzFEQTNDMTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuY3BwICovLAorCQkJCUM2NzFEQTNEMTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuaCAqLywKKwkJCSk7CisJCQluYW1lID0gTXV0YXRp
b247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDNjcxREE1RDEzRTM3MUI5
MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5OTE0LDYgKzE5OTY1
LDE3IEBACiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuY3Bw
ICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmggKi8s
CiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11dGF0aW9uRXZlbnQuaWRsICovLAor
CQkJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmggKi8sCisJ
CQkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaWRsICovLAor
CQkJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8sCisJ
CQkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8sCisJCQkJ
QzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywKKwkJCQlD
NkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovLAorCQkJCUM2
RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovLAorCQkJCUM2NzJB
MkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLywKKwkJCQlDNkY2
NzE0ODEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UeXBlcy5jcHAgKi8sCisJCQkJQzZGNjcx
NDkxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlwZXMuaCAqLywKKwkJCQlDNkY2NzE0QTEz
RTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UeXBlcy5pZGwgKi8sCiAJCQkJQkNGMzRBMzYxMUEy
MzFDRDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgKi8sCiAJCQkJQTgxODcyMTgwOTc3RDND
MDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oICovLAogCQkJCTg1QUNBOUY5MEE5QjYzMTAwMDY3
MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovLApAQCAtMTk5NzgsNiArMjAwNDAsNyBAQAogCQkJ
CUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywK
IAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
Y3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBS
ZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi8sCiAJCQkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQz
IC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICovLAogCQkJCTlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0
MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8sCkBAIC0yMjAzMiw2ICsyMjA5NSw5IEBACiAJCQkJ
ODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpT
TXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAw
NTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzFEQTQz
MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5IC8qIEpTTmF2aWdhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjQwNSw2ICsyMjQ3MSw4IEBACiAJCQkJ
QjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIxQUQ0RTYzMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QTBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZGNjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjcyQTJEMzEzRjM0QzRBMDA5NDIz
Q0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5
NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4
NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2MTgxLDYgKzI2MjQ5LDEyIEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5REU3
OTA0MTNGMTZDN0YwMDA3RkNERiAvKiBKYXZhTWV0aG9kSlNDLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUM2RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDNkY2NzE1NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNTYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNUMxM0UzNUVCMjAwREUzQjlD
IC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNjcxREEzRTEz
RTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDNjcxREE0MjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bkxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0
ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyYTY1MDczODJiZWM0NzRkNDYyYzgzYzEyNTUyMzhlMTM4
N2QyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU011
dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25S
ZWNvcmQuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTTXV0YXRpb25M
aXN0ZW5lcjo6SlNNdXRhdGlvbkxpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fd3JhcHBl
cigqaXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQorICAgICwgbV9pc29sYXRl
ZFdvcmxkKGlzb2xhdGVkV29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNG
dW5jdGlvbi5zZXRNYXlCZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFw
cGVyLCBmdW5jdGlvbik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKwor
fQorCitKU011dGF0aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIoKQoreworfQorCit2
b2lkIEpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rv
cj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0
YXRpb25zID0gcG9wTXV0YXRpb25zOworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VS
VCghbXV0YXRpb25zLT5pc0VtcHR5KCkpOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmpl
Y3QqIGpzRnVuY3Rpb24gPSBtX2pzRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+
aW1wbCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBUaGUgd2luZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgorICAgIC8vIEZJWE1F
OiBBIGJldHRlciBmaXggZm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01XaW5kb3c6OmZyYW1l
KCkgdG8gbm90IHJldHVybiBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cgdXNlZCB0byBiZSBp
bi4KKyAgICBpZiAoZnJhbWUtPmRvbVdpbmRvdygpICE9IHdpbmRvdy0+aW1wbCgpKQorICAgICAg
ICByZXR1cm47CisgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBj
b250ZXh0cz8KKyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7
CisgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0
KSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUgaGFuZGxl
RXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJo
YW5kbGVFdmVudCIpKTsKKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5j
dGlvbiA9IEpTVmFsdWUoKTsKKyAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxs
RGF0YShjYWxsRGF0YSk7CisgICAgfQorCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9u
ZSkgeworICAgICAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtdXRhdGlvbkxpc3Q7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG11
dGF0aW9uTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQo
aSkuZ2V0KCkpKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAg
ICBhcmdzLmFwcGVuZChjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9u
TGlzdCkpOworCisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFs
T2JqZWN0U2NvcGUoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8g
Z2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAg
ICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVF
dmVudEZ1bmN0aW9uKQorICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwg
YXJncyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1
cmUgb3V0IHdoYXQgdGhlIHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAg
ICAgLy8gRG9jdW1lbnQgb3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50
VGFyZ2V0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoMCktPnRhcmdl
dCgpKTsKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOworICAgICAg
ICB9CisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOworCisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNl
cHRpb24oZXhlYyk7CisgICAgfQorfQorCitib29sIEpTTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0
b3I9PShjb25zdCBNdXRhdGlvbkxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBjb25zdCBKU011
dGF0aW9uTGlzdGVuZXIqIGpzTXV0YXRpb25MaXN0ZW5lciA9IHN0YXRpY19jYXN0PGNvbnN0IEpT
TXV0YXRpb25MaXN0ZW5lcio+KCZsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9
PSBqc011dGF0aW9uTGlzdGVuZXItPm1fanNGdW5jdGlvbjsKK30KKwordW5zaWduZWQgSlNNdXRh
dGlvbkxpc3RlbmVyOjpoYXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8SlNDOjpKU09i
amVjdCo+OjpIYXNoOjpoYXNoKG1fanNGdW5jdGlvbi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxp
c3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmYTE2YzlmMzc3NWZjMzJhOTlhNmVlN2M5MmQ3NThiN2Iy
ZGUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgSlNNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUg
SlNNdXRhdGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNp
bmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9Xcml0ZUJhcnJpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3Mg
SlNNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTTXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQq
IGlzb2xhdGVkV29ybGQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTXV0
YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkpTTXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpOworICAgIHZpcnR1YWwg
dW5zaWduZWQgaGFzaCgpOworCisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CisKKyAgICBKU0M6OkpTT2Jq
ZWN0KiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKSBjb25zdCB7IG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7
IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCitwcml2
YXRlOgorICAgIEpTTXV0YXRpb25MaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlND
OjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKwor
ICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9u
OworICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKworICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTTXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCA1MWUzYmI4NmFhZWUz
MmI1ZjIxNjU5YmUxMzdjODJhNDQzMmZkZjExLi5jYTg2ZGQyZWFiZTM2NzlmYzU4ZjZiMTk5YjJj
NTRjYzUzZTBmNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAKQEAgLTU4LDkgKzU4LDExIEBACiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpT
Tm90YXRpb24uaCIKICNpbmNsdWRlICJKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTVGV4dC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVHlwZXMuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiTm90YXRpb24uaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCIKQEAgLTIwNSw2ICsyMDcsNDMgQEAgdm9pZCBKU05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZSkp
OwogfQogCitKU1ZhbHVlIEpTTm9kZTo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICBKU1ZhbHVlIGpzVHlwZXMgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBpZiAo
IWpzVHlwZXMuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAg
ICBKU09iamVjdCoganNUeXBlc09iamVjdCA9IGFzT2JqZWN0KGpzVHlwZXMpOworICAgIFJlZlB0
cjxNdXRhdGlvblR5cGVzPiB0eXBlcyA9IE11dGF0aW9uVHlwZXM6OmNyZWF0ZSgpOworICAgIEpT
VmFsdWUganNDaGlsZGxpc3QgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAiY2hpbGRsaXN0IikpOworICAgIGlmIChqc0NoaWxkbGlzdC5pc0Jvb2xlYW4oKSkKKyAg
ICAgICAgdHlwZXMtPnNldENoaWxkbGlzdChqc0NoaWxkbGlzdC5nZXRCb29sZWFuKCkpOworICAg
IEpTVmFsdWUganNBdHRyaWJ1dGUgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiYXR0cmlidXRlIikpOworICAgIGlmIChqc0F0dHJpYnV0ZS5pc0Jvb2xlYW4oKSkK
KyAgICAgICAgdHlwZXMtPnNldEF0dHJpYnV0ZShqc0F0dHJpYnV0ZS5nZXRCb29sZWFuKCkpOwor
ICAgIEpTVmFsdWUganNDaGFyYWN0ZXJkYXRhID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgImNoYXJhY3RlcmRhdGEiKSk7CisgICAgaWYgKGpzQ2hhcmFjdGVyZGF0
YS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgdHlwZXMtPnNldENoYXJhY3RlcmRhdGEoanNDaGFyYWN0
ZXJkYXRhLmdldEJvb2xlYW4oKSk7CisKKyAgICBpbXBsKCktPmFkZE11dGF0aW9uTGlzdGVuZXIo
SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBjdXJy
ZW50V29ybGQoZXhlYykpLCB0eXBlcyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisK
K0pTVmFsdWUgSlNOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIGltcGwoKS0+cmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVuZXI6
OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGN1cnJlbnRXb3JsZChleGVjKSkuZ2V0
KCkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCisKIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgY3JlYXRlV3JhcHBlcklubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQppbmRleCBkNmMwZmUwZTA0NGQ0ZWU0ZGE5ZThlNjRhMTFmYjA5NGJlNTMyNTIyLi43OTAz
ZWVmZDFlMjExYmRkM2Y3ZGMxMmQ4YmFlMmJhMWYyYjExNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDc5LDYgKzQ3
OSwxMCBAQCBzdWIgR2V0SW50ZXJuYWxGaWVsZHMKICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJu
YWxGaWVsZHMsICJldmVudExpc3RlbmVyQ2FjaGVJbmRleCIpOwogICAgIH0KIAorICAgIGlmIChJ
c05vZGVTdWJUeXBlKCRkYXRhTm9kZSkpIHsKKyAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxG
aWVsZHMsICJtdXRhdGlvbkxpc3RlbmVyQ2FjaGVJbmRleCIpOworICAgIH0KKwogICAgIGlmICgk
bmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxk
cywgImVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgiKTsKICAgICB9CkBAIC0zMjU1LDYgKzMyNTks
MTEgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICByZXR1cm4gIiR7dmFsdWV9ID8gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4o
JHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdChpbXAtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIjsKICAgICB9CiAKKyAgICBp
ZiAoJHR5cGUgZXEgIk11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7
IlY4TXV0YXRpb25MaXN0ZW5lci5oIn0gPSAxOworICAgICAgICByZXR1cm4gIiR7dmFsdWV9ID8g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KCR7
dmFsdWV9KS0+Z2V0TGlzdGVuZXJPYmplY3QoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6
Ok51bGwoKSkiOworICAgIH0KKwogICAgIGlmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlIikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOwogICAgICAgICBy
ZXR1cm4gIiR2YWx1ZS0+ZGVzZXJpYWxpemUoKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAppbmRleCAwODZhM2EyMTk2MWRjMjgwOWEyMDdjZmJhZTdmNTJk
MDdlM2RmODFjLi44NjBmMDEzYzcwNTU3NjhjY2IxZTE3MmRkZWRjNGNhYmU2ZWRmZmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTYwLDYgKzYw
LDggQEAKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIlY4TWVzc2FnZUNoYW5uZWwuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVjhOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOE5v
ZGVGaWx0ZXJDb25kaXRpb24uaCIKQEAgLTQ4MSw2ICs0ODMsMTkgQEAgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmEKICNlbmRpZgogfQogCitQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IFY4RE9N
V3JhcHBlcjo6Z2V0TXV0YXRpb25MaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
TGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKKyAgICBpZiAoY29udGV4dC5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChsb29rdXAgPT0gTGlzdGVuZXJG
aW5kT25seSkKKyAgICAgICAgcmV0dXJuIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRX
cmFwcGVyKHZhbHVlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbFByb3RvdHlw
ZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29udGV4dC0+R2xvYmFsKCktPkdldFBy
b3RvdHlwZSgpKTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0UHJvdG90eXBlSXNET01XaW5kb3coZ2xv
YmFsUHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6
OmZpbmRPckNyZWF0ZVdyYXBwZXIodmFsdWUpOworICAgIHJldHVybiAwOworfQorCiAjaWYgRU5B
QkxFKFhQQVRIKQogLy8gWFBhdGgtcmVsYXRlZCB1dGlsaXRpZXMKIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+IFY4RE9NV3JhcHBlcjo6Z2V0WFBhdGhOU1Jlc29sdmVyKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgVjhQcm94eSogcHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5oCmluZGV4IGViMjIwNTE3MmIzYzk0YjA4YWU2N2Y1NTRiMjBhZWUyODgxNDlm
OTAuLmUwZGMxMjViOGEyOTk0ZWVmZGJjYjVjZjRkZDg2MDcyZjFlYTU3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC04OSw2ICs4OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252
ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0Kik7CiAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1
cCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGdldE11dGF0
aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIExpc3RlbmVyTG9va3VwVHlwZSk7CiAK
ICNpZiBFTkFCTEUoWFBBVEgpCiAgICAgICAgIC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaApp
bmRleCBkZWJhNGE1MWQ3NzgwNzkwOTMzMjY3YjkyZDFmNjQwMmEyNzRmMDNmLi5kM2FiYjAxZmRj
OGJlZWIzN2YwMTlhZWJmY2JkODc0Yjg5ZThkOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIFYob2JqZWN0UHJvdG90eXBlKSBcCiAgICAgVihsaXN0ZW5l
cikgXAogICAgIFYoYXR0cmlidXRlTGlzdGVuZXIpIFwKKyAgICBWKG11dGF0aW9uTGlzdGVuZXIp
IFwKICAgICBWKHNjcmlwdFN0YXRlKSBcCiAgICAgVihkZXZ0b29sc0luamVjdGVkU2NyaXB0KSBc
CiAgICAgVihzbGVlcEZ1bmN0aW9uKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmQwMmYyMGEwODQ4MmQwNTk0
OGM2ZDY5YTBhY2Q0ZWM0MGUyOWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlz
dGVuZXIuaCIKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJWOEN1c3RvbVZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRp
b25SZWNvcmQuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5j
dGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOE11dGF0aW9uTGlzdGVuZXI6OlY4
TXV0YXRpb25MaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdv
cmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIDogbV9saXN0ZW5lcih2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGxpc3RlbmVyKSkKKyAgICAsIG1fd29ybGRDb250ZXh0
KHdvcmxkQ29udGV4dCkKK3sKKyAgICBtX2xpc3RlbmVyLk1ha2VXZWFrKHRoaXMsICZ3ZWFrTXV0
YXRpb25MaXN0ZW5lckNhbGxiYWNrKTsKK30KKworVjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRh
dGlvbkxpc3RlbmVyKCkKK3sKKyAgICBpZiAoIW1fbGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAg
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgVjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlcjo6Y2xlYXJXcmFwcGVyKGxpc3RlbmVyKTsKKyAgICB9CisgICAgZGlzcG9zZUxp
c3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVyOjp3ZWFrTXV0YXRp
b25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFt
ZXRlcikKK3sKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8
VjhNdXRhdGlvbkxpc3RlbmVyKj4ocGFyYW1ldGVyKTsKKyAgICBsaXN0ZW5lci0+ZGlzcG9zZUxp
c3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVyOjpkaXNwb3NlTGlz
dGVuZXJPYmplY3QoKQoreworICAgIGlmICghbV9saXN0ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAg
ICAgbV9saXN0ZW5lci5EaXNwb3NlKCk7CisgICAgICAgIG1fbGlzdGVuZXIuQ2xlYXIoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBw
b3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBtdXRhdGlv
bnMgPSBwb3BNdXRhdGlvbnM7CisKKyAgICAvLyBEb24ndCByZWVudGVyIFY4IGlmIGV4ZWN1dGlv
biB3YXMgdGVybWluYXRlZCBpbiB0aGlzIGluc3RhbmNlIG9mIFY4LgorICAgIGlmIChjb250ZXh0
LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChtdXRhdGlvbnMpOworICAgIEFTU0VSVCghbXV0YXRpb25zLT5pc0VtcHR5KCkpOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChjb250ZXh0LCBtX3dvcmxkQ29udGV4dCk7CisgICAg
aWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGpz
TXV0YXRpb25zID0gdjg6OkFycmF5OjpOZXcobXV0YXRpb25zLT5zaXplKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAganNNdXRh
dGlvbnMtPlNldCh2ODo6SW50ZWdlcjo6TmV3KGkpLCB0b1Y4KG11dGF0aW9ucy0+YXQoaSkuZ2V0
KCkpKTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIGpz
TXV0YXRpb25zCisgICAgfTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9
IGdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgYm9vbCBpZ25vcmVkUmV0dXJuVmFsdWUgPSBmYWxz
ZTsKKyAgICBpbnZva2VDYWxsYmFjayhsaXN0ZW5lciwgMSwgYXJndiwgaWdub3JlZFJldHVyblZh
bHVlLCBjb250ZXh0KTsKK30KKwordW5zaWduZWQgVjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKCkK
K3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8VjhNdXRhdGlvbkxpc3RlbmVyKj46Okhhc2g6Omhh
c2godGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MmU4NDJl
YTU2M2QxNmU5MzkzZThiMjE5NWZhYzNjN2U4YTYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFY4TXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5l
cl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiV29ybGRDb250
ZXh0SGFuZGxlLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWOE11dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgTXV0YXRpb25MaXN0ZW5lciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3
b3JsZENvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4TXV0YXRp
b25MaXN0ZW5lcihsaXN0ZW5lciwgd29ybGRDb250ZXh0KSk7CisgICAgfQorICAgIHZpcnR1YWwg
flY4TXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPik7
CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5lciYgb3Ro
ZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNo
KCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0TGlzdGVuZXJPYmplY3QoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KG1fbGlzdGVuZXIp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKKyAgICBzdGF0
aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworCisgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9saXN0ZW5lcjsKKyAgICBXb3JsZENvbnRleHRI
YW5kbGUgbV93b3JsZENvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMWJi
NTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMyMjcxNDk4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCisjZGVmaW5l
IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorCisjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHY4
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZvciBWOE11dGF0aW9uTGlzdGVuZXIgb2JqZWN0cyB0
aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMgb2Ygdjg6Ok9iamVjdCB0byBzcGVlZCB1cCBsb29r
dXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmluZFdyYXBwZXIodjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29u
dGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIHJldHVybiBkb0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0
aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4pOwor
CisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gbGlz
dGVuZXJPYmplY3QpCisgICAgeworICAgICAgICBsaXN0ZW5lck9iamVjdC0+RGVsZXRlSGlkZGVu
VmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIHN0YXRpYyBNdXRhdGlvbkxpc3RlbmVyKiBkb0ZpbmRXcmFwcGVyKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNv
bnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciA9IG9iamVjdC0+R2V0SGlkZGVuVmFs
dWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7CisgICAgICAgIGlm
IChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlzdGVuZXIqPih2ODo6RXh0ZXJuYWw6OlVud3JhcChs
aXN0ZW5lcikpOworICAgIH0KK307CisKK2lubGluZSBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIodjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRl
eHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+
OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0aW9uTGlzdGVuZXIqIHdyYXBwZXIgPSBkb0ZpbmRX
cmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHdyYXBwZXJQdHIgPSBWOE11dGF0aW9u
TGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VDdXJyZW50V29y
bGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikKKyAgICAgICAgb2JqZWN0LT5TZXRIaWRkZW5WYWx1
ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25MaXN0ZW5lcigpLCB2ODo6RXh0ZXJuYWw6
OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOworCisgICAgcmV0dXJuIHdyYXBwZXJQdHIucmVsZWFz
ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11dGF0aW9u
TGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVz
LmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMxYTNmYjg3NDIyMDAxMDdiMGUyNDRiOGU1Li44NmU0
YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMyOGIzNTIyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC02Niw2ICs2Niw3IEBAIFY4TG9jYWxDb250
ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFu
IG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBp
bnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQo
KSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hlID0gb2JqZWN0
LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwogICAgIGlmIChjYWNoZS0+SXNOdWxsKCkg
fHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY2FjaGUgPSB2ODo6QXJyYXk6Ok5l
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggMTFmMzA5YjY5OTRhMTA4OTAwMmExMTJiNWZm
MDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRlYmM3MmRkZTE1ZGE2MWVhMzRkNDgxMDJjMzg2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9p
ZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02MywxNCArNjMsMTQgQEAgdm9pZCBWOEN1c3RvbVZv
aWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgIGludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ss
IDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQo
KSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
Y2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBj
YWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNh
bGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2Fs
bGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKICAgICBleGNl
cHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0
aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIGlmIChjYWxsYmFjay0+SXNGdW5jdGlvbigpKSB7
Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3
KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3QoY2FsbGJhY2spKTsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcodjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CiAgICAgfSBlbHNlIGlmIChjYWxsYmFj
ay0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5kbGVFdmVu
dEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImhhbmRsZUV2
ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbi0+SXNGdW5jdGlvbigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9p
ZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgyMWM2NTM1NzU3YzM0ZDVhMmNjM2MxMDE1NWM4NTk1
NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkxNmQ1MGZjNGQ5ZWQyYTAyYjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2Fs
bGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJucyBmYWxz
ZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRocmV3IGV4Y2VwdGlv
bikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxi
YWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJh
Y2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Citib29sIGludm9rZUNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2FsbGJh
Y2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFj
a1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5NmY5MDRj
NWQ3Li40Njg0NDc4OWI1ZjhiN2M5NGZkNzk4NjlhMjA3YzI4ZjBmM2NiZjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhD
REFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJWOENvbW1lbnQuaCIKKyNpbmNsdWRlICJWOERPTVdy
YXBwZXIuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudFR5cGUuaCIKQEAgLTQ4LDExICs0OSwxNCBA
QAogI2luY2x1ZGUgIlY4RW50aXR5LmgiCiAjaW5jbHVkZSAiVjhFbnRpdHlSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uVHlwZXMuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIK
ICNpbmNsdWRlICJWOE5vdGF0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhUZXh0LmgiCisjaW5jbHVk
ZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTMxLDYg
KzEzNSw0MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGlsZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiB9
CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVu
ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygi
RE9NLk5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0
aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVy
KGFyZ3NbMF0sIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBl
cz4gdHlwZXM7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFd
LT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdHlwZXMgPSBN
dXRhdGlvblR5cGVzOjpjcmVhdGUoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhD
aGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlzdCIpKTsKKyAg
ICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICB0eXBlcy0+c2V0
Q2hpbGRsaXN0KHY4Q2hpbGRsaXN0LT5Cb29sZWFuVmFsdWUoKSk7CisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJh
dHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpKQorICAgICAg
ICAgICAgdHlwZXMtPnNldEF0dHJpYnV0ZSh2OEF0dHJpYnV0ZS0+Qm9vbGVhblZhbHVlKCkpOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFy
YWN0ZXJkYXRhLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHR5cGVzLT5zZXRDaGFyYWN0ZXJkYXRh
KHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkpOworICAgIH0KKyAgICBpZiAobGlzdGVu
ZXIgJiYgdHlwZXMpIHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+
YWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgdHlwZXMpOworICAgICAgICBjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4Tm9kZTo6bXV0YXRpb25MaXN0
ZW5lckNhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQor
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5Ob2RlLndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoKSIpOworICAgIFJlZlB0cjxN
dXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0TXV0YXRpb25MaXN0
ZW5lcihhcmdzWzBdLCBMaXN0ZW5lckZpbmRPbmx5KTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+cmVtb3ZlTXV0YXRpb25MaXN0
ZW5lcihsaXN0ZW5lci5nZXQoKSk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJn
cy5Ib2xkZXIoKSwgYXJnc1swXSwgVjhOb2RlOjptdXRhdGlvbkxpc3RlbmVyQ2FjaGVJbmRleCk7
CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQogewogICAg
IGlmICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4
MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZlLi45ZmM4NGU2OGRjM2FlYzlkOWEzNTg5
YzgxZmExNDZiODk3Mzc4OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNp
bmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
LmgiCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlm
aWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50
KCksIHRoaXMpOwogI2VuZGlmCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlvblJlY29yZDo6
Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMpKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpj
aGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhl
NWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uNjMwZDYxYmMwNWVhNGY2N2IyZGNlMmIyMjg0OWQ5N2U0
OTcxZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzUsMTEgKzM1
LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJN
dXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJU
aGVtZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0aWNOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTA5NSw2ICsxMDk3LDExIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJ
bnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gaW5zZXJ0ZWROb2RlczsKKyAgICBpbnNlcnRlZE5vZGVz
LmFwcGVuZChjKTsKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKQorICAgICAgICBjLT5wYXJlbnRO
b2RlKCktPmRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENo
YW5nZWQoYy0+cGFyZW50Tm9kZSgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQoaW5zZXJ0ZWROb2Rl
cyksIDAsIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYg
ZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERUlOU0VSVEVEX0xJU1RF
TkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50LCB0cnVlLCBjLT5wYXJlbnROb2Rl
KCkpKTsKIApAQCAtMTExNiw2ICsxMTIzLDEyIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRS
ZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAg
ICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCisgICAg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsKKyAgICByZW1vdmVkTm9kZXMuYXBw
ZW5kKGMpOworCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgYy0+cGFyZW50Tm9k
ZSgpLT5kaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFu
Z2VkKGMtPnBhcmVudE5vZGUoKSwgMCwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlbW92ZWROb2Rl
cyksIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIC8vIGRpc3BhdGNoIHByZS1yZW1vdmFsIG11
dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQtPmhhc0xp
c3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERVJFTU9WRURfTElTVEVORVIpKQogICAgICAgICBj
LT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
RE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRkZGNiYi4u
Yzk0M2JkZjY1Mjk4NDFiNWM1ODZjNjQxODAyYjJjNmVkYjQ1NzM4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0Nv
bnRleHQuaCIKQEAgLTY5OSw2ICs3MDAsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAg
aWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5k
aWYKKworICAgIGRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0
ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lLCAiIiwgIiIpKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiArNzM1LDggQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVu
dCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCAiIiwgIiIp
KTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFkOGQ4ODQxMDQ1MWQy
ODYzNTdkZWUwYTU1ZDEzM2Q0NjY5NmEwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRp
b25MaXN0ZW5lcl9oCisjZGVmaW5lIE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTXV0YXRpb25SZWNvcmQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4gTXV0YXRpb25SZWNv
cmRWZWN0b3I7CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxN
dXRhdGlvbkxpc3RlbmVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TXV0YXRpb25MaXN0ZW5l
cigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImKSA9IDA7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBoYXNoKCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQwMWY4ZDNiNjZmZjE5ZDNk
MzgxYjI2ZDc0ZmVjYjdkYzZmN2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7Cisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgUHVyZUludGVyZmFjZSwKKyAgICAgICAgT21pdENvbnN0
cnVjdG9yCisgICAgXSBNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICAgICAgLy8gdm9pZCBoYW5kbGVF
dmVudChpbiBNdXRhdGlvblJlY29yZFtdIG11dGF0aW9ucykKKyAgICAgICAgdm9pZCBoYW5kbGVF
dmVudChpbiBBcnJheSBtdXRhdGlvbnMpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uUmVjb3JkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWUzOTY2MzExMmNmMTc2NmEwYzM2NjRhZWQxMzU3
NGU4MzQyYTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
UmVjb3JkLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik11dGF0aW9uUmVjb3JkLmgiCisKKyNpbmNsdWRlICJNdXRhdGlvblR5cGVzLmgiCisjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCisv
LyBUT0RPKGFkYW1rKTogRmlndXJlIG91dCB3aGV0aGVyIHdlIHdhbnQgdG8gc2hhcmUgYSBzaW5n
bGUgZW1wdHkgbm9kZSBsaXN0LCBvcgorLy8gZG8gc29tZXRoaW5nIGVsc2Ugc21hcnQuCitjbGFz
cyBFbXB0eU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRW1wdHlOb2RlTGlzdCk7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2ln
bmVkKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcml2YXRlOgorICAg
IEVtcHR5Tm9kZUxpc3QoKSB7IH0KK307CisKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29y
ZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1JlZlB0cjxOb2Rl
PiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGluc2VydGVkLCBQYXNzUmVmUHRyPE5vZGVM
aXN0PiByZW1vdmVkLCBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKQoreworICAgIFJlZlB0cjxN
dXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoTXV0
YXRpb25UeXBlczo6Y2hpbGRsaXN0TmFtZSgpLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9p
bnNlcnRlZE5vZGVzID0gaW5zZXJ0ZWQ7CisgICAgaWYgKCFtdXRhdGlvbi0+bV9pbnNlcnRlZE5v
ZGVzKQorICAgICAgICBtdXRhdGlvbi0+bV9pbnNlcnRlZE5vZGVzID0gRW1wdHlOb2RlTGlzdDo6
Y3JlYXRlKCk7CisgICAgbXV0YXRpb24tPm1fcmVtb3ZlZE5vZGVzID0gcmVtb3ZlZDsKKyAgICBp
ZiAoIW11dGF0aW9uLT5tX3JlbW92ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24tPm1fcmVtb3Zl
ZE5vZGVzID0gRW1wdHlOb2RlTGlzdDo6Y3JlYXRlKCk7CisgICAgbXV0YXRpb24tPm1fbmV4dE5v
ZGUgPSBuZXh0Tm9kZTsKKyAgICByZXR1cm4gbXV0YXRpb24ucmVsZWFzZSgpOworfQorCitQYXNz
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hh
bmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFt
ZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCit7Cisg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlv
blJlY29yZChNdXRhdGlvblR5cGVzOjphdHRyaWJ1dGVOYW1lKCksIHRhcmdldCkpOworICAgIG11
dGF0aW9uLT5tX2F0dHJOYW1lID0gYXR0ck5hbWU7CisgICAgbXV0YXRpb24tPm1fcHJldlZhbHVl
ID0gcHJldlZhbHVlOworICAgIG11dGF0aW9uLT5tX25ld1ZhbHVlID0gbmV3VmFsdWU7CisgICAg
cmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29y
ZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+
IHRhcmdldCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKE11dGF0
aW9uVHlwZXM6OmNoYXJhY3RlcmRhdGFOYW1lKCksIHRhcmdldCkpOworfQorCitNdXRhdGlvblJl
Y29yZDo6TXV0YXRpb25SZWNvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRy
PE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV90YXJnZXQodGFyZ2V0
KQoreworfQorCitNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKCkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZmMwNTYwNGY3MTU0ZDg1ZGEwYzYzNmJlZDc1N2Q0ZWJkN2NhODFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTXV0YXRpb25SZWNvcmRfaAorI2RlZmluZSBNdXRhdGlvblJlY29yZF9oCisK
KyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVjb3Jk
IDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25SZWNvcmQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gaW5zZXJ0ZWQsIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWQsIFBhc3NSZWZQdHI8Tm9kZT4gbmV4dE5vZGUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVBdHRyaWJ1dGVDaGFuZ2Vk
KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJOYW1lLCBj
b25zdCBTdHJpbmcmIHByZXZWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5NdXRhdGlvblJlY29yZCgpOwor
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CisgICAg
Tm9kZSogdGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KKworICAgIC8vIEZvciB0
eXBlID09ICdjaGlsZGxpc3QnCisgICAgTm9kZUxpc3QqIGluc2VydGVkTm9kZXMoKSB7IHJldHVy
biBtX2luc2VydGVkTm9kZXMuZ2V0KCk7IH0KKyAgICBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkg
eyByZXR1cm4gbV9yZW1vdmVkTm9kZXMuZ2V0KCk7IH0KKyAgICBOb2RlKiBuZXh0Tm9kZSgpIHsg
cmV0dXJuIG1fbmV4dE5vZGUuZ2V0KCk7IH0KKworICAgIC8vIEZvciB0eXBlID09ICdhdHRyaWJ1
dGUnCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSgpIHsgcmV0dXJuIG1fYXR0ck5h
bWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByZXZWYWx1ZSgpIHsgcmV0dXJuIG1fcHJldlZhbHVl
OyB9CisgICAgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0K
KworcHJpdmF0ZToKKyAgICBNdXRhdGlvblJlY29yZChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKworICAgIEF0b21pY1N0cmluZyBtX3R5cGU7Cisg
ICAgUmVmUHRyPE5vZGU+IG1fdGFyZ2V0OworICAgIFJlZlB0cjxOb2RlTGlzdD4gbV9pbnNlcnRl
ZE5vZGVzOworICAgIFJlZlB0cjxOb2RlTGlzdD4gbV9yZW1vdmVkTm9kZXM7CisgICAgUmVmUHRy
PE5vZGU+IG1fbmV4dE5vZGU7CisgICAgQXRvbWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgU3Ry
aW5nIG1fcHJldlZhbHVlOworICAgIFN0cmluZyBtX25ld1ZhbHVlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvblJlY29yZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlN2JjY2VkNjFlMGRjOTZiYmEwYzc3NmNkYTliOTI1YjhjZDZiNzMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIE11dGF0aW9uUmVjb3Jk
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIHR5cGU7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICB0YXJnZXQ7CisKKyAgICAgICAg
Ly8gRm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5v
ZGVMaXN0ICAgICAgIGluc2VydGVkTm9kZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBO
b2RlTGlzdCAgICAgICByZW1vdmVkTm9kZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBO
b2RlICAgICAgICAgICBuZXh0Tm9kZTsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmli
dXRlJworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgYXR0ck5hbWU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBwcmV2VmFsdWU7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBuZXdWYWx1ZTsKKyAgICB9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM5ZTQ0
MmVhMTRhN2RiYzhmOTIyNjgwNDBlMDc4YTM4N2JkMGFlZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKKworI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIk11
dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCisjaW5jbHVk
ZSAiTXV0YXRpb25UeXBlcy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVy
LmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBNdXRhdGlvbkNv
bnRleHQgeworICAgIE11dGF0aW9uQ29udGV4dChQYXNzUmVmUHRyPERvY3VtZW50PiBkLCBQYXNz
UmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IG8pCisgICAgICAgIDogZG9jdW1lbnQoZCkKKyAgICAg
ICAgLCBsaXN0ZW5lcihvKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRv
Y3VtZW50OworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKK307CisKK3N0
cnVjdCBNdXRhdGlvbkNvbnRleHRQdHJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBNdXRhdGlvbkNvbnRleHQqIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnRIYXNo
PHVpbnQ2NF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50NjRfdD4oUHRySGFzaDxEb2N1bWVudCo+
OjpoYXNoKGtleS0+ZG9jdW1lbnQuZ2V0KCkpKSA8PCAzMiB8IGtleS0+bGlzdGVuZXItPmhhc2go
KSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgTXV0YXRpb25Db250ZXh0
KiBhLCBjb25zdCBNdXRhdGlvbkNvbnRleHQqIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS0+
ZG9jdW1lbnQgPT0gYi0+ZG9jdW1lbnQgJiYgKmEtPmxpc3RlbmVyID09ICpiLT5saXN0ZW5lcjsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IGZhbHNlOworfTsKKwordHlwZWRlZiBIYXNoTWFwPE11dGF0aW9uQ29udGV4dCosIE11
dGF0aW9uUmVjb3JkVmVjdG9yKiwgTXV0YXRpb25Db250ZXh0UHRySGFzaD4gQ29udGV4dFZlY3Rv
ck1hcDsKKworfSAvLyBuYW1lc3BhY2UKKworc3RhdGljIENvbnRleHRWZWN0b3JNYXAmIGNvbnRl
eHRWZWN0b3JNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29udGV4dFZlY3Rvck1h
cCwgbSwgKCkpOworICAgIHJldHVybiBtOworfQorCitzdGF0aWMgRGVxdWU8T3duUHRyPE11dGF0
aW9uQ29udGV4dD4gPiYgYWN0aXZlTXV0YXRpb25Db250ZXh0cygpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChEZXF1ZTxPd25QdHI8TXV0YXRpb25Db250ZXh0PiA+LCBhY3RpdmVDb250ZXh0
cywgKCkpOworICAgIHJldHVybiBhY3RpdmVDb250ZXh0czsKK30KKwordm9pZCBzcGluTXV0YXRp
b25RdWV1ZSgpCit7CisgICAgd2hpbGUgKCFhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBhY3RpdmVN
dXRhdGlvbkNvbnRleHRzKCkudGFrZUZpcnN0KCk7CisgICAgICAgIE93blB0cjxNdXRhdGlvblJl
Y29yZFZlY3Rvcj4gdiA9IGFkb3B0UHRyKGNvbnRleHRWZWN0b3JNYXAoKS50YWtlKGNvbnRleHQu
Z2V0KCkpKTsKKyAgICAgICAgY29udGV4dC0+bGlzdGVuZXItPmhhbmRsZUV2ZW50KGNvbnRleHQt
PmRvY3VtZW50LmdldCgpLCB2LnJlbGVhc2UoKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBl
bnN1cmVNdXRhdGlvblF1ZXVlZChQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBycExpc3Rl
bmVyLCBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQ
dHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgQVNTRVJUKG11
dGF0aW9uLT50YXJnZXQoKSk7CisgICAgQVNTRVJUKG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1l
bnQoKSk7CisgICAgT3duUHRyPE11dGF0aW9uQ29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5l
dyBNdXRhdGlvbkNvbnRleHQobXV0YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpLCBwcnBMaXN0
ZW5lcikpOworCisgICAgcGFpcjxDb250ZXh0VmVjdG9yTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gY29udGV4dFZlY3Rvck1hcCgpLmFkZChjb250ZXh0LmdldCgpLCAwKTsKKyAgICBpZiAo
cmVzdWx0LnNlY29uZCkgeworICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBNdXRh
dGlvblJlY29yZFZlY3RvcjsKKyAgICAgICAgYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmFwcGVu
ZChjb250ZXh0LnJlbGVhc2UoKSk7CisgICAgfQorICAgIE11dGF0aW9uUmVjb3JkVmVjdG9yKiB2
ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKHYtPmlzRW1wdHkoKSB8fCB2LT5sYXN0
KCkgIT0gbXV0YXRpb24pCisgICAgICAgIHYtPmFwcGVuZChtdXRhdGlvbik7Cit9CisKK011dGF0
aW9uVGFyZ2V0Ojp+TXV0YXRpb25UYXJnZXQoKQoreworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0
OjphZGRNdXRhdGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJwTGlz
dGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRpb25UeXBlcz4gcHJwVHlwZXMpCit7CisgICAgUmVmUHRy
PE11dGF0aW9uVHlwZXM+IHR5cGVzID0gcHJwVHlwZXM7CisgICAgUmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKHBycExpc3RlbmVyLCAqdHlwZXMpOworICAgIE11
dGF0aW9uVGFyZ2V0RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHNp
emVfdCBpbmRleCA9IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAg
aWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0ZW5lcnMuYXBwZW5kKHJlZ2lz
dGVyZWRMaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBkLT5saXN0ZW5lcnNbaW5kZXhdLm1l
cmdlVHlwZXMoKnR5cGVzKTsKK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6cmVtb3ZlTXV0YXRp
b25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBNdXRhdGlvblRh
cmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+bGlzdGVuZXJzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmICgqZC0+bGlzdGVuZXJzW2ldLmxpc3RlbmVyID09ICpsaXN0
ZW5lcikgeworICAgICAgICAgICAgZC0+bGlzdGVuZXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6ZW5x
dWV1ZU11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0aW9uKQorewor
ICAgIEFTU0VSVChwcnBNdXRhdGlvbik7CisKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBt
dXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQgfHwgZC0+bGlzdGVuZXJzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlv
biA9IHBycE11dGF0aW9uOworICAgIHVpbnQ4X3QgbWFzayA9IDA7CisgICAgaWYgKG11dGF0aW9u
LT50eXBlKCkgPT0gTXV0YXRpb25UeXBlczo6Y2hpbGRsaXN0TmFtZSgpKQorICAgICAgICBtYXNr
ID0gTXV0YXRpb25UeXBlczo6Q2hpbGRsaXN0OworICAgIGVsc2UgaWYgKG11dGF0aW9uLT50eXBl
KCkgPT0gTXV0YXRpb25UeXBlczo6YXR0cmlidXRlTmFtZSgpKQorICAgICAgICBtYXNrID0gTXV0
YXRpb25UeXBlczo6QXR0cmlidXRlOworICAgIGVsc2UgaWYgKG11dGF0aW9uLT50eXBlKCkgPT0g
TXV0YXRpb25UeXBlczo6Y2hhcmFjdGVyZGF0YU5hbWUoKSkKKyAgICAgICAgbWFzayA9IE11dGF0
aW9uVHlwZXM6OkNoYXJhY3RlcmRhdGE7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQt
Pmxpc3RlbmVycy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZC0+bGlzdGVuZXJzW2ldLnR5
cGVzICYgbWFzaykKKyAgICAgICAgICAgIGVuc3VyZU11dGF0aW9uUXVldWVkKGQtPmxpc3RlbmVy
c1tpXS5saXN0ZW5lciwgbXV0YXRpb24pOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGMyM2UzYjA1
ZGQyYzU3NTVlNzllZDQzMmFlMzA2YzllNzA5MTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0
YXRpb25UYXJnZXRfaAorI2RlZmluZSBNdXRhdGlvblRhcmdldF9oCisKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uTGlz
dGVuZXI7CitjbGFzcyBNdXRhdGlvblJlY29yZDsKK2NsYXNzIE11dGF0aW9uVGFyZ2V0RGF0YTsK
K2NsYXNzIE11dGF0aW9uVHlwZXM7CisKK2NsYXNzIE11dGF0aW9uVGFyZ2V0IHsKK3B1YmxpYzoK
KyAgICB2b2lkIGFkZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiwgUGFzc1JlZlB0cjxNdXRhdGlvblR5cGVzPik7CisgICAgdm9pZCByZW1vdmVNdXRhdGlvbkxp
c3RlbmVyKE11dGF0aW9uTGlzdGVuZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE11
dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIH5NdXRhdGlvblRhcmdldCgpOworCisgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb24o
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOworCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdl
dERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFy
Z2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworfTsKKwordm9pZCBzcGlu
TXV0YXRpb25RdWV1ZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBN
dXRhdGlvblRhcmdldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25U
YXJnZXREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDBiZTEwYzMwZDJlMGEzYjk0NDkwMGRiNWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldERhdGFfaAorI2RlZmluZSBNdXRhdGlv
blRhcmdldERhdGFfaAorCisjaW5jbHVkZSAiUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRp
b25MaXN0ZW5lcj4gTXV0YXRpb25MaXN0ZW5lclZlY3RvcjsKK3N0cnVjdCBNdXRhdGlvblRhcmdl
dERhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGF0aW9uVGFyZ2V0RGF0YSk7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTXV0YXRpb25UYXJnZXRE
YXRhKCkgeyB9CisgICAgfk11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgfQorCisgICAgTXV0YXRpb25M
aXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBNdXRhdGlvblRhcmdldERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlw
ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZjYWY1MTU3ZjJlMWRhYWU2ODMyMmUzMjMxNjNhYWY3MzQwMjk2
NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5j
cHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blR5cGVzLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJp
bmcmIE11dGF0aW9uVHlwZXM6OmNoaWxkbGlzdE5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoaWxkbGlzdCIpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvblR5cGVzOjphdHRyaWJ1dGVOYW1l
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJhdHRy
aWJ1dGUiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0
YXRpb25UeXBlczo6Y2hhcmFjdGVyZGF0YU5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgcmV0dXJuIG5h
bWU7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlwZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MzYyM2RkY2EzZmZiYTFmYjk5N2VlZGRmZWMyZjBjNTc4OWU1MTdkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlwZXMuaApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNdXRhdGlvblR5cGVzX2gKKyNkZWZpbmUgTXV0YXRpb25UeXBlc19oCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNdXRhdGlvblR5cGVzIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25UeXBlcz4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uVHlwZXM+IGNyZWF0ZShib29s
IGNoaWxkbGlzdCA9IGZhbHNlLCBib29sIGF0dHJpYnV0ZSA9IGZhbHNlLCBib29sIGNoYXJhY3Rl
cmRhdGEgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YXRp
b25UeXBlcyhjaGlsZGxpc3QsIGF0dHJpYnV0ZSwgY2hhcmFjdGVyZGF0YSkpOworICAgIH0KKwor
ICAgIGVudW0gTXV0YXRpb25UeXBlRmxhZ3MgeworICAgICAgICBDaGlsZGxpc3QgPSAoMSA8PCAw
KSwKKyAgICAgICAgQXR0cmlidXRlID0gKDEgPDwgMSksCisgICAgICAgIENoYXJhY3RlcmRhdGEg
PSAoMSA8PCAyKQorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGls
ZGxpc3ROYW1lKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFt
ZSgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNoYXJhY3RlcmRhdGFOYW1lKCk7
CisKKyAgICBib29sIGNoaWxkbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRsaXN0OyB9Cisg
ICAgdm9pZCBzZXRDaGlsZGxpc3QoYm9vbCBjaGlsZGxpc3QpIHsgbV9jaGlsZGxpc3QgPSBjaGls
ZGxpc3Q7IH0KKyAgICBib29sIGF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRl
OyB9CisgICAgdm9pZCBzZXRBdHRyaWJ1dGUoYm9vbCBhdHRyaWJ1dGUpIHsgbV9hdHRyaWJ1dGUg
PSBhdHRyaWJ1dGU7IH0KKyAgICBib29sIGNoYXJhY3RlcmRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2NoYXJhY3RlcmRhdGE7IH0KKyAgICB2b2lkIHNldENoYXJhY3RlcmRhdGEoYm9vbCBjaGFyYWN0
ZXJkYXRhKSB7IG1fY2hhcmFjdGVyZGF0YSA9IGNoYXJhY3RlcmRhdGE7IH0KKworcHJpdmF0ZToK
KyAgICBNdXRhdGlvblR5cGVzKGJvb2wgY2hpbGRsaXN0LCBib29sIGF0dHJpYnV0ZSwgYm9vbCBj
aGFyYWN0ZXJkYXRhKQorICAgICAgICA6IG1fY2hpbGRsaXN0KGNoaWxkbGlzdCkKKyAgICAgICAg
LCBtX2F0dHJpYnV0ZShhdHRyaWJ1dGUpCisgICAgICAgICwgbV9jaGFyYWN0ZXJkYXRhKGNoYXJh
Y3RlcmRhdGEpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9jaGlsZGxpc3Q7CisgICAgYm9v
bCBtX2F0dHJpYnV0ZTsKKyAgICBib29sIG1fY2hhcmFjdGVyZGF0YTsKK307CisKK30gLy8gbmFt
ZXNwYWNlCisKKyNlbmRpZiAvLyBNdXRhdGlvblR5cGVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blR5cGVzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2QwYjMzMjRlYTdjY2VmN2U1MjMxMzU4NWExMmEwMjVi
N2FmN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlw
ZXMuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIE11dGF0
aW9uVHlwZXMgeworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjaGlsZGxpc3Q7CisgICAgICAg
IGF0dHJpYnV0ZSBib29sZWFuIGF0dHJpYnV0ZTsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4g
Y2hhcmFjdGVyZGF0YTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDcyZDcwM2FiNTQx
OTRkZTk2OTlmMzFhNDllNWQ2YTE4NmMzNjVhMmEuLjk4MmMwMjhmZWYwOTY4NGFkY2Q3YmI5ZWRk
ZTdiYjczZWI2NDk3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5hbWVO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJl
RGF0YS5oIgpAQCAtMjg1OSw2ICsyODYwLDIzIEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgfQogfQogCit2b2lkIE5vZGU6OmRpc3BhdGNoTXV0YXRp
b24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgUmVmUHRy
PE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIGZvciAoTm9kZSog
biA9IHRoaXM7IG47IG4gPSBuLT5wYXJlbnROb2RlKCkpCisgICAgICAgIG4tPmVucXVldWVNdXRh
dGlvbihtdXRhdGlvbik7Cit9CisKK011dGF0aW9uVGFyZ2V0RGF0YSogTm9kZTo6bXV0YXRpb25U
YXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVEYXRhKCktPm11
dGF0aW9uVGFyZ2V0RGF0YSgpIDogMDsKK30KKworTXV0YXRpb25UYXJnZXREYXRhKiBOb2RlOjpl
bnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LT5lbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMWE5OTJlNTQ2YjExNjhjODM3ZWM3
OTExNTZkMTg3ZmYxOWFkNjJkNy4uZDc5MzgzNmI3ZmM2NWRlZjk1MzE5NWUxZTQxNzE4NzZmNGQ0
YTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgIlRyZWVTaGFyZWQuaCIKQEAgLTkzLDcgKzk0LDcgQEAgZW51
bSBTdHlsZUNoYW5nZVR5cGUgewogICAgIFN5bnRoZXRpY1N0eWxlQ2hhbmdlID0gMyA8PCBub2Rl
U3R5bGVDaGFuZ2VTaGlmdAogfTsKIAotY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUg
eworY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFRyZWVTaGFyZWQ8Q29u
dGFpbmVyTm9kZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBNdXRhdGlvblRhcmdl
dCB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2Nv
cGU7CiAKQEAgLTU3Nyw2ICs1NzgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNdXRh
dGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPik7CisgICAgdmlydHVhbCBNdXRhdGlvblRh
cmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJn
ZXREYXRhKiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKKwogcHJpdmF0ZToKICAgICBlbnVt
IE5vZGVGbGFncyB7CiAgICAgICAgIElzVGV4dEZsYWcgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCmluZGV4
IGFhY2VmMTViNjY1YjUwZTYxOTQwNTBkY2U4ZDNhMDE3Y2MxNGY2ZDUuLjMyYWIyMmIyYmIyM2U3
NGIxYmJlMzY4YmE5ZGU5Y2Y3OGMyNTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTE1OSw2ICsx
NTksMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKICNlbmRpZgogCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5H
VUFHRV9PQkpFQ1RJVkVfQworICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gTXV0YXRpb25UeXBlcyB0
eXBlcyk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRpZgorCiAgICAgfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGI5MjFhMjNhMjM3ZjJjNDdmNjc0NjViZWRj
Y2Y0MTc2NGY5ZTkzYzkuLjFlYTA5YTA5YmNkNzVkYWM0YThlYWE0ZGFiNTlmZjZiMmQ0MGRkNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1
ZGUgIkNsYXNzTm9kZUxpc3QuaCIKICNpbmNsdWRlICJEeW5hbWljTm9kZUxpc3QuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3QuaCIKQEAgLTEy
MSw2ICsxMjIsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGEu
Z2V0KCk7CiAgICAgfQogCisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERh
dGEoKSB7IHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsgfQorICAgIE11dGF0aW9u
VGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9tdXRhdGlvblRhcmdldERhdGEpCisgICAgICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0
YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRhcmdldERhdGEpOworICAgICAgICByZXR1cm4gbV9t
dXRhdGlvblRhcmdldERhdGEuZ2V0KCk7CisgICAgfQorCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzRm9jdXNlZDsgfQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sIGZv
Y3VzZWQpIHsgbV9pc0ZvY3VzZWQgPSBmb2N1c2VkOyB9CiAKQEAgLTEzMyw2ICsxNDIsNyBAQCBw
cml2YXRlOgogICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0
c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2
ZW50VGFyZ2V0RGF0YTsKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9u
VGFyZ2V0RGF0YTsKICAgICBzaG9ydCBtX3RhYkluZGV4OwogICAgIGJvb2wgbV90YWJJbmRleFdh
c1NldEV4cGxpY2l0bHkgOiAxOwogICAgIGJvb2wgbV9pc0ZvY3VzZWQgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YzFiNzI4MWNmNmQzMTViNmFjZGY0MjcyZjIxY2E3MGZmYzc3MGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBS
ZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVy
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciB7CisgICAgUmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsLCBjb25zdCBNdXRhdGlvblR5
cGVzJiB0KQorICAgICAgICA6IGxpc3RlbmVyKGwpCisgICAgICAgICwgdHlwZXMoMCkKKyAgICB7
CisgICAgICAgIG1lcmdlVHlwZXModCk7CisgICAgfQorCisgICAgdm9pZCBtZXJnZVR5cGVzKGNv
bnN0IE11dGF0aW9uVHlwZXMmIG5ld1R5cGVzKQorICAgIHsKKyAgICAgICAgdHlwZXMgfD0gbmV3
VHlwZXMuY2hpbGRsaXN0KCkgPyBNdXRhdGlvblR5cGVzOjpDaGlsZGxpc3QgOiAwOworICAgICAg
ICB0eXBlcyB8PSBuZXdUeXBlcy5hdHRyaWJ1dGUoKSA/IE11dGF0aW9uVHlwZXM6OkF0dHJpYnV0
ZSA6IDA7CisgICAgICAgIHR5cGVzIHw9IG5ld1R5cGVzLmNoYXJhY3RlcmRhdGEoKSA/IE11dGF0
aW9uVHlwZXM6OkNoYXJhY3RlcmRhdGEgOiAwOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gKmxpc3RlbmVyID09ICpvdGhlci5saXN0ZW5lcjsKKyAgICB9CisKKyAg
ICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7CisgICAgdWludDhfdCB0eXBlczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNmNhNWIz
N2QyMWI5NjJhMWRiMmIwYTA2ZTYzZTkwNmJiNjdkM2YyZC4uZmI3ZWIwY2Q4YjFmODVhMTkyYTkw
ZDcxZTE5MDZlNDZkNzJlN2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzIs
NiArNzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFR
dWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRh
dGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE4ODMsNCArMTg4NCw5IEBAIFN0
b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIH0KICNlbmRp
ZgogCit2b2lkIERPTVdpbmRvdzo6c3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIDo6V2ViQ29y
ZTo6c3Bpbk11dGF0aW9uUXVldWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYTJhZDgwOWE5ZjA2NmZjMjhmNWFlZWJlODcxY2U2MGRj
OGE4NWFmZC4uZGM5YjAxZGM1Y2NhYzY0OThmY2FkZjIzZWEyN2I3NzNiNzQ3YTQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC00MTQsNiArNDE0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQZXJmb3JtYW5jZSogcGVyZm9ybWFuY2UoKSBjb25zdDsKICNlbmRpZgogCisg
ICAgICAgIHZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IERPTVdpbmRvdyhGcmFtZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNjJm
MWMzMDM2NmExZmI3ZTE0NzU1ZWUxNTU0YThhM2MwZmVjMTE5Ni4uNjIyNzE1NzAyMzkzYTg5NzA0
M2UxYTNjMzg0MjJkZjRlMjhlM2NjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAt
ODAzLDYgKzgwMywxMSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgLy8gd2luZG93LnRvU3Ry
aW5nKCkgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBpbiBWOAogICAgICAgICBbVjhEb05vdENo
ZWNrU2lnbmF0dXJlLCBEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbSwgRG9udEVudW1d
IERPTVN0cmluZyB0b1N0cmluZygpOwogI2VuZGlmIC8vIGRlZmluZWQoVjhfQklORElORykKKwor
ICAgICAgICAvLyBGSVhNRShhZGFtayk6IERPIE5PVCBTVUJNSVQKKyAgICAgICAgLy8gVGhpcyBu
ZWVkcyB0byBiZSBleHBvc2VkIHRvIEpTIHVudGlsIGVtYmVkZGVycyBhcmUgbW9kaWZpZWQgdG8g
Y2FsbCBzcGluTXV0YXRpb25RdWV1ZSgpCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgZWFjaCB0
YXNrLgorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105032</attachid>
            <date>2011-08-24 11:45:28 -0700</date>
            <delta_ts>2011-08-25 14:25:31 -0700</delta_ts>
            <desc>Remove MutationTypes, use bitmasks everywhere</desc>
            <filename>bug-66079-20110824114526.patch</filename>
            <type>text/plain</type>
            <size>100642</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJj
NmQxYjc5Njk2Yzc5NGEzNWJiLi44NjgxMGFkMTAyZDViYzU5YjFkMmY2NjlhMzRmZDdjNzY2OTk2
NDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTEgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFu
IHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5lIHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29t
cGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMGIxZmEzZjEyNzNlNTFmOGU2MGE2ZDBmMTZmMTIxODVh
M2Q4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IE11dGF0aW9u
TGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG11dGF0aW9uc1swXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVkTm9kZXNb
MF0KK1BBU1MgbXV0YXRpb25zWzFdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1sx
XQorUEFTUyBtdXRhdGlvbnNbMl0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRlZE5vZGVzWzJd
CitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBsaXN0ZW5lckNh
bGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgdGV4dE5vZGVzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Yzc3
YTg4NDQyMGQzMDJjMDUwN2M4NGVlM2JlZGI2MWI3OWEzMzg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDk0
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICA8ZGl2
IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlwdD4KKyAg
ICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4
cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgdmFyIGxp
c3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBpbnNlcnRlZE5vZGVzOworICAgICAg
ICB2YXIgcmVtb3ZlZE5vZGVzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRyczsKKyAgICAgICAg
dmFyIHRleHROb2RlczsKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAg
ICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAg
ICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVk
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbVtpXS5pbnNl
cnRlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWycgKyBpICsgJ10uaW5zZXJ0ZWROb2Rlc1snICsgaiArICddJywgJ2luc2Vy
dGVkTm9kZXNbJyArIChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5v
ZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBp
ICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4
dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnNlcnRlZE5vZGVzID0gW107CisgICAgICAg
ICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsK
KyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJibGlu
ZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIHZhciBpbm5lclNhbmRib3ggPSBzYW5kYm94LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHZhciBhID0gc2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgICAgICBhLnRleHRDb250ZW50ID0gJ2hlbGxvLCB3b3JsZCc7Cisg
ICAgICAgIHZhciBiID0gaW5uZXJTYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGluc2VydGVkTm9kZXMgPSBbYSwgYS5maXJzdENoaWxk
LCBiXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFkZE11
dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgaW5u
ZXJTYW5kYm94LnJlbW92ZUNoaWxkKGIpOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAg
bW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgaW5uZXJTYW5kYm94LnNldEF0
dHJpYnV0ZSgnZGF0YS1mb28nLCAnbXlkYXRhJyk7CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVl
KCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgbGlz
dGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0
YXRpb24uCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5l
ciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RD
aGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBz
YW5kYm94LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7CisgICAgICAg
IHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlRmFsc2UoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgIDwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNkZDczMGY0MmNl
ZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uYmJkYjFiM2QyOGM3NWZjMThkZTUzZTEwZDNiOGVl
ZDU0MTE5MGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxMS0wOC0xMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBpbiBwcm9ncmVz
c10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEgcmVwbGFjZW1l
bnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJpbWVudGFsLCB2
ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZlbnR1YWxseSBy
ZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAgICAgICAgbGFy
Z2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNzYWdlIHRvIHB1
YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVi
bGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAgICAgVGhhdCB0
aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1hcml6ZWQgYnkK
KyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgorCisgICAgICAg
IGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFK
dWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggaXMgaW4gbm8g
d2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBi
aWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5nCisgICAgICAg
IG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRhdGlvbkxpc3RlbmVyczogdGhlIGluY2x1
ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQgY2FsbHMgYSAic3Bpbk11dGF0aW9uUXVl
dWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4gVGhpcyBpcyBu
b3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0byBKUywKKyAgICAgICAgdGhvdWdoOiBt
eSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0YXRpb25RdWV1ZSBmcm9tCisgICAgICAg
IEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdlYkNvcmUgb3IgKG1vcmUgbGlrZWx5KSBp
bgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBhIHNlcGFyYXRlIGNoYW5nZSB3aGljaCBp
bXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4gQ2hyb21pdW0uCisKKyAgICAgICAgVGhl
IG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhhdCBNdXRhdGlv
blJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRjaGVkIGluIGFsbCB0aGUgcHJvcGVyIHBs
YWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAgICAgIGlubmVySFRNTCBpcyBub3QgYXMg
d2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YKKyAgICAgICAgd2Fu
dGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQgZmVlZGJhY2s6IGl0IHNob3VsZG4ndCBi
ZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0aW9uUmVjb3JkIGRpc3BhdGNoaW5nIGlu
IGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4KKworICAgICAgICBUZXN0OiBmYXN0L2Rv
bS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRp
b25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3Rl
bmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5l
cjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjppc29sYXRlZFdvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6d3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBwZXIpOgorICAgICAgICBKU011dGF0aW9u
TGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZlbnRMaXN0ZW5lciwKKyAgICAgICAgd2l0
aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVhc29uIGZvciBleGlzdGluZworICAgICAg
ICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciBuZWVkcyB0byBiZWhhdmUK
KyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBpbiB0aGF0IGR1cGxpY2F0ZSBhZGRpdGlv
bnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVxdWlyZXMgdGhlIG9wZXJhdG9yPT0gbWV0
aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcgdGhlIHNhbWUg
TXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFuIG9uY2UgdG8gYSBnaXZlbiBsaXN0ZW5l
ciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBhIEhhc2hNYXAsIHRodXMgdGhlIHxoYXNo
fCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm9kZTo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGU6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIpOgorICAgICAg
ICBTaW5jZSBNdXRhdGlvbkxpc3RlbmVycyB0aGVtc2VsdmVzIGFyZSBjdXN0b20sIHNvCisgICAg
ICAgIG11c3QgYmUgbXV0YXRpb24gbGlzdGVuZXIgYWRkaXRpb24gYW5kIHJlbW92YWwuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZXRJ
bnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6OmdldE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0
ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlz
cG9zZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpo
YXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxi
YWNrLmguCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpnZXRMaXN0ZW5lck9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpkb0ZpbmRX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZp
bmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICBUaGUgVjggZXF1aXZhbGVudHMgb2YgdGhlIEpT
TXV0YXRpb25MaXN0ZW5lciBhYm92ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICBHZW5lcmFsaXplZCBpbnZva2VDYWxs
YmFjayB0byBtYWtlIGl0IHN1aXQgdGhlIHB1cnBvc2VzIG9mCisgICAgICAgIFY4TXV0YXRpb25M
aXN0ZW5lcjo6aGFuZGxlRXZlbnQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9k
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OndlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OndlYmtpdFJlbW92
ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIEFuZCB0aGUgZXF1aXZhbGVudCBj
dXN0b20gbWV0aG9kcyBvbiBOb2RlLgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6
CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZElu
c2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3ZhbEV2
ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11dGF0aW9ucy4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1
dGUpOgorICAgICAgICBEaXNwYXRjaCAiYXR0cmlidXRlIiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL011dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bkxpc3RlbmVyOjp+TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgICogZG9tL011dGF0aW9uTGlz
dGVuZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0
YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjp+TXV0YXRpb25SZWNvcmQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uUmVjb3JkOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Omluc2VydGVk
Tm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnJlbW92ZWROb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV4dE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmF0dHJOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uUmVjb3JkOjpwcmV2VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNv
cmQ6Om5ld1ZhbHVlKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaWRsOiBBZGRlZC4K
KyAgICAgICAgTXV0YXRpb25SZWNvcmRzIGFyZSBhbmFsb2dvdXMgdG8gRXZlbnRzOiB0aGV5IGhv
bGQgZGF0YQorICAgICAgICBhYm91dCBhIHNpbmdsZSBtdXRhdGlvbi4KKyAgICAgICAgKiBkb20v
TXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29u
dGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6OmVxdWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlTXV0
YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uVGFyZ2V0OjphZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlv
blRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25UYXJnZXQgaXMgYW5hbG9nb3VzIHRv
IEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBtaXhpbiBmb3IgTm9kZS4KKyAgICAgICAgKiBkb20vTXV0
YXRpb25UYXJnZXREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJn
ZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
YXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgTXV0YXRpb25UYXJnZXRE
YXRhIGlzIG1lYW50IHRvIGJlIHBhcnQgb2YgTm9kZVJhcmVEYXRhLgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoTXV0YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgIE11dGF0aW9uVGFy
Z2V0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9t
L05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXI6Om1lcmdlVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6c3Bpbk11dGF0aW9uUXVldWUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICBOb3RlIHRoYXQgdGhlc2Ug
Y2hhbmdlcyB0byBET01XaW5kb3cgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBjaGFuZ2UsCisg
ICAgICAgIGFuZCBhcmUgc2ltcGx5IGEgc2hpbSB0byBtYWtlIGl0IGVhc3kgdG8gZGVhbCB3aXRo
IG11dGF0aW9ucyB3aGlsZSB3ZQorICAgICAgICBmaWd1cmUgb3V0IHRoZSB0aW1lLXRvLXJ1biBp
c3N1ZXMuCisKIDIwMTEtMDgtMTEgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGU6IGJvcmRlcklubmVyUmVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCmluZGV4IGM1NmIxODlkMGJhZWU1OWQyYzAyYTg0YTVhMmU3NjNhZDk2
YzUzNzAuLjllNzhmYzE0ZTI1ZWI3NTMxOTRhZjQyYjQxODE5NzM2ODQwYTU2NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTI0NCw2ICsyNDQsOCBAQAogI2luY2x1ZGUgIkpTTWV0
YWRhdGFDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNNb3VzZUV2ZW50LmNwcCIKICNpbmNsdWRl
ICJKU011dGF0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5jcHAi
CisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5jcHAiCiAjaW5jbHVkZSAiSlNOYW1lZE5vZGVN
YXAuY3BwIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDI2
YjYwYWIzMTMxZDlhZTRmNmYyMzYzNDE3MTI1MGY2YTU1YzA3ZjguLmJlM2IwNTQyYTkzMGQyOWJi
ZTFhZjlhMWVlYzY2MmYzYTc0MTg0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzE1LDYgKzMxNSw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIE1ldGFkYXRhQ2FsbGJhY2sg
XAogICAgIE1vdXNlRXZlbnQgXAogICAgIE11dGF0aW9uRXZlbnQgXAorICAgIE11dGF0aW9uTGlz
dGVuZXIgXAorICAgIE11dGF0aW9uUmVjb3JkIFwKICAgICBOYW1lZE5vZGVNYXAgXAogICAgIE5h
dmlnYXRvciBcCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IgXApAQCAtNTcxLDcgKzU3Myw3
IEBAIERPTV9DTEFTU0VTID0gXAogCiAuUEhPTlkgOiBhbGwKIAotSlNfRE9NX0hFQURFUlM9JChm
aWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZlbnRMaXN0ZW5lci5oIEpT
RXZlbnRUYXJnZXQuaCwkKERPTV9DTEFTU0VTOiU9SlMlLmgpKQorSlNfRE9NX0hFQURFUlM9JChm
aWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZlbnRMaXN0ZW5lci5oIEpT
RXZlbnRUYXJnZXQuaCBKU011dGF0aW9uTGlzdGVuZXIuaCwkKERPTV9DTEFTU0VTOiU9SlMlLmgp
KQogCiBXRUJfRE9NX0hFQURFUlMgOj0KIGlmZXEgKCQoZmluZHN0cmluZyBCVUlMRElOR19XWCwk
KEZFQVRVUkVfREVGSU5FUykpLCBCVUlMRElOR19XWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKaW5kZXggZjUxODYwMGE0ZTE0MTlkMDk2OTNmOWUwMzY0MDYxOTFjYzJmMWE0
Yy4uOTlhYTc5YTc1Yzk1ZjIzNmIyYmY4Mzc4NzhmZDI1YTA1ZTFlNGJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTIzMSw2ICsyMzEsNyBAQAogICAgICAgIyBD
dXN0b20gYmluZGluZ3MgaW4gYmluZGluZ3MvdjgvY3VzdG9tIGV4aXN0IGZvciB0aGVzZS4KICAg
ICAgICcuLi9kb20vRXZlbnRMaXN0ZW5lci5pZGwnLAogICAgICAgJy4uL2RvbS9FdmVudFRhcmdl
dC5pZGwnLAorICAgICAgJy4uL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4v
aHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKIAogICAgICAgIyBCaW5kaW5ncyB3aXRoIGN1c3RvbSBP
YmplY3RpdmUtQyBpbXBsZW1lbnRhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMTY4NDRiNzEw
MTc4YTcxMjIxOGZmZDYwNmEyY2JjMjMzZDBjZDA3Mi4uOTcyYjZhNzM3MTRjNWYwZWI2YjU4OTc1
YzBkNzhiZTAzNjdiMzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE3OSw2ICsxMTc5LDggQEAK
ICAgICAgICAgICAgICdkb20vTWVzc2FnZVBvcnQuaWRsJywKICAgICAgICAgICAgICdkb20vTW91
c2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmlkbCcsCisgICAg
ICAgICAgICAnZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKKyAgICAgICAgICAgICdkb20vTXV0
YXRpb25SZWNvcmQuaWRsJywKICAgICAgICAgICAgICdkb20vTmFtZWROb2RlTWFwLmlkbCcsCiAg
ICAgICAgICAgICAnZG9tL05vZGUuaWRsJywKICAgICAgICAgICAgICdkb20vTm9kZUZpbHRlci5p
ZGwnLApAQCAtMjA3Nyw2ICsyMDc5LDkgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOElz
b2xhdGVkQ29udGV4dC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5l
ci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhOUE9iamVjdC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5QVXRpbHMuY3Bw
JywKQEAgLTUzMjYsNiArNTMzMSwxMiBAQAogICAgICAgICAgICAgJ2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL011dGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uTGlz
dGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmNwcCcsCisgICAgICAg
ICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblRh
cmdldC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldC5oJywKKyAgICAgICAg
ICAgICdkb20vTXV0YXRpb25UYXJnZXREYXRhLmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9k
ZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vTmFtZU5vZGVMaXN0LmgnLAogICAgICAgICAg
ICAgJ2RvbS9OYW1lZE5vZGVNYXAuY3BwJywKQEAgLTUzNjcsNiArNTM3OCw3IEBACiAgICAgICAg
ICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9SYXdEYXRhRG9j
dW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgnLAog
ICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDBiYTg0NjQ2M2U1MjdkZTZmZGEzMGFiNzk5NjhlNmVhYjRj
OWEyYmQuLjlmM2UzYjA5MjIyOGExNzlkYzQ5ZmUwOThjZmU1N2ZjYTkzZjE0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0
MTAsOSArNTQxMCwxNyBAQAogCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRy
aWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAw
QzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1Njgx
NkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzY3MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3Bw
ICovOyB9OworCQlDNjcxREEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzkx
M0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLzsgfTsKKwkJQzY3MkEyRDMx
M0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8q
IE11dGF0aW9uVGFyZ2V0RGF0YS5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2Vs
ZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CiAJCUM2RjQxMDQ3MTMwQzZFODkwMDM5M0RFNCAvKiBF
bnRyeUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAgKi87IH07CisJCUM2
RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0MDEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OworCQlDNkY2NzE1NDEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25UYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0
LmNwcCAqLzsgfTsKKwkJQzZGNjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0
NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMg
LyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlz
dGVuZXIuY3BwICovOyB9OworCQlDNkY2NzE1RDEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlv
bkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi87IH07
CiAJCUNBM0JGNjdDMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3QjEwRDk5QkFF
MDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwICovOyB9OwogCQlDQTNCRjY3RTEwRDk5QkFF
MDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmlt
YXRvci5oICovOyB9OwogCQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTIxMzcsOSArMTIxNDUsMjIgQEAKIAkJQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8q
IEdseXBoTWV0cmljc01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlw
aE1ldHJpY3NNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFOUI2NzYxMDY5
N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3
MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0
aW9uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25S
ZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MkEyRDIxM0YzNEM0QTAw
OTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNdXRhdGlvblRhcmdldERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkwQTAwMEIw
QTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5QmFzZS5jcHA7
IHBhdGggPSBmaWxlYXBpL0VudHJ5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uTGlzdGVuZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
TGlzdGVuZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uTGlzdGVuZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25SZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvblJlY29yZC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblRhcmdl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQ3MTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNdXRhdGlvblRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0
QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8q
IEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3QjEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xs
QW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
QW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3RDEwRDk5
QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzMTU5LDYgKzEzMTgwLDcgQEAKIAkJCQk4OTg3ODU3NjEyMkNBMURBMDAzQUFCREEgLyog
RmlsZUFQSSAqLywKIAkJCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLywKIAkJ
CQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICovLAorCQkJCUM2NzFEQTQ0
MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQkzMzUwM0M5QzEwMTc5QTlBMDAz
QjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUMyMjYwMjBEQjY5RUE3MDA4OUI2Njkg
LyogT2ZmbGluZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkgLyogUGx1Z2lucyAq
LywKQEAgLTE1NDA1LDYgKzE1NDI3LDcgQEAKIAkJCQk4NUFGQTdBQjBBQUYzQkIwMDBFODQzMDUg
LyogRXZlbnRzICovLAogCQkJCTg1QzU2RDAzMEFBOEJBQTcwMEQ5NTc1NSAvKiBIVE1MICovLAog
CQkJCTg1RTcxMTNEMEFDNUQ0QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAqLywKKwkJCQlDNjcxREE1
RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJODUzOEYwNTcwQUQ3MjJCOTAw
NkE4MUQxIC8qIFJhbmdlcyAqLywKIAkJCQk4NTA2NTcwNDBBQUI0NzZDMDAyRDE1QzAgLyogU3R5
bGVTaGVldHMgKi8sCiAJCQkJODVBMEY5OEUwQUM3MTZGNDAwMTYxRkRDIC8qIFNWRyAqLywKQEAg
LTE4NTEzLDYgKzE4NTM2LDggQEAKIAkJCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNF
eGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFp
blRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovLAorCQkJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5
QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovLAorCQkJCUM2RjY3MTVCMTNFMzVFQjIwMERF
M0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQk5M0I3MEQ0RjA5RUIwQzdDMDA5
RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywKIAkJCQk5M0I3MEQ1MDA5
RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggKi8sCiAJCQkJMTRD
RDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAqLywKQEAg
LTE5MTY4LDYgKzE5MTkzLDIyIEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7
CiAJCX07CisJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzY3MURBMzgxM0UzNzE0OTAw
NTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2NzFEQTM5MTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8sCisJCQkpOworCQkJbmFtZSA9IE11dGF0
aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzY3MURBNUQxM0UzNzFC
OTAwNTU4QUU5IC8qIE11dGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gTXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQlFMUM4QkU0QjBFOEJEMEQxMDA2NENCN0QgLyogVGhyZWFkcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTkxNCw2ICsxOTk1
NSwxNCBAQAogCQkJCTg1MDMxQjMzMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmNw
cCAqLywKIAkJCQk4NTAzMUIzNDBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5oICov
LAogCQkJCTkzRUVDMUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAqLywK
KwkJCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICovLAor
CQkJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmlkbCAqLywK
KwkJCQlDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovLAor
CQkJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovLAorCQkJ
CUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwgKi8sCisJCQkJ
QzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLywKKwkJCQlD
NkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLywKKwkJCQlDNjcy
QTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8sCiAJCQkJQkNG
MzRBMzYxMUEyMzFDRDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgKi8sCiAJCQkJQTgxODcy
MTgwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oICovLAogCQkJCTg1QUNBOUY5MEE5
QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovLApAQCAtMTk5NzgsNiArMjAwMjcs
NyBAQAogCQkJCUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJz
ZXIuaCAqLywKIAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuY3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBS
ZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2
OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi8sCiAJCQkJOUJEMEJGOTIxMkE0MkJG
NTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICovLAogCQkJCTlCRDBCRjkxMTJBNDJC
RjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8sCkBAIC0yMjAzMiw2ICsyMjA4Miw4
IEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
TXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZGNjcxNUQxM0UzNUVCMjAwREUz
QjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBM0Yx
M0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5IC8qIEpTTmF2aWdhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjQwNSw2ICsyMjQ1Nyw4IEBACiAJCQkJ
QjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIxQUQ0RTYzMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QTBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZGNjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjcyQTJEMzEzRjM0QzRBMDA5NDIz
Q0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5
NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4
NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2MTgxLDYgKzI2MjM1LDEwIEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5REU3
OTA0MTNGMTZDN0YwMDA3RkNERiAvKiBKYXZhTWV0aG9kSlNDLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUM2RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDNkY2NzE1NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNUMxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0
YXRpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNjcxREEzRTEzRTM3MTQ5MDA1
NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlMmE2NTA3MzgyYmVjNDc0ZDQ2MmM4M2MxMjU1MjM4ZTEzODdkMmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwCkBA
IC0wLDAgKzEsMTM4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgorI2lu
Y2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25M
aXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpCisgICAgOiBtX3dyYXBwZXIoKmlzb2xhdGVkV29ybGQtPmds
b2JhbERhdGEoKSwgd3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxk
KQoreworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0TWF5QmVOdWxs
KCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7CisKK30KKworSlNNdXRhdGlvbkxpc3Rl
bmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKCkKK3sKK30KKwordm9pZCBKU011dGF0aW9uTGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFBhc3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHBvcE11dGF0aW9ucykKK3sK
KyAgICBPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IG11dGF0aW9ucyA9IHBvcE11dGF0aW9u
czsKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11dGF0aW9ucy0+aXNFbXB0
eSgpKTsKKworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gbV9q
c0Z1bmN0aW9uLmdldCgpOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9pc29sYXRlZFdv
cmxkLmdldCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KTsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgLy8gVGhlIHdpbmRvdyBtdXN0IHN0
aWxsIGJlIGFjdGl2ZSBpbiBpdHMgZnJhbWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTIxPi4KKyAgICAvLyBGSVhNRTogQSBiZXR0ZXIgZml4IGZvciB0
aGlzIG1heSBiZSB0byBjaGFuZ2UgRE9NV2luZG93OjpmcmFtZSgpIHRvIG5vdCByZXR1cm4gYSBm
cmFtZSB0aGUgZGV0YWNoZWQgd2luZG93IHVzZWQgdG8gYmUgaW4uCisgICAgaWYgKGZyYW1lLT5k
b21XaW5kb3coKSAhPSB3aW5kb3ctPmltcGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/CisgICAgU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0LT5j
YW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LT5pc1BhdXNl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1
bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisKKyAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBKU1ZhbHVlKCk7Cisg
ICAgICAgIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAg
IH0KKworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IHByb3RlY3QodGhpcyk7CisKKyAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgbXV0YXRpb25MaXN0OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11
dGF0aW9ucy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtdXRhdGlvbkxpc3QuYXBwZW5kKHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBlbmQoY29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbkxpc3QpKTsKKworICAgICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKKyAg
ICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGdsb2JhbERh
dGEsIGdsb2JhbERhdGEuZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEuZHluYW1pY0ds
b2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0
Q2hlY2tlci5zdGFydCgpOworICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbikKKyAgICAg
ICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRnVuY3Rpb24sIGFyZ3MpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FKGFkYW1rKTogRmlndXJlIG91dCB3aGF0IHRoZSB0YXJn
ZXQgc2hvdWxkIGJlOyBwcm9iYWJseSB0aGUKKyAgICAgICAgICAgIC8vIERvY3VtZW50IG9yIERP
TVdpbmRvdz8KKyAgICAgICAgICAgIEpTVmFsdWUgY3VycmVudFRhcmdldCA9IHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBtdXRhdGlvbnMtPmF0KDApLT50YXJnZXQoKSk7CisgICAgICAgICAgICBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBjdXJyZW50VGFyZ2V0LCBhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxE
YXRhLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgIH0K
K30KKworYm9vbCBKU011dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25M
aXN0ZW5lciYgbGlzdGVuZXIpCit7CisgICAgY29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKiBqc011
dGF0aW9uTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU011dGF0aW9uTGlzdGVuZXIqPigm
bGlzdGVuZXIpOworICAgIHJldHVybiBtX2pzRnVuY3Rpb24gPT0ganNNdXRhdGlvbkxpc3RlbmVy
LT5tX2pzRnVuY3Rpb247Cit9CisKK3Vuc2lnbmVkIEpTTXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgp
Cit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPEpTQzo6SlNPYmplY3QqPjo6SGFzaDo6aGFzaCht
X2pzRnVuY3Rpb24uZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzZmExNmM5ZjM3NzVmYzMyYTk5YTZlZTdjOTJkNzU4YjdiMmRlMGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisj
aWZuZGVmIEpTTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIEpTTXV0YXRpb25MaXN0ZW5lcl9o
CisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvV3JpdGVC
YXJyaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxk
OworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIEpTTXV0YXRpb25MaXN0ZW5lciA6
IHB1YmxpYyBNdXRhdGlvbkxpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU011dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgSlND
OjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU011dGF0aW9uTGlzdGVuZXIobGlzdGVu
ZXIsIHdyYXBwZXIsIGlzb2xhdGVkV29ybGQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5KU011
dGF0aW9uTGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11
dGF0aW9uTGlzdGVuZXImIG90aGVyKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKTsKKwor
ICAgIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNv
bGF0ZWRXb3JsZC5nZXQoKTsgfQorCisgICAgSlNDOjpKU09iamVjdCogd3JhcHBlcigpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0V3JhcHBlcihKU0M6OkpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU09iamVjdCogd3JhcHBlcikgY29uc3QgeyBt
X3dyYXBwZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIDApOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NP
d25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+KTsKKworcHJpdmF0ZToKKyAgICBKU011dGF0aW9u
TGlzdGVuZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIs
IERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisKKyAgICBtdXRhYmxlIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICBtdXRhYmxlIEpTQzo6
V2VhazxKU0M6OkpTT2JqZWN0PiBtX3dyYXBwZXI7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBtX2lzb2xhdGVkV29ybGQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBKU011dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNTFlM2JiODZhYWVlMzJiNWYyMTY1OWJlMTM3YzgyYTQ0
MzJmZGYxMS4uYzE0MmMyZmNhMWI0MDJhZmEyYWFjYTQ3YTIzZGMwMTMyYzY1OThhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC01OCw5ICs1OCwx
MSBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJKU011dGF0aW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKU1RleHQuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb3Rh
dGlvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgpAQCAtMjA1LDYgKzIw
Nyw0MyBAQCB2b2lkIEpTTm9kZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CiB9CiAKK0pTVmFsdWUgSlNO
b2RlOjp3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEpTVmFsdWUg
anNUeXBlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIGlmICghanNUeXBlcy5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEpTT2JqZWN0KiBqc1R5cGVz
T2JqZWN0ID0gYXNPYmplY3QoanNUeXBlcyk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7Cisg
ICAgSlNWYWx1ZSBqc0NoaWxkbGlzdCA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlm
aWVyKGV4ZWMsICJjaGlsZGxpc3QiKSk7CisgICAgaWYgKGpzQ2hpbGRsaXN0LmlzQm9vbGVhbigp
ICYmIGpzQ2hpbGRsaXN0LmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRp
b25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgSlNWYWx1ZSBqc0F0dHJpYnV0ZSA9IGpzVHlw
ZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhdHRyaWJ1dGUiKSk7CisgICAg
aWYgKGpzQXR0cmlidXRlLmlzQm9vbGVhbigpICYmIGpzQXR0cmlidXRlLmdldEJvb2xlYW4oKSkK
KyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7CisgICAg
SlNWYWx1ZSBqc0NoYXJhY3RlcmRhdGEgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICBpZiAoanNDaGFyYWN0ZXJkYXRhLmlz
Qm9vbGVhbigpICYmIGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpCisgICAgICAgIHR5cGVN
YXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzsKKworICAgIGltcGwoKS0+
YWRkTXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChs
aXN0ZW5lciksIHRoaXMsIGN1cnJlbnRXb3JsZChleGVjKSksIHR5cGVNYXNrKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU05vZGU6OndlYmtpdFJlbW92ZU11dGF0
aW9uTGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgaW1wbCgpLT5yZW1vdmVNdXRhdGlvbkxpc3Rl
bmVyKEpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywg
Y3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9
CisKKwogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFwcGVySW5saW5lKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9k
ZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGQ2YzBmZTBlMDQ0ZDRlZTRkYTllOGU2
NGExMWZiMDk0YmU1MzI1MjIuLjc5MDNlZWZkMWUyMTFiZGQzZjdkYzEyZDhiYWUyYmExZjJiMTE2
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCkBAIC00NzksNiArNDc5LDEwIEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxkcwogICAg
ICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgImV2ZW50TGlzdGVuZXJDYWNoZUluZGV4
Iik7CiAgICAgfQogCisgICAgaWYgKElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgeworICAgICAg
ICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4
Iik7CisgICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1
c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwog
ICAgIH0KQEAgLTMyNTUsNiArMzI1OSwxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAg
IHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51
bGwoKSkiOwogICAgIH0KIAorICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAg
ICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8
VjhNdXRhdGlvbkxpc3RlbmVyKj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4
OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBl
IGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0
eXBlLmgifSA9IDE7CiAgICAgICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIx
OTYxZGMyODA5YTIwN2NmYmFlN2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcy
ZGRlZGM0Y2FiZTZlZGZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNp
bmNsdWRlICJWOE1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgor
I2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0
ZW5lck1hbmFnZXIuaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4
Tm9kZS5oIgogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4
MywxOSBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRM
aXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8
TXV0YXRpb25MaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAg
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKGxvb2t1cCA9PSBMaXN0ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlv
bkxpc3RlbmVyTWFuYWdlcjo6ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2xvYmFsUHJvdG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChj
b250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQ
cm90b3R5cGVJc0RPTVdpbmRvdyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAg
cmV0dXJuIDA7Cit9CisKICNpZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxp
dGllcwogUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVz
b2x2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRi
MDhhZTY3ZjU1NGIyMGFlZTI4ODE0OWY5MC4uZTBkYzEyNWI4YTI5OTRlZWZkYmNiNWNmNGRkODYw
NzJmMWVhNTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgK
QEAgLTg5LDYgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYXJn
ZXQqKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVu
dExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBM
aXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0
YXRpb25MaXN0ZW5lcj4gZ2V0TXV0YXRpb25MaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiwg
TGlzdGVuZXJMb29rdXBUeXBlKTsKIAogI2lmIEVOQUJMRShYUEFUSCkKICAgICAgICAgLy8gWFBh
dGgtcmVsYXRlZCB1dGlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEhpZGRlblByb3BlcnR5TmFtZS5oCmluZGV4IGRlYmE0YTUxZDc3ODA3OTA5MzMyNjdiOTJkMWY2
NDAyYTI3NGYwM2YuLmQzYWJiMDFmZGM4YmVlYjM3ZjAxOWFlYmZjYmQ4NzRiODllOGQ5YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVihvYmplY3RQcm90
b3R5cGUpIFwKICAgICBWKGxpc3RlbmVyKSBcCiAgICAgVihhdHRyaWJ1dGVMaXN0ZW5lcikgXAor
ICAgIFYobXV0YXRpb25MaXN0ZW5lcikgXAogICAgIFYoc2NyaXB0U3RhdGUpIFwKICAgICBWKGRl
dnRvb2xzSW5qZWN0ZWRTY3JpcHQpIFwKICAgICBWKHNsZWVwRnVuY3Rpb24pIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEyZDAyZjIwYTA4NDgyZDA1OTQ4YzZkNjlhMGFjZDRlYzQwZTI5YTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3Bw
CkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tVm9pZENhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiVjhHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisg
ICAgOiBtX2xpc3RlbmVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobGlzdGVuZXIp
KQorICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQoreworICAgIG1fbGlzdGVuZXIu
TWFrZVdlYWsodGhpcywgJndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOworfQorCitWOE11
dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIoKQoreworICAgIGlmICghbV9saXN0
ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOwor
ICAgICAgICBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldyYXBwZXIobGlzdGVuZXIp
OworICAgIH0KKyAgICBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIFY4TXV0YXRpb25MaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIqPihwYXJhbWV0ZXIpOwor
ICAgIGxpc3RlbmVyLT5kaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpCit7CisgICAgaWYgKCFtX2xpc3Rl
bmVyLklzRW1wdHkoKSkgeworICAgICAgICBtX2xpc3RlbmVyLkRpc3Bvc2UoKTsKKyAgICAgICAg
bV9saXN0ZW5lci5DbGVhcigpOworICAgIH0KK30KKwordm9pZCBWOE11dGF0aW9uTGlzdGVuZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8
TXV0YXRpb25SZWNvcmRWZWN0b3I+IHBvcE11dGF0aW9ucykKK3sKKyAgICBPd25QdHI8TXV0YXRp
b25SZWNvcmRWZWN0b3I+IG11dGF0aW9ucyA9IHBvcE11dGF0aW9uczsKKworICAgIC8vIERvbid0
IHJlZW50ZXIgVjggaWYgZXhlY3V0aW9uIHdhcyB0ZXJtaW5hdGVkIGluIHRoaXMgaW5zdGFuY2Ug
b2YgVjguCisgICAgaWYgKGNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG11dGF0aW9ucyk7CisgICAgQVNTRVJUKCFtdXRhdGlv
bnMtPmlzRW1wdHkoKSk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQs
IG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4ganNNdXRhdGlvbnMgPSB2ODo6QXJyYXk6Ok5ldyhtdXRhdGlv
bnMtPnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNpemUo
KTsgKytpKQorICAgICAgICBqc011dGF0aW9ucy0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHRv
VjgobXV0YXRpb25zLT5hdChpKS5nZXQoKSkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZ3ZbXSA9IHsKKyAgICAgICAganNNdXRhdGlvbnMKKyAgICB9OworCisgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICBib29sIGln
bm9yZWRSZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIGludm9rZUNhbGxiYWNrKGxpc3RlbmVyLCAx
LCBhcmd2LCBpZ25vcmVkUmV0dXJuVmFsdWUsIGNvbnRleHQpOworfQorCit1bnNpZ25lZCBWOE11
dGF0aW9uTGlzdGVuZXI6Omhhc2goKQoreworICAgIHJldHVybiBEZWZhdWx0SGFzaDxWOE11dGF0
aW9uTGlzdGVuZXIqPjo6SGFzaDo6aGFzaCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYzkyZTg0MmVhNTYzZDE2ZTkzOTNlOGIyMTk1ZmFjM2M3ZThhNjE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxp
c3RlbmVyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3RlbmVyX2gKKyNk
ZWZpbmUgVjhNdXRhdGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKKworI2luY2x1ZGUgPHY4Lmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5lciA6IHB1Ymxp
YyBNdXRhdGlvbkxpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRh
dGlvbkxpc3RlbmVyPiBjcmVhdGUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25z
dCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVjhNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3b3JsZENvbnRleHQp
KTsKKyAgICB9CisgICAgdmlydHVhbCB+VjhNdXRhdGlvbkxpc3RlbmVyKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8
TXV0YXRpb25SZWNvcmRWZWN0b3I+KTsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcikgeyByZXR1cm4gdGhpcyA9PSAmb3RoZXI7IH0KKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBn
ZXRMaXN0ZW5lck9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpP
YmplY3Q+OjpOZXcobV9saXN0ZW5lcik7CisgICAgfQorCitwcml2YXRlOgorICAgIFY4TXV0YXRp
b25MaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdvcmxkQ29u
dGV4dEhhbmRsZSYpOworICAgIHN0YXRpYyB2b2lkIHdlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCopOworICAgIHZvaWQgZGlzcG9zZUxp
c3RlbmVyT2JqZWN0KCk7CisKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2xpc3Rl
bmVyOworICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFY4TXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGExYmI1MTVjOGQ2MzZjMDg3Yjc1ZTc4MjYzODEwMzIyNzE0OTg5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlz
dGVuZXJNYW5hZ2VyX2gKKyNkZWZpbmUgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCisKKyNp
bmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0
ZW5lci5oIgorCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgaXMgYSBjb250YWluZXIgZm9yIFY4TXV0
YXRpb25MaXN0ZW5lciBvYmplY3RzIHRoYXQgdXNlcyBoaWRkZW4gcHJvcGVydGllcyBvZiB2ODo6
T2JqZWN0IHRvIHNwZWVkIHVwIGxvb2t1cHMuCitjbGFzcyBWOE11dGF0aW9uTGlzdGVuZXJNYW5h
Z2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBm
aW5kV3JhcHBlcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgICAgICBpZiAoIXZhbHVlLT5Jc09i
amVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGRvRmluZFdy
YXBwZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAgfQorCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmluZE9yQ3JlYXRlV3JhcHBlcih2
ODo6TG9jYWw8djg6OlZhbHVlPik7CisKKyAgICBzdGF0aWMgdm9pZCBjbGVhcldyYXBwZXIodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBsaXN0ZW5lck9iamVjdCkKKyAgICB7CisgICAgICAgIGxpc3Rl
bmVyT2JqZWN0LT5EZWxldGVIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRp
b25MaXN0ZW5lcigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIE11dGF0aW9uTGlz
dGVuZXIqIGRvRmluZFdyYXBwZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgICAgICB2ODo6
SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVy
ID0gb2JqZWN0LT5HZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25M
aXN0ZW5lcigpKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyLklzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TXV0YXRpb25MaXN0ZW5lcio+
KHY4OjpFeHRlcm5hbDo6VW53cmFwKGxpc3RlbmVyKSk7CisgICAgfQorfTsKKworaW5saW5lIFBh
c3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Zmlu
ZE9yQ3JlYXRlV3JhcHBlcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSkKK3sKKyAgICBBU1NF
UlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICBpZiAoIXZhbHVlLT5Jc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3Qg
PSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworCisgICAgTXV0YXRpb25MaXN0
ZW5lciogd3JhcHBlciA9IGRvRmluZFdyYXBwZXIob2JqZWN0KTsKKyAgICBpZiAod3JhcHBlcikK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
d3JhcHBlclB0ciA9IFY4TXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKG9iamVjdCwgV29ybGRDb250
ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCkpOworICAgIGlmICh3cmFwcGVyUHRyKQorICAgICAg
ICBvYmplY3QtPlNldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRhdGlvbkxp
c3RlbmVyKCksIHY4OjpFeHRlcm5hbDo6V3JhcCh3cmFwcGVyUHRyLmdldCgpKSk7CisKKyAgICBy
ZXR1cm4gd3JhcHBlclB0ci5yZWxlYXNlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4IDRmNzgzYjYxNTNlMzU4YzFhM2ZiODc0
MjIwMDEwN2IwZTI0NGI4ZTUuLjg2ZTRiNGIwYTI5NTFlYWNlY2JhOWY1MjY3NzVjMzI4YjM1MjI0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTY2
LDYgKzY2LDcgQEAgVjhMb2NhbENvbnRleHQ6On5WOExvY2FsQ29udGV4dCgpCiAvLyBBIHZhbHVl
IGNhbiBiZSBhZGRlZCBtb3JlIHRoYW4gb25jZSB0byB0aGUgRE9NIG9iamVjdC4KIHZvaWQgY3Jl
YXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGludCBjYWNoZUluZGV4KQogeworICAgIEFTU0VSVChvYmpl
Y3QtPkludGVybmFsRmllbGRDb3VudCgpID4gY2FjaGVJbmRleCk7CiAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gY2FjaGUgPSBvYmplY3QtPkdldEludGVybmFsRmllbGQoY2FjaGVJbmRleCk7CiAg
ICAgaWYgKGNhY2hlLT5Jc051bGwoKSB8fCBjYWNoZS0+SXNVbmRlZmluZWQoKSkgewogICAgICAg
ICBjYWNoZSA9IHY4OjpBcnJheTo6TmV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAppbmRleCAxMWYz
MDliNjk5NGExMDg5MDAyYTExMmI1ZmYwNTk0ODc3YWRlOTc5Li5mNWNmMmRkZWE2NGViYzcyZGRl
MTVkYTYxZWEzNGQ0ODEwMmMzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKQEAgLTYzLDE0ICs2
MywxNCBAQCB2b2lkIFY4Q3VzdG9tVm9pZENhbGxiYWNrOjpoYW5kbGVFdmVudCgpCiAgICAgaW52
b2tlQ2FsbGJhY2sobV9jYWxsYmFjaywgMCwgMCwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmdldCgpKTsKIH0KIAotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCitib29sIGludm9rZUNhbGxiYWNrKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIHY4OjpUcnlDYXRjaCBleGNl
cHRpb25DYXRjaGVyOwogICAgIGV4Y2VwdGlvbkNhdGNoZXIuU2V0VmVyYm9zZSh0cnVlKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNhbGxiYWNrRnVuY3Rpb247CiAgICAgaWYgKGNh
bGxiYWNrLT5Jc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6Q2Fz
dChjYWxsYmFjaykpOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj46Ok5ldyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoY2FsbGJhY2spKTsK
ICAgICB9IGVsc2UgaWYgKGNhbGxiYWNrLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBjYWxsYmFjay0+R2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgiaGFuZGxlRXZlbnQiKSk7CiAgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1
bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oCmluZGV4IDk0YmI3ODIxYzY1MzU3
NTdjMzRkNWEyY2MzYzEwMTU1Yzg1OTU3OGMuLjNjODAzYzIyMTljNGJlODcwYzk5OTE2ZDUwZmM0
ZDllZDJhMDJiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6
CiB9OwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIGNhbGxiYWNrIGZhaWxlZCAobnVsbCwgd3Jvbmcg
dHlwZSwgb3IgdGhyZXcgZXhjZXB0aW9uKS4KLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK2Jvb2wgaW52b2tlQ2FsbGJhY2sodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDRhZDEzZDRhZjdjZmQ1
MjQ2ZjgwZjY4MWFjZmM0OTk2ZjkwNGM1ZDcuLjVhOWY2OWNkNGNhZmQ5YTAzZjlkMDk4NjJkMGI1
YjQ2Y2QzMzE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29y
ZC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVu
dExpc3RlbmVyLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUu
aCIKICNpbmNsdWRlICJWOENEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIlY4Q29tbWVudC5oIgor
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKICNpbmNs
dWRlICJWOERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJWOERvY3VtZW50VHlwZS5oIgpA
QCAtNDgsMTEgKzUwLDEzIEBACiAjaW5jbHVkZSAiVjhFbnRpdHkuaCIKICNpbmNsdWRlICJWOEVu
dGl0eVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlY4RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IlY4TXV0YXRpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4
Tm90YXRpb24uaCIKICNpbmNsdWRlICJWOFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFRleHQuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0xMzEsNiArMTM1LDQxIEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIH0KIAordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Tm9kZTo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uTm9kZS53ZWJr
aXRBZGRNdXRhdGlvbkxpc3RlbmVyKCkiKTsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
bGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIoYXJnc1swXSwgTGlz
dGVuZXJGaW5kT3JDcmVhdGUpOworICAgIHVpbnQ4X3QgdHlwZU1hc2sgPSAwOworICAgIGlmICgh
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgYXJnc1sxXS0+SXNPYmplY3QoKSkgeworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1sxXSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4Q2hpbGRs
aXN0ID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJjaGlsZGxpc3QiKSk7CisgICAgICAg
IGlmICghdjhDaGlsZGxpc3QuSXNFbXB0eSgpICYmIHY4Q2hpbGRsaXN0LT5Cb29sZWFuVmFsdWUo
KSkKKyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGlsZGxpc3RGbGFn
OworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OEF0dHJpYnV0ZSA9IG9iamVjdC0+R2V0
KHY4OjpTdHJpbmc6Ok5ldygiYXR0cmlidXRlIikpOworICAgICAgICBpZiAoIXY4QXR0cmlidXRl
LklzRW1wdHkoKSAmJiB2OEF0dHJpYnV0ZS0+Qm9vbGVhblZhbHVlKCkpCisgICAgICAgICAgICB0
eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6QXR0cmlidXRlRmxhZzsKKyAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdjhDaGFyYWN0ZXJkYXRhID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6
TmV3KCJjaGFyYWN0ZXJkYXRhIikpOworICAgICAgICBpZiAoIXY4Q2hhcmFjdGVyZGF0YS5Jc0Vt
cHR5KCkgJiYgdjhDaGFyYWN0ZXJkYXRhLT5Cb29sZWFuVmFsdWUoKSkKKyAgICAgICAgICAgIHR5
cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzsKKyAgICB9CisgICAg
aWYgKGxpc3RlbmVyICYmIHR5cGVNYXNrKSB7CisgICAgICAgIFY4Tm9kZTo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSktPmFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHR5cGVNYXNrKTsKKyAg
ICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzBdLCBWOE5v
ZGU6Om11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6d2Via2l0UmVt
b3ZlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7
CisgICAgSU5DX1NUQVRTKCJET00uTm9kZS53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKCki
KTsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6
OmdldE11dGF0aW9uTGlzdGVuZXIoYXJnc1swXSwgTGlzdGVuZXJGaW5kT25seSk7CisgICAgaWYg
KGxpc3RlbmVyKSB7CisgICAgICAgIFY4Tm9kZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSktPnJl
bW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIuZ2V0KCkpOworICAgICAgICByZW1vdmVIaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4Tm9kZTo6bXV0YXRpb25MaXN0
ZW5lckNhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQor
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSogaW1wbCwgYm9vbCBmb3JjZU5l
d09iamVjdCkKIHsKICAgICBpZiAoIWltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5j
cHAKaW5kZXggNzQwMWMyODA1ZjI5ODBmNDgxMzBiYTAwNzQ1ZTY3MjEyYWIyODhmZS4uOWZjODRl
NjhkYzNhZWM5ZDlhMzU4OWM4MWZhMTQ2Yjg5NzM3ODk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRh
dGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvci5oIgpAQCAtMTk4LDYgKzE5OSw3IEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIGRpc3BhdGNoTXV0YXRpb24o
TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZCh0aGlzKSk7CiB9CiAKIHZvaWQg
Q2hhcmFjdGVyRGF0YTo6Y2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDZi
YTVhY2U3ZmU1N2YyMzM4ZTVjZDNlNmUxYzVhMjhmNWRhNjg5OTguLjYzMGQ2MWJjMDVlYTRmNjdi
MmRjZTJiMjI4NDlkOTdlNDk3MWYzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKQEAgLTM1LDExICszNSwxMyBAQAogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEwOTUsNiArMTA5NywxMSBAQCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxO
b2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5k
b2N1bWVudCgpOwogCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGluc2VydGVkTm9kZXM7Cisg
ICAgaW5zZXJ0ZWROb2Rlcy5hcHBlbmQoYyk7CisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkKKyAg
ICAgICAgYy0+cGFyZW50Tm9kZSgpLT5kaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3JkOjpj
cmVhdGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgU3RhdGljTm9kZUxpc3Q6OmFk
b3B0KGluc2VydGVkTm9kZXMpLCAwLCBjLT5uZXh0U2libGluZygpKSk7CisKICAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5P
REVJTlNFUlRFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0
YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdHJ1
ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CiAKQEAgLTExMTYsNiArMTEyMywxMiBAQCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQdHI8Tm9k
ZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9j
dW1lbnQoKTsKIAorICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZW1vdmVkTm9kZXM7CisgICAg
cmVtb3ZlZE5vZGVzLmFwcGVuZChjKTsKKworICAgIGlmIChjLT5wYXJlbnROb2RlKCkpCisgICAg
ICAgIGMtPnBhcmVudE5vZGUoKS0+ZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlvblJlY29yZDo6Y3Jl
YXRlQ2hpbGRsaXN0Q2hhbmdlZChjLT5wYXJlbnROb2RlKCksIDAsIFN0YXRpY05vZGVMaXN0Ojph
ZG9wdChyZW1vdmVkTm9kZXMpLCBjLT5uZXh0U2libGluZygpKSk7CisKICAgICAvLyBkaXNwYXRj
aCBwcmUtcmVtb3ZhbCBtdXRhdGlvbiBldmVudHMKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYm
IGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5PREVSRU1PVkVEX0xJU1RF
TkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5vZGUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI5ZWJmOWNjNzUzMGU3ZGQ4OTE1ZDE0Zjg3
MDcyOTY1Yjg0ZGRjYmIuLmM5NDNiZGY2NTI5ODQxYjVjNTg2YzY0MTgwMmIyYzZlZGI0NTczODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCkBAIC02OTksNiArNzAwLDggQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50
KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBkaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3Jk
OjpjcmVhdGVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGxvY2FsTmFtZSwgIiIsICIiKSk7CiB9CiAK
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzMyLDYgKzczNSw4
IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHls
ZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlm
eURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIGRpc3BhdGNoTXV0YXRp
b24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgbmFtZS5sb2Nh
bE5hbWUoKSwgIiIsICIiKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBFbGVtZW50Ojpj
cmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhZDhkODg0MTA0NTFkMjg2MzU3ZGVlMGE1NWQxMzNkNDY2OTZhMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBNdXRhdGlvbkxpc3RlbmVyX2gK
KworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3Jk
PiA+IE11dGF0aW9uUmVjb3JkVmVjdG9yOworCitjbGFzcyBNdXRhdGlvbkxpc3RlbmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4geworcHVibGljOgorICAgIHZpcnR1YWwg
fk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4p
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxpc3RlbmVy
JikgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpID0gMDsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFk
MDFmOGQzYjY2ZmYxOWQzZDM4MWIyNmQ3NGZlY2I3ZGM2ZjdhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIFB1cmVJbnRlcmZhY2UsCisg
ICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gTXV0YXRpb25MaXN0ZW5lciB7CisgICAgICAg
IC8vIHZvaWQgaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRbXSBtdXRhdGlvbnMpCisgICAg
ICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gQXJyYXkgbXV0YXRpb25zKTsKKyAgICB9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgxZTAyMDk3YjZhNDkx
MWVkZWEzMTdjNDJmNWE1NmI3NzFkMzYxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgRW1wdHlO
b2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEVtcHR5Tm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCkgY29u
c3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbXB0eU5v
ZGVMaXN0KCkgeyB9Cit9OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0
aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0
LCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBpbnNlcnRlZCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVt
b3ZlZCwgUGFzc1JlZlB0cjxOb2RlPiBuZXh0Tm9kZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENoaWxkbGlzdEZs
YWcsIHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2luc2VydGVkTm9kZXMgPSBpbnNlcnRlZDsK
KyAgICBpZiAoIW11dGF0aW9uLT5tX2luc2VydGVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5t
X2luc2VydGVkTm9kZXMgPSBFbXB0eU5vZGVMaXN0OjpjcmVhdGUoKTsKKyAgICBtdXRhdGlvbi0+
bV9yZW1vdmVkTm9kZXMgPSByZW1vdmVkOworICAgIGlmICghbXV0YXRpb24tPm1fcmVtb3ZlZE5v
ZGVzKQorICAgICAgICBtdXRhdGlvbi0+bV9yZW1vdmVkTm9kZXMgPSBFbXB0eU5vZGVMaXN0Ojpj
cmVhdGUoKTsKKyAgICBtdXRhdGlvbi0+bV9uZXh0Tm9kZSA9IG5leHROb2RlOworICAgIHJldHVy
biBtdXRhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11
dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFy
Z2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcmIHByZXZWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKEF0dHJpYnV0ZUZsYWcsIHRh
cmdldCkpOworICAgIG11dGF0aW9uLT5tX2F0dHJOYW1lID0gYXR0ck5hbWU7CisgICAgbXV0YXRp
b24tPm1fcHJldlZhbHVlID0gcHJldlZhbHVlOworICAgIG11dGF0aW9uLT5tX25ld1ZhbHVlID0g
bmV3VmFsdWU7CisgICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0
cjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZChQ
YXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0
aW9uUmVjb3JkKENoYXJhY3RlcmRhdGFGbGFnLCB0YXJnZXQpKTsKK30KKworc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZUZsYWdUb05hbWUoTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uVHlw
ZUZsYWcgZmxhZykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgY2hp
bGRsaXN0LCAoImNoaWxkbGlzdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgYXR0cmlidXRlLCAoImF0dHJpYnV0ZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgY2hhcmFjdGVyZGF0YSwgKCJjaGFyYWN0ZXJkYXRhIikpOworCisgICAg
c3dpdGNoIChmbGFnKSB7CisgICAgY2FzZSBNdXRhdGlvblJlY29yZDo6Q2hpbGRsaXN0RmxhZzoK
KyAgICAgICAgcmV0dXJuIGNoaWxkbGlzdDsKKyAgICBjYXNlIE11dGF0aW9uUmVjb3JkOjpBdHRy
aWJ1dGVGbGFnOgorICAgICAgICByZXR1cm4gYXR0cmlidXRlOworICAgIGNhc2UgTXV0YXRpb25S
ZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOgorICAgICAgICByZXR1cm4gY2hhcmFjdGVyZGF0YTsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm4gZW1w
dHlBdG9tOworICAgIH0KK30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKE11dGF0
aW9uVHlwZUZsYWcgdHlwZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90
eXBlKHR5cGVGbGFnVG9OYW1lKHR5cGVGbGFnKSkKKyAgICAsIG1fdHlwZUZsYWcodHlwZUZsYWcp
CisgICAgLCBtX3RhcmdldCh0YXJnZXQpCit7Cit9CisKK011dGF0aW9uUmVjb3JkOjp+TXV0YXRp
b25SZWNvcmQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvblJlY29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNDg3YWI1ZjcxNzA0M2Q2ZmZmZjU1ODAyZTM3
ZWYwZWNiZWVjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25SZWNvcmQuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblJlY29yZF9oCisjZGVm
aW5lIE11dGF0aW9uUmVjb3JkX2gKKworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJOb2Rl
TGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTXV0YXRpb25SZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblJlY29y
ZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBpbnNlcnRlZCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgUGFzc1JlZlB0
cjxOb2RlPiBuZXh0Tm9kZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
IGNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0
b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3Jl
YXRlVGV4dERhdGFDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKworICAgIHZpcnR1
YWwgfk11dGF0aW9uUmVjb3JkKCk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBOb2RlKiB0YXJnZXQoKSB7IHJldHVybiBtX3RhcmdldC5n
ZXQoKTsgfQorCisgICAgLy8gRm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcKKyAgICBOb2RlTGlzdCog
aW5zZXJ0ZWROb2RlcygpIHsgcmV0dXJuIG1faW5zZXJ0ZWROb2Rlcy5nZXQoKTsgfQorICAgIE5v
ZGVMaXN0KiByZW1vdmVkTm9kZXMoKSB7IHJldHVybiBtX3JlbW92ZWROb2Rlcy5nZXQoKTsgfQor
ICAgIE5vZGUqIG5leHROb2RlKCkgeyByZXR1cm4gbV9uZXh0Tm9kZS5nZXQoKTsgfQorCisgICAg
Ly8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJO
YW1lKCkgeyByZXR1cm4gbV9hdHRyTmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgcHJldlZhbHVl
KCkgeyByZXR1cm4gbV9wcmV2VmFsdWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKCkg
eyByZXR1cm4gbV9uZXdWYWx1ZTsgfQorCisgICAgLy8gTm90IHBhcnQgb2YgdGhlIElETCwgYnV0
IHVzZWQgaW50ZXJuYWxseSBmb3IgZmFzdCB0eXBlLWJhc2VkIG9wZXJhdGlvbnMuCisgICAgZW51
bSBNdXRhdGlvblR5cGVGbGFnIHsKKyAgICAgICAgQ2hpbGRsaXN0RmxhZyA9ICgxIDw8IDApLAor
ICAgICAgICBBdHRyaWJ1dGVGbGFnID0gKDEgPDwgMSksCisgICAgICAgIENoYXJhY3RlcmRhdGFG
bGFnID0gKDEgPDwgMikKKyAgICB9OworICAgIE11dGF0aW9uVHlwZUZsYWcgdHlwZUZsYWcoKSB7
IHJldHVybiBtX3R5cGVGbGFnOyB9CisKK3ByaXZhdGU6CisgICAgTXV0YXRpb25SZWNvcmQoTXV0
YXRpb25UeXBlRmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgQXRvbWljU3Ry
aW5nIG1fdHlwZTsKKyAgICBNdXRhdGlvblR5cGVGbGFnIG1fdHlwZUZsYWc7CisgICAgUmVmUHRy
PE5vZGU+IG1fdGFyZ2V0OworICAgIFJlZlB0cjxOb2RlTGlzdD4gbV9pbnNlcnRlZE5vZGVzOwor
ICAgIFJlZlB0cjxOb2RlTGlzdD4gbV9yZW1vdmVkTm9kZXM7CisgICAgUmVmUHRyPE5vZGU+IG1f
bmV4dE5vZGU7CisgICAgQXRvbWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgU3RyaW5nIG1fcHJl
dlZhbHVlOworICAgIFN0cmluZyBtX25ld1ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlN2JjY2VkNjFlMGRjOTZiYmEwYzc3NmNkYTliOTI1YjhjZDZiNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIE11dGF0aW9uUmVjb3JkIHsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIHR5cGU7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICB0YXJnZXQ7CisKKyAgICAgICAgLy8gRm9yIHR5
cGUgPT0gJ2NoaWxkbGlzdCcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0ICAg
ICAgIGluc2VydGVkTm9kZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAg
ICAgICByZW1vdmVkTm9kZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAg
ICAgICBuZXh0Tm9kZTsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgYXR0ck5hbWU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBwcmV2VmFsdWU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBuZXdWYWx1ZTsKKyAgICB9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA4NmZhMWJjN2MyYWQ5
Njk5OTkwYjY3ZmQ5MGRmZTM1NTZjZWZmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVj
b3JkLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsK
Kworc3RydWN0IE11dGF0aW9uQ29udGV4dCB7CisgICAgTXV0YXRpb25Db250ZXh0KFBhc3NSZWZQ
dHI8RG9jdW1lbnQ+IGQsIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbykKKyAgICAgICAg
OiBkb2N1bWVudChkKQorICAgICAgICAsIGxpc3RlbmVyKG8pCisgICAgeworICAgIH0KKworICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQ7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+
IGxpc3RlbmVyOworfTsKKworc3RydWN0IE11dGF0aW9uQ29udGV4dFB0ckhhc2ggeworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE11dGF0aW9uQ29udGV4dCoga2V5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEludEhhc2g8dWludDY0X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihQdHJIYXNoPERvY3VtZW50Kj46Omhhc2goa2V5LT5kb2N1bWVudC5nZXQoKSkpIDw8IDMyIHwg
a2V5LT5saXN0ZW5lci0+aGFzaCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBNdXRhdGlvbkNvbnRleHQqIGEsIGNvbnN0IE11dGF0aW9uQ29udGV4dCogYikKKyAgICB7
CisgICAgICAgIHJldHVybiBhLT5kb2N1bWVudCA9PSBiLT5kb2N1bWVudCAmJiAqYS0+bGlzdGVu
ZXIgPT0gKmItPmxpc3RlbmVyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8
TXV0YXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNvcmRWZWN0b3IqLCBNdXRhdGlvbkNvbnRleHRQ
dHJIYXNoPiBDb250ZXh0VmVjdG9yTWFwOworCit9IC8vIG5hbWVzcGFjZQorCitzdGF0aWMgQ29u
dGV4dFZlY3Rvck1hcCYgY29udGV4dFZlY3Rvck1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDb250ZXh0VmVjdG9yTWFwLCBtLCAoKSk7CisgICAgcmV0dXJuIG07Cit9CisKK3N0YXRp
YyBEZXF1ZTxPd25QdHI8TXV0YXRpb25Db250ZXh0PiA+JiBhY3RpdmVNdXRhdGlvbkNvbnRleHRz
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERlcXVlPE93blB0cjxNdXRhdGlvbkNvbnRl
eHQ+ID4sIGFjdGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOwor
fQorCit2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAgICB3aGlsZSAoIWFjdGl2ZU11dGF0
aW9uQ29udGV4dHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPE11dGF0aW9uQ29udGV4
dD4gY29udGV4dCA9IGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKS50YWtlRmlyc3QoKTsKKyAgICAg
ICAgT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiB2ID0gYWRvcHRQdHIoY29udGV4dFZlY3Rv
ck1hcCgpLnRha2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBjb250ZXh0LT5saXN0ZW5lci0+
aGFuZGxlRXZlbnQoY29udGV4dC0+ZG9jdW1lbnQuZ2V0KCksIHYucmVsZWFzZSgpKTsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIGVuc3VyZU11dGF0aW9uUXVldWVkKFBhc3NSZWZQdHI8TXV0YXRp
b25MaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11
dGF0aW9uKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRh
dGlvbjsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpKTsKKyAgICBBU1NFUlQobXV0YXRp
b24tPnRhcmdldCgpLT5kb2N1bWVudCgpKTsKKyAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBj
b250ZXh0ID0gYWRvcHRQdHIobmV3IE11dGF0aW9uQ29udGV4dChtdXRhdGlvbi0+dGFyZ2V0KCkt
PmRvY3VtZW50KCksIHBycExpc3RlbmVyKSk7CisKKyAgICBwYWlyPENvbnRleHRWZWN0b3JNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBjb250ZXh0VmVjdG9yTWFwKCkuYWRkKGNvbnRleHQu
Z2V0KCksIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gbmV3IE11dGF0aW9uUmVjb3JkVmVjdG9yOworICAgICAgICBhY3RpdmVNdXRh
dGlvbkNvbnRleHRzKCkuYXBwZW5kKGNvbnRleHQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgTXV0
YXRpb25SZWNvcmRWZWN0b3IqIHYgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAodi0+
aXNFbXB0eSgpIHx8IHYtPmxhc3QoKSAhPSBtdXRhdGlvbikKKyAgICAgICAgdi0+YXBwZW5kKG11
dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRhcmdldCgpCit7Cit9CisK
K3ZvaWQgTXV0YXRpb25UYXJnZXQ6OmFkZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRh
dGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgdWludDhfdCB0eXBlTWFzaykKK3sKKyAgICBSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIocHJwTGlzdGVuZXIsIHR5
cGVNYXNrKTsKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBlbnN1cmVNdXRhdGlvblRhcmdl
dERhdGEoKTsKKyAgICBzaXplX3QgaW5kZXggPSBkLT5saXN0ZW5lcnMuZmluZChyZWdpc3RlcmVk
TGlzdGVuZXIpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgZC0+bGlzdGVu
ZXJzLmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworICAgIGVsc2UKKyAgICAgICAgZC0+bGlz
dGVuZXJzW2luZGV4XS50eXBlcyB8PSB0eXBlTWFzazsKK30KKwordm9pZCBNdXRhdGlvblRhcmdl
dDo6cmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3sK
KyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBp
ZiAoIWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+
bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgqZC0+bGlzdGVuZXJzW2ldLmxp
c3RlbmVyID09ICpsaXN0ZW5lcikgeworICAgICAgICAgICAgZC0+bGlzdGVuZXJzLnJlbW92ZShp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNdXRh
dGlvblRhcmdldDo6ZW5xdWV1ZU11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBy
cE11dGF0aW9uKQoreworICAgIEFTU0VSVChwcnBNdXRhdGlvbik7CisKKyAgICBNdXRhdGlvblRh
cmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQgfHwgZC0+bGlz
dGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5lcnNb
aV0udHlwZXMgJiBtdXRhdGlvbi0+dHlwZUZsYWcoKSkKKyAgICAgICAgICAgIGVuc3VyZU11dGF0
aW9uUXVldWVkKGQtPmxpc3RlbmVyc1tpXS5saXN0ZW5lciwgbXV0YXRpb24pOworICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMmY0ZDA5YjIwNjVmZjBmODk0Nzc0NjdjOGU5YjM3MGJkM2JjOGRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmgKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTXV0YXRpb25UYXJnZXRfaAorI2RlZmluZSBNdXRhdGlvblRhcmdl
dF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXI7CitjbGFzcyBNdXRhdGlvblJlY29yZDsKK2NsYXNz
IE11dGF0aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgTXV0YXRpb25UYXJnZXQgeworcHVibGljOgor
ICAgIHZvaWQgYWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+
LCB1aW50OF90IHR5cGVNYXNrKTsKKyAgICB2b2lkIHJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0
YXRpb25MaXN0ZW5lciopOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTXV0YXRpb24oUGFz
c1JlZlB0cjxNdXRhdGlvblJlY29yZD4pID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
fk11dGF0aW9uVGFyZ2V0KCk7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRy
PE11dGF0aW9uUmVjb3JkPik7CisKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0
YXRpb25UYXJnZXREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBl
bnN1cmVNdXRhdGlvblRhcmdldERhdGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRhdGlvblF1
ZXVlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFy
Z2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MGJlMTBjMzBkMmUwYTNiOTQ0OTAwZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0RGF0
YV9oCisKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVy
PiBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0YSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEoKSB7IH0K
KyAgICB+TXV0YXRpb25UYXJnZXREYXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyVmVj
dG9yIGxpc3RlbmVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IE11dGF0aW9uVGFyZ2V0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzJkNzAzYWI1NDE5NGRl
OTY5OWYzMWE0OWU1ZDZhMTg2YzM2NWEyYS4uOTgyYzAyOGZlZjA5Njg0YWRjZDdiYjllZGRlN2Ji
NzNlYjY0OTcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25F
dmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRh
LmgiCkBAIC0yODU5LDYgKzI4NjAsMjMgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKK3ZvaWQgTm9kZTo6ZGlzcGF0Y2hNdXRhdGlvbihQ
YXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQdHI8TXV0
YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChOb2RlKiBuID0g
dGhpczsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkKKyAgICAgICAgbi0+ZW5xdWV1ZU11dGF0aW9u
KG11dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXREYXRhKiBOb2RlOjptdXRhdGlvblRhcmdl
dERhdGEoKQoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRp
b25UYXJnZXREYXRhKCkgOiAwOworfQorCitNdXRhdGlvblRhcmdldERhdGEqIE5vZGU6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVu
c3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxYTk5MmU1NDZiMTE2OGM4MzdlYzc5MTE1
NmQxODdmZjE5YWQ2MmQ3Li5kNzkzODM2YjdmYzY1ZGVmOTUzMTk1ZTFlNDE3MTg3NmY0ZDRhODEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCiAjaW5jbHVkZSAiVHJlZVNoYXJlZC5oIgpAQCAtOTMsNyArOTQsNyBAQCBlbnVtIFN0
eWxlQ2hhbmdlVHlwZSB7CiAgICAgU3ludGhldGljU3R5bGVDaGFuZ2UgPSAzIDw8IG5vZGVTdHls
ZUNoYW5nZVNoaWZ0CiB9OwogCi1jbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Citj
bGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWlu
ZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsK
ICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsK
IApAQCAtNTc3LDYgKzU3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1
cmVFdmVudFRhcmdldERhdGEoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE11dGF0aW9u
KFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+KTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0
RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERh
dGEqIGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGVudW0gTm9k
ZUZsYWdzIHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggYWFj
ZWYxNWI2NjViNTBlNjE5NDA1MGRjZThkM2EwMTdjYzE0ZjZkNS4uOTYyYjlmMjQ2ZjZkNTVmNmJi
MDJjNWM3MTE4YWQ1YTQ1MGFiMmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbApAQCAtMTU5LDYgKzE1OSwx
MSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwog
I2VuZGlmCiAKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdF
X09CSkVDVElWRV9DCisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOwor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0
YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKKwogICAgIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaAppbmRleCBiOTIxYTIzYTIzN2YyYzQ3ZjY3NDY1YmVkY2NmNDE3NjRm
OWU5M2M5Li4xZWEwOWEwOWJjZDc1ZGFjNGE4ZWFhNGRhYjU5ZmY2YjJkNDBkZDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDbGFz
c05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
UXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCkBAIC0xMjEsNiArMTIy
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhLmdldCgpOwog
ICAgIH0KIAorICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyBy
ZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7IH0KKyAgICBNdXRhdGlvblRhcmdldERh
dGEqIGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCisgICAgeworICAgICAgICBpZiAoIW1fbXV0
YXRpb25UYXJnZXREYXRhKQorICAgICAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9w
dFB0cihuZXcgTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25U
YXJnZXREYXRhLmdldCgpOworICAgIH0KKwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZvY3VzZWQ7IH0KICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKSB7
IG1faXNGb2N1c2VkID0gZm9jdXNlZDsgfQogCkBAIC0xMzMsNiArMTQyLDcgQEAgcHJpdmF0ZToK
ICAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0
YT4gbV9ub2RlTGlzdHM7CiAgICAgT3duUHRyPEV2ZW50VGFyZ2V0RGF0YT4gbV9ldmVudFRhcmdl
dERhdGE7CisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERh
dGE7CiAgICAgc2hvcnQgbV90YWJJbmRleDsKICAgICBib29sIG1fdGFiSW5kZXhXYXNTZXRFeHBs
aWNpdGx5IDogMTsKICAgICBib29sIG1faXNGb2N1c2VkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZlZWM4MTRj
Yzg5OGQ2Y2U3NGQxNDYwYzExZTM3ZmI3Njg5MzE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgUmVnaXN0ZXJl
ZE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciB7Cisg
ICAgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiBsLCB1aW50OF90IHR5cGVNYXNrKQorICAgICAgICA6IGxpc3RlbmVyKGwpCisgICAgICAgICwg
dHlwZXModHlwZU1hc2spIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAq
bGlzdGVuZXIgPT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKworICAgIFJlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVzOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3ZDIxYjk2MmExZGIyYjBh
MDZlNjNlOTA2YmI2N2QzZjJkLi5mYjdlYjBjZDhiMWY4NWExOTJhOTBkNzFlMTkwNmU0NmQ3MmU3
ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5j
bHVkZSAiTWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMTg4Myw0ICsxODg0LDkgQEAgU3RvcmFnZUluZm8qIERPTVdp
bmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogfQogI2VuZGlmCiAKK3ZvaWQgRE9NV2lu
ZG93OjpzcGluTXV0YXRpb25RdWV1ZSgpCit7CisgICAgOjpXZWJDb3JlOjpzcGluTXV0YXRpb25R
dWV1ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAppbmRleCBhMmFkODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZkLi5kYzliMDFk
YzVjY2FjNjQ5OGZjYWRmMjNlYTI3Yjc3M2I3NDdhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKQEAgLTQxNCw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBlcmZv
cm1hbmNlKiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBzcGlu
TXV0YXRpb25RdWV1ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2luZG93KEZyYW1l
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwMzY2YTFmYjdlMTQ3
NTVlZTE1NTRhOGEzYzBmZWMxMTk2Li42MjI3MTU3MDIzOTNhODk3MDQzZTFhM2MzODQyMmRmNGUy
OGUzY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC04MDMsNiArODAzLDExIEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICAvLyB3aW5kb3cudG9TdHJpbmcoKSByZXF1aXJlcyBz
cGVjaWFsIGhhbmRsaW5nIGluIFY4CiAgICAgICAgIFtWOERvTm90Q2hlY2tTaWduYXR1cmUsIERv
Tm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tLCBEb250RW51bV0gRE9NU3RyaW5nIHRvU3Ry
aW5nKCk7CiAjZW5kaWYgLy8gZGVmaW5lZChWOF9CSU5ESU5HKQorCisgICAgICAgIC8vIEZJWE1F
KGFkYW1rKTogRE8gTk9UIFNVQk1JVAorICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGV4cG9z
ZWQgdG8gSlMgdW50aWwgZW1iZWRkZXJzIGFyZSBtb2RpZmllZCB0byBjYWxsIHNwaW5NdXRhdGlv
blF1ZXVlKCkKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiBlYWNoIHRhc2suCisgICAgICAgIHZv
aWQgc3Bpbk11dGF0aW9uUXVldWUoKTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105241</attachid>
            <date>2011-08-25 14:25:35 -0700</date>
            <delta_ts>2011-08-29 16:50:39 -0700</delta_ts>
            <desc>Make Document, DocumentFragment, and Element implement MutationTarget instead of Node</desc>
            <filename>bug-66079-20110825142533.patch</filename>
            <type>text/plain</type>
            <size>110073</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJj
NmQxYjc5Njk2Yzc5NGEzNWJiLi45MmUzNmJmNzg3ZmFlOWVmOTMzZWViYmFkZWQ3NzRkNTRjMzEx
YTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjUgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFu
IHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5lIHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29t
cGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZWY2MzY4ZTIzYTAyZmE3NmFmMjQyZDBmMTc2YzIwYjBh
ZDRkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCB0aGF0IE11dGF0aW9u
TGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG11dGF0aW9uc1swXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVkTm9kZXNb
MF0KK1BBU1MgbXV0YXRpb25zWzFdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1sx
XQorUEFTUyBtdXRhdGlvbnNbMl0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRlZE5vZGVzWzJd
CitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBsaXN0ZW5lckNh
bGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgdGV4dE5vZGVzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmluc2VydGVkTm9k
ZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1swXQorUEFTUyBsaXN0ZW5lckNhbGxlZCBpcyB0cnVlCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxp
c3RlbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA2YTA3NDAzZjM5ZTE5ZDEyOTUxZWE5OTUwYzEzMDhj
ZmQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9u
LWxpc3RlbmVyLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzxodG1sPgorPGhlYWQ+CisgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgIDxkaXYgaWQ9InNhbmRib3giIHN0eWxlPSJkaXNwbGF5
Om5vbmUiPjwvZGl2PgorICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0aGF0
IE11dGF0aW9uTGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuJyk7CisgICAgICAgIHZhciBtdXRh
dGlvbnMgPSBudWxsOworICAgICAgICB2YXIgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKyAgICAg
ICAgdmFyIGluc2VydGVkTm9kZXM7CisgICAgICAgIHZhciByZW1vdmVkTm9kZXM7CisgICAgICAg
IHZhciBtb2RpZmllZEF0dHJzOworICAgICAgICB2YXIgdGV4dE5vZGVzOworICAgICAgICB2YXIg
ZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnM7CisKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkg
eworICAgICAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICAgICAgbGlzdGVuZXJD
YWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgICAgIHZh
ciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVkSW5kZXggPSAwOwor
ICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgdGV4dE5vZGVJ
bmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxpc3QnKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbVtpXS5pbnNlcnRlZE5vZGVzLmxl
bmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WycgKyBpICsgJ10uaW5zZXJ0ZWROb2Rlc1snICsgaiArICddJywgJ2luc2VydGVkTm9kZXNbJyAr
IChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3ZlZE5vZGVzLmxlbmd0
aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5vZGVzWycgKyAocmVt
b3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBpICsgJ10uYXR0ck5h
bWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4dE5vZGVzWycgKyAo
dGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpbnNlcnRlZE5vZGVzID0gW107CisgICAgICAgICAgICByZW1vdmVk
Tm9kZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsKKyAgICAgICAgICAg
IHRleHROb2RlcyA9IFtdOworICAgICAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzdXNwZW5kTGlzdGVuaW5nKCkgeworICAgICAgICAgICAg
ZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAg
IH0KKyAgICAgICAgZnVuY3Rpb24gcmVzdW1lTGlzdGVuaW5nKCkgeworICAgICAgICAgICAgZG9j
dW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgZG9jdW1lbnRMaXN0ZW5l
ck9wdGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJibGluZyIsIGFuZCBkZS1kdXBpbmcu
CisgICAgICAgIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zID0ge2NoaWxkbGlzdDogdHJ1ZX07Cisg
ICAgICAgIGRvY3VtZW50LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIGRvY3Vt
ZW50TGlzdGVuZXJPcHRpb25zKTsKKyAgICAgICAgdmFyIGEgPSBzYW5kYm94LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGEudGV4dENvbnRlbnQg
PSAnaGVsbG8sIHdvcmxkJzsKKyAgICAgICAgdmFyIGIgPSBzYW5kYm94LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGluc2VydGVkTm9kZXMgPSBb
YSwgYS5maXJzdENoaWxkLCBiXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAg
ICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxl
ZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgc2FuZGJveC53
ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7Cisg
ICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoYik7CisgICAgICAgIHJlbW92ZWROb2RlcyA9IFti
XTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3Rlbmlu
ZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJl
c3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAg
ICAgIC8vIFRlc3QgYXR0cmlidXRlIG11dGF0aW9uLgorICAgICAgICBzYW5kYm94LndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAg
bW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgc2FuZGJveC5zZXRBdHRyaWJ1
dGUoJ2RhdGEtZm9vJywgJ215ZGF0YScpOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOwor
ICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3RlbmVy
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBjaGFyYWN0ZXJkYXRhIG11dGF0aW9u
LgorICAgICAgICBhLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGFyYWN0
ZXJkYXRhOiB0cnVlfSk7CisgICAgICAgIHRleHROb2RlcyA9IFthLmZpcnN0Q2hpbGRdOworICAg
ICAgICBhLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBzcGlu
TXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7
CisgICAgICAgIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBkaXNj
b25uZWN0ZWQgRG9jdW1lbnRGcmFnbWVudAorICAgICAgICB2YXIgZnJhZyA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0
YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIGZyYWcud2Via2l0QWRkTXV0YXRpb25M
aXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICB2YXIgZCA9IGZy
YWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAg
aW5zZXJ0ZWROb2RlcyA9IFtkXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAg
ICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxl
ZCA9IGZhbHNlOworCisgICAgICAgIHNhbmRib3gud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lcik7CisgICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVu
ZXIobGlzdGVuZXIpOworICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKSk7CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1
c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgnbGlzdGVuZXJDYWxsZWQn
KTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMmNmZDNkZDczMGY0MmNlZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uNjRjNmJl
ZGNmYWYzZDA3MzQxM2EyODhhM2RmZGRmZjY4MWUwNGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MCBAQAorMjAxMS0wOC0yNSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbd29yayBpbiBwcm9ncmVzc10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0
YXRpb25UYXJnZXQsIGEgcmVwbGFjZW1lbnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxl
bWVudHMgYW4gZXhwZXJpbWVudGFsLCB2ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAg
ICAgIGhvcGUgb2YgZXZlbnR1YWxseSByZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkg
aXMgYmFzZWQgaW4KKyAgICAgICAgbGFyZ2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNp
Y2tpbmcgaW4gYSBtZXNzYWdlIHRvIHB1YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9s
aXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2
OS5odG1sCisKKyAgICAgICAgVGhhdCB0aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBm
dWxseSBiZWVuIHN1bW1hcml6ZWQgYnkKKyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJl
Y2VudCBtZXNzYWdlOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVi
bGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0
aGF0IHRoaXMgcGF0Y2ggaXMgaW4gbm8gd2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24uIFRoZSBiaWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0
dWFsIGRpc3BhdGNoaW5nCisgICAgICAgIG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRh
dGlvbkxpc3RlbmVyczogdGhlIGluY2x1ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQg
Y2FsbHMgYSAic3Bpbk11dGF0aW9uUXVldWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAg
bm90aWZpY2F0aW9ucy4gVGhpcyBpcyBub3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0
byBKUywKKyAgICAgICAgdGhvdWdoOiBteSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0
YXRpb25RdWV1ZSBmcm9tCisgICAgICAgIEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdl
YkNvcmUgb3IgKG1vcmUgbGlrZWx5KSBpbgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBh
IHNlcGFyYXRlIGNoYW5nZSB3aGljaCBpbXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4g
Q2hyb21pdW0uCisKKyAgICAgICAgVGhlIG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRo
aXMgcGF0Y2ggaXMgdGhhdCBNdXRhdGlvblJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRj
aGVkIGluIGFsbCB0aGUgcHJvcGVyIHBsYWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAg
ICAgIGlubmVySFRNTCBpcyBub3QgYXMgd2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkg
YSBtYXR0ZXIgb2YKKyAgICAgICAgd2FudGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQg
ZmVlZGJhY2s6IGl0IHNob3VsZG4ndCBiZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0
aW9uUmVjb3JkIGRpc3BhdGNoaW5nIGluIGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4K
KworICAgICAgICBUZXN0OiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlv
bkxpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVy
Ojppc29sYXRlZFdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6
d3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBw
ZXIpOgorICAgICAgICBKU011dGF0aW9uTGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZl
bnRMaXN0ZW5lciwKKyAgICAgICAgd2l0aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVh
c29uIGZvciBleGlzdGluZworICAgICAgICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25M
aXN0ZW5lciBuZWVkcyB0byBiZWhhdmUKKyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBp
biB0aGF0IGR1cGxpY2F0ZSBhZGRpdGlvbnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVx
dWlyZXMgdGhlIG9wZXJhdG9yPT0gbWV0aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZv
aWQgZGlzcGF0Y2hpbmcgdGhlIHNhbWUgTXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFu
IG9uY2UgdG8gYSBnaXZlbiBsaXN0ZW5lciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBh
IEhhc2hNYXAsIHRodXMgdGhlIHxoYXNofCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVu
ZXJDYWxsKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxG
aWVsZHMpOgorICAgICAgICAoR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1
ZSk6CisgICAgICAgIFNpbmNlIE11dGF0aW9uTGlzdGVuZXJzIHRoZW1zZWx2ZXMgYXJlIGN1c3Rv
bSwgc28KKyAgICAgICAgbXVzdCBiZSBtdXRhdGlvbiBsaXN0ZW5lciBhZGRpdGlvbiBhbmQgcmVt
b3ZhbC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11
dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+
VjhNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11
dGF0aW9uTGlzdGVuZXI6OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWOE11dGF0aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlv
bkxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlz
dGVuZXJPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5h
Z2VyOjpmaW5kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJN
YW5hZ2VyOjpjbGVhcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlcjo6ZG9GaW5kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9u
TGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVx
dWl2YWxlbnRzIG9mIHRoZSBKU011dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVu
RGVwZW5kZW5jeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENh
bGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2Vu
ZXJhbGl6ZWQgaW52b2tlQ2FsbGJhY2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgor
ICAgICAgICBWOE11dGF0aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGRvbS9D
aGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3Bh
dGNoTW9kaWZpZWRFdmVudCk6CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRh
dGlvbnMuCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNw
YXRjaENoaWxkUmVtb3ZhbEV2ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11
dGF0aW9ucy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmVuc3VyZU11dGF0
aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIERp
c3BhdGNoICJhdHRyaWJ1dGUiIG11dGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVN
dXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uTGlzdGVuZXI6On5NdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBkb20v
TXV0YXRpb25MaXN0ZW5lci5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29y
ZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNo
aWxkbGlzdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0
ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNy
ZWF0ZVRleHREYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0eXBlRmxhZ1RvTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCk6CisgICAgICAg
ICogZG9tL011dGF0aW9uUmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25SZWNvcmQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6aW5zZXJ0ZWROb2Rlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5vZGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpuZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvblJlY29yZDo6YXR0ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNv
cmQ6OnByZXZWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV3VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGVGbGFnKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaWRsOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25SZWNv
cmRzIGFyZSBhbmFsb2dvdXMgdG8gRXZlbnRzOiB0aGV5IGhvbGQgZGF0YQorICAgICAgICBhYm91
dCBhIHNpbmdsZSBtdXRhdGlvbi4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0
UHRySGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0
aW9uQ29udGV4dFB0ckhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0
b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1
cmVNdXRhdGlvblF1ZXVlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11
dGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRB
ZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3
ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
VGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oLgorICAgICAgICBNdXRhdGlvblRhcmdldCBpcyBhbmFsb2dvdXMgdG8gRXZlbnRUYXJn
ZXQsIGFuZCBpcyBhIG1peGluIGZvcgorICAgICAgICBEb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVu
dCwgYW5kIEVsZW1lbnQuCisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5o
LgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJn
ZXREYXRhKToKKyAgICAgICAgKiBkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3Rl
cmVkTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRp
b25MaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAg
ICAgIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBh
cnQgb2YgdGhlIGNoYW5nZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2Ug
aXQgZWFzeSB0byBkZWFsIHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBv
dXQgdGhlIHRpbWUtdG8tcnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVy
SW5uZXJSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5
ZDJjMDJhODRhNWEyZTc2M2FkOTZjNTM3MC4uOWU3OGZjMTRlMjVlYjc1MzE5NGFmNDJiNDE4MTk3
MzY4NDBhNTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCw4
IEBACiAjaW5jbHVkZSAiSlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNl
RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNN
dXRhdGlvbkxpc3RlbmVyLmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKICNp
bmNsdWRlICJKU05hbWVkTm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuY3BwIgog
I2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggMjZiNjBhYjMxMzFkOWFlNGY2ZjIzNjM0MTcxMjUwZjZhNTVjMDdm
OC4uYmUzYjA1NDJhOTMwZDI5YmJlMWFmOWExZWVjNjYyZjNhNzQxODQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMTUsNiArMzE1LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAg
ICAgTWV0YWRhdGFDYWxsYmFjayBcCiAgICAgTW91c2VFdmVudCBcCiAgICAgTXV0YXRpb25FdmVu
dCBcCisgICAgTXV0YXRpb25MaXN0ZW5lciBcCisgICAgTXV0YXRpb25SZWNvcmQgXAogICAgIE5h
bWVkTm9kZU1hcCBcCiAgICAgTmF2aWdhdG9yIFwKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ciBcCkBAIC01NzEsNyArNTczLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAKIC5QSE9OWSA6IGFsbAog
Ci1KU19ET01fSEVBREVSUz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
SlNFdmVudExpc3RlbmVyLmggSlNFdmVudFRhcmdldC5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkp
CitKU19ET01fSEVBREVSUz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
SlNFdmVudExpc3RlbmVyLmggSlNFdmVudFRhcmdldC5oIEpTTXV0YXRpb25MaXN0ZW5lci5oLCQo
RE9NX0NMQVNTRVM6JT1KUyUuaCkpCiAKIFdFQl9ET01fSEVBREVSUyA6PQogaWZlcSAoJChmaW5k
c3RyaW5nIEJVSUxESU5HX1dYLCQoRkVBVFVSRV9ERUZJTkVTKSksIEJVSUxESU5HX1dYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBmNTE4NjAwYTRlMTQxOWQwOTY5
M2Y5ZTAzNjQwNjE5MWNjMmYxYTRjLi45OWFhNzlhNzVjOTVmMjM2YjJiZjgzNzg3OGZkMjVhMDVl
MWU0YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjMxLDYg
KzIzMSw3IEBACiAgICAgICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBiaW5kaW5ncy92OC9jdXN0b20g
ZXhpc3QgZm9yIHRoZXNlLgogICAgICAgJy4uL2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAg
ICAnLi4vZG9tL0V2ZW50VGFyZ2V0LmlkbCcsCisgICAgICAnLi4vZG9tL011dGF0aW9uTGlzdGVu
ZXIuaWRsJywKICAgICAgICcuLi9odG1sL1ZvaWRDYWxsYmFjay5pZGwnLAogCiAgICAgICAjIEJp
bmRpbmdzIHdpdGggY3VzdG9tIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCAxNjg0NGI3MTAxNzhhNzEyMjE4ZmZkNjA2YTJjYmMyMzNkMGNkMDcyLi45NzJi
NmE3MzcxNGM1ZjBlYjZiNTg5NzVjMGQ3OGJlMDM2N2IzNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMTc5LDYgKzExNzksOCBAQAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlUG9ydC5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL011dGF0
aW9uRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAor
ICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9O
YW1lZE5vZGVNYXAuaWRsJywKICAgICAgICAgICAgICdkb20vTm9kZS5pZGwnLAogICAgICAgICAg
ICAgJ2RvbS9Ob2RlRmlsdGVyLmlkbCcsCkBAIC0yMDc3LDYgKzIwNzksOSBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0
YXRpb25MaXN0ZW5lci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25M
aXN0ZW5lci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJN
YW5hZ2VyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1Y4TlBVdGlscy5jcHAnLApAQCAtNTMyNiw2ICs1MzMxLDEyIEBACiAgICAgICAgICAg
ICAnZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9u
RXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5oJywKKyAgICAgICAg
ICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25S
ZWNvcmQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuaCcsCisgICAgICAg
ICAgICAnZG9tL011dGF0aW9uVGFyZ2V0LmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9u
VGFyZ2V0LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCcsCiAgICAg
ICAgICAgICAnZG9tL05hbWVOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9k
ZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5jcHAnLApAQCAtNTM2Nyw2
ICs1Mzc4LDcgQEAKICAgICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAg
ICAgICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZE11
dGF0aW9uTGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NDYzZTUyN2Rl
NmZkYTMwYWI3OTk2OGU2ZWFiNGM5YTJiZC4uOWYzZTNiMDkyMjI4YTE3OWRjNDlmZTA5OGNmZTU3
ZmNhOTNmMTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTQxMCw5ICs1NDEwLDE3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYw
MDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJp
Y3NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDNUU5QjY3NzEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEw
Njk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1
RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVD
MDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNjcxREEzRTEz
RTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyog
SlNNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJCUM2NzFEQTNGMTNFMzcxNDkwMDU1OEFFOSAv
KiBKU011dGF0aW9uUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNjcxREEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5o
ICovOyB9OworCQlDNjcyQTJEMzEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcyQTJE
MjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi87IH07CiAJCUM2RDc0
QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUw
MDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQw
OUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAw
QjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZGNDEwNDcx
MzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlC
YXNlLmNwcCAqLzsgfTsKKwkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVj
b3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2
RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJCUM2
RjY3MTU0MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NjEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovOyB9OworCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM2RjY3
MTVDMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUz
QjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIw
MERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0
aW9uTGlzdGVuZXIuaCAqLzsgfTsKIAkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07
CiAJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAw
RTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5
NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjEzNyw5ICsxMjE0NSwyMiBAQAogCQlDNUQ0QUE3
ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdseXBoTWV0cmljc01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVF
RERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJl
Y29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9u
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0
OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNdXRhdGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNjcyQTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2MTMwQzZFODkw
MDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25M
aXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRjEzRTM1RTVF
MDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
TXV0YXRpb25MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3
MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29y
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJlY29yZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyog
TXV0YXRpb25SZWNvcmQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uUmVjb3Jk
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDYxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE11dGF0aW9uVGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUM2RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdpc3RlcmVkTXV0YXRp
b25MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE1
QTEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0
aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlv
bkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlC
QUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVl
bi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNTksNiArMTMxODAsNyBAQAogCQkJCTg5ODc4NTc2
MTIyQ0ExREEwMDNBQUJEQSAvKiBGaWxlQVBJICovLAogCQkJCUE4M0I3OTA4MENDQUZGMkIwMDBC
MDgyNSAvKiBIVE1MICovLAogCQkJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0
b3IgKi8sCisJCQkJQzY3MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJ
CTMzNTAzQzlDMTAxNzlBOUEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTFBQzIy
NjAyMERCNjlFQTcwMDg5QjY2OSAvKiBPZmZsaW5lICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEw
MEZERjk1OSAvKiBQbHVnaW5zICovLApAQCAtMTU0MDUsNiArMTU0MjcsNyBAQAogCQkJCTg1QUZB
N0FCMEFBRjNCQjAwMEU4NDMwNSAvKiBFdmVudHMgKi8sCiAJCQkJODVDNTZEMDMwQUE4QkFBNzAw
RDk1NzU1IC8qIEhUTUwgKi8sCiAJCQkJODVFNzExM0QwQUM1RDRBMTAwNTMyNzBGIC8qIEludGVy
bmFsICovLAorCQkJCUM2NzFEQTVEMTNFMzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJ
CQk4NTM4RjA1NzBBRDcyMkI5MDA2QTgxRDEgLyogUmFuZ2VzICovLAogCQkJCTg1MDY1NzA0MEFB
QjQ3NkMwMDJEMTVDMCAvKiBTdHlsZVNoZWV0cyAqLywKIAkJCQk4NUEwRjk4RTBBQzcxNkY0MDAx
NjFGREMgLyogU1ZHICovLApAQCAtMTg1MTMsNiArMTg1MzYsOCBAQAogCQkJCTMzMTRBQ0VBMTA4
OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlG
MUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4
MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCisJCQkJQzZG
NjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJ
QzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJ
CTkzQjcwRDRGMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
ICovLAogCQkJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuaCAqLywKIAkJCQkxNENEOEQ4MTEwNkI1MjkwMDBBNDZEMjMgLyogSlNTaGFyZWRXb3Jr
ZXJDdXN0b20uY3BwICovLApAQCAtMTkxNjgsNiArMTkxOTMsMjIgQEAKIAkJCXRhYldpZHRoID0g
NDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzY3MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8q
IE11dGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8sCisJ
CQkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJ
CSk7CisJCQluYW1lID0gTXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlDNjcxREE1RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0
Q0I3RCAvKiBUaHJlYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTE5OTE0LDYgKzE5OTU1LDE0IEBACiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUw
IC8qIE11dGF0aW9uRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAv
KiBNdXRhdGlvbkV2ZW50LmggKi8sCiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11
dGF0aW9uRXZlbnQuaWRsICovLAorCQkJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvbkxpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uTGlzdGVuZXIuaWRsICovLAorCQkJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZC5jcHAgKi8sCisJCQkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uUmVjb3JkLmggKi8sCisJCQkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
UmVjb3JkLmlkbCAqLywKKwkJCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuY3BwICovLAorCQkJCUM2RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRh
cmdldC5oICovLAorCQkJCUM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdl
dERhdGEuaCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFw
LmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmgg
Ki8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8s
CkBAIC0xOTk3OCw2ICsyMDAyNyw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8q
IFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJF
MCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIx
M0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJ
QTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywK
IAkJCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8s
CiAJCQkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywK
QEAgLTIyMDMyLDYgKzIyMDgyLDggQEAKIAkJCQk4OTg3ODVCOTEyMkNBMkE3MDAzQUFCREEgLyog
SlNNZXRhZGF0YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEyQjQ4
MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5
RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
NkY2NzE1RDEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDNjcxREEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWRO
b2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyog
SlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0
NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDA1
LDYgKzIyNDU3LDggQEAKIAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRl
eHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8q
IE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRBMEE0NEVGQzcw
MEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1NTEz
RTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2
NzJBMkQzMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVY
UGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxODEsNiArMjYyMzUsMTAgQEAK
IAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTlERTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0Mu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5
QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1
RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bkxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0
ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyYTY1MDczODJiZWM0NzRkNDYyYzgzYzEyNTUyMzhlMTM4
N2QyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU011
dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25S
ZWNvcmQuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTTXV0YXRpb25M
aXN0ZW5lcjo6SlNNdXRhdGlvbkxpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fd3JhcHBl
cigqaXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQorICAgICwgbV9pc29sYXRl
ZFdvcmxkKGlzb2xhdGVkV29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNG
dW5jdGlvbi5zZXRNYXlCZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFw
cGVyLCBmdW5jdGlvbik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKwor
fQorCitKU011dGF0aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIoKQoreworfQorCit2
b2lkIEpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rv
cj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0
YXRpb25zID0gcG9wTXV0YXRpb25zOworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VS
VCghbXV0YXRpb25zLT5pc0VtcHR5KCkpOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmpl
Y3QqIGpzRnVuY3Rpb24gPSBtX2pzRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+
aW1wbCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBUaGUgd2luZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgorICAgIC8vIEZJWE1F
OiBBIGJldHRlciBmaXggZm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01XaW5kb3c6OmZyYW1l
KCkgdG8gbm90IHJldHVybiBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cgdXNlZCB0byBiZSBp
bi4KKyAgICBpZiAoZnJhbWUtPmRvbVdpbmRvdygpICE9IHdpbmRvdy0+aW1wbCgpKQorICAgICAg
ICByZXR1cm47CisgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBj
b250ZXh0cz8KKyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7
CisgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0
KSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUgaGFuZGxl
RXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJo
YW5kbGVFdmVudCIpKTsKKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5j
dGlvbiA9IEpTVmFsdWUoKTsKKyAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxs
RGF0YShjYWxsRGF0YSk7CisgICAgfQorCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9u
ZSkgeworICAgICAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtdXRhdGlvbkxpc3Q7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG11
dGF0aW9uTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQo
aSkuZ2V0KCkpKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAg
ICBhcmdzLmFwcGVuZChjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9u
TGlzdCkpOworCisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFs
T2JqZWN0U2NvcGUoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8g
Z2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAg
ICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVF
dmVudEZ1bmN0aW9uKQorICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwg
YXJncyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1
cmUgb3V0IHdoYXQgdGhlIHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAg
ICAgLy8gRG9jdW1lbnQgb3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50
VGFyZ2V0ID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoMCktPnRhcmdl
dCgpKTsKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOworICAgICAg
ICB9CisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOworCisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNl
cHRpb24oZXhlYyk7CisgICAgfQorfQorCitib29sIEpTTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0
b3I9PShjb25zdCBNdXRhdGlvbkxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBjb25zdCBKU011
dGF0aW9uTGlzdGVuZXIqIGpzTXV0YXRpb25MaXN0ZW5lciA9IHN0YXRpY19jYXN0PGNvbnN0IEpT
TXV0YXRpb25MaXN0ZW5lcio+KCZsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9
PSBqc011dGF0aW9uTGlzdGVuZXItPm1fanNGdW5jdGlvbjsKK30KKwordW5zaWduZWQgSlNNdXRh
dGlvbkxpc3RlbmVyOjpoYXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8SlNDOjpKU09i
amVjdCo+OjpIYXNoOjpoYXNoKG1fanNGdW5jdGlvbi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxp
c3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmYTE2YzlmMzc3NWZjMzJhOTlhNmVlN2M5MmQ3NThiN2Iy
ZGUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgSlNNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUg
SlNNdXRhdGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNp
bmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9Xcml0ZUJhcnJpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3Mg
SlNNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTTXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQq
IGlzb2xhdGVkV29ybGQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTXV0
YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkpTTXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpOworICAgIHZpcnR1YWwg
dW5zaWduZWQgaGFzaCgpOworCisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CisKKyAgICBKU0M6OkpTT2Jq
ZWN0KiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKSBjb25zdCB7IG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7
IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCitwcml2
YXRlOgorICAgIEpTTXV0YXRpb25MaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlND
OjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKwor
ICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9u
OworICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKworICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTTXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDc0ZjBkMDg3ZDdiMWI0ZjgxYTAxN2UzN2E0YWUxYjhlMjk5M2QzYmQuLjU0N2U0MTUwM2UwZDAx
YzliOWI5NThkNTRjMzI5NmZjM2VlNmM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODcsNiArMTg3LDUwIEBAIEVO
RAogICAgIHJldHVybiBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKIH0KIAorc3ViIEdlbmVy
YXRlTXV0YXRpb25MaXN0ZW5lckNhbGwKK3sKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7
CisgICAgbXkgJHBhc3NSZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/
ICIiIDogIi5nZXQoKSI7CisgICAgbXkgJHR5cGVNYXNrSGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFt
ZSBlcSAiYWRkIikgPyAiLCB0eXBlTWFzayIgOiAiIjsKKyAgICBteSAkcHJlZml4ZWRGdW5jdGlv
bk5hbWUgPSAid2Via2l0IiAuIHVjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisKKyAgICAkaW1wbElu
Y2x1ZGVzeyJNdXRhdGlvblJlY29yZC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkpTTXV0
YXRpb25MaXN0ZW5lci5oIn0gPSAxOworCisgICAgbXkgQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5l
ckltcGwgPSAoKTsKKworICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAgICAg
IHB1c2goQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBKU1ZhbHVl
IGpzVHlwZXMgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWpzVHlwZXMuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
IEpTT2JqZWN0KiBqc1R5cGVzT2JqZWN0ID0gYXNPYmplY3QoanNUeXBlcyk7CisgICAgdWludDhf
dCB0eXBlTWFzayA9IDA7CisgICAgSlNWYWx1ZSBqc0NoaWxkbGlzdCA9IGpzVHlwZXNPYmplY3Qt
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGlsZGxpc3QiKSk7CisgICAgaWYgKGpzQ2hp
bGRsaXN0LmlzQm9vbGVhbigpICYmIGpzQ2hpbGRsaXN0LmdldEJvb2xlYW4oKSkKKyAgICAgICAg
dHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgSlNWYWx1ZSBq
c0F0dHJpYnV0ZSA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJh
dHRyaWJ1dGUiKSk7CisgICAgaWYgKGpzQXR0cmlidXRlLmlzQm9vbGVhbigpICYmIGpzQXR0cmli
dXRlLmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0
dHJpYnV0ZUZsYWc7CisgICAgSlNWYWx1ZSBqc0NoYXJhY3RlcmRhdGEgPSBqc1R5cGVzT2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICBpZiAo
anNDaGFyYWN0ZXJkYXRhLmlzQm9vbGVhbigpICYmIGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFu
KCkpCisgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxh
ZzsKK0VORAorICAgIH0KKworICAgIHB1c2goQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGws
IDw8RU5EKTsKKyAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworCisgICAgaW1wLT4ke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0
aW9uTGlzdGVuZXIoSlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIp
LCBjYXN0ZWRUaGlzLCBjdXJyZW50V29ybGQoZXhlYykpJHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0
eXBlTWFza0hhbmRsaW5nfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKK0VORAorICAgIHJldHVybiBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbDsKK30K
KworCiAjIFBhcmFtczogJ2lkbERvY3VtZW50JyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZU1vZHVsZQog
ewpAQCAtMjAxNSw2ICsyMDU5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJD
YWxsKCRjbGFzc05hbWUsICJhZGQiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxs
KCRjbGFzc05hbWUsICJyZW1vdmUiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlz
dGVuZXJDYWxsKCJhZGQiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUgZXEgIndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVu
ZXJDYWxsKCJyZW1vdmUiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgbXkgJGFyZ3NJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJh
bUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KaW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTExZmIwOTRiZTUz
MjUyMi4uYTMzYzZiYmNkNjdjZGQwM2Y0MjVjZmE3NTMzYzlhY2FlZTRiZDBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAg
LTQ3OSw2ICs0NzksMTIgQEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsKICAgICB9CiAK
KyAgICBpZiAoJG5hbWUgZXEgIkRvY3VtZW50IiB8fAorICAgICAgICAkbmFtZSBlcSAiRG9jdW1l
bnRGcmFnbWVudCIgfHwKKyAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkVsZW1lbnQiKSkg
eworICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJD
YWNoZUluZGV4Iik7CisgICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAg
ICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJ
bmRleCIpOwogICAgIH0KQEAgLTExMzQsNiArMTE0MCw1MyBAQCBFTkQKIEVORAogfQogCitzdWIg
R2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFt
ZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3Vw
VHlwZSA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7Cisg
ICAgbXkgJHBhc3NSZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIi
IDogIi5nZXQoKSI7CisgICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9u
TmFtZSBlcSAiYWRkIikgPyAiY3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0Fy
ZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15
ICRwcmVmaXhlZEZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1l
KTsKKworICAgICRpbXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGlt
cGxJbmNsdWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1
bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRG
dW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0s
IExpc3RlbmVyRmluZCR7bG9va3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAi
YWRkIikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWlu
dDhfdCB0eXBlTWFzayA9IDA7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAm
JiBhcmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5n
OjpOZXcoImNoaWxkbGlzdCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkg
JiYgdjhDaGlsZGxpc3QtPkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0g
TXV0YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUi
KSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5C
b29sZWFuVmFsdWUoKSkKKyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpB
dHRyaWJ1dGVGbGFnOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRh
dGEgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAg
ICAgIGlmICghdjhDaGFyYWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJv
b2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNo
YXJhY3RlcmRhdGFGbGFnOworICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCA8PEVORCk7CisgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKS0+JHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVy
JHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5k
ZW5jeUFjdGlvbn1IaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtp
bXBsQ2xhc3NOYW1lfTo6bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7Cit9CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2tFeHByZXNzaW9uCiB7CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyMzks
NiArMTI5MiwxNCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBpZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIi
KSB7CisgICAgICAgIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NO
YW1lLCAiYWRkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Vi
a2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxp
c3RlbmVyQ2FsbGJhY2soJGltcGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CkBAIC0zMTU1LDcgKzMyMTYsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAo
CiAgICAgJ0lEQktleScgPT4gMSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0
ZScgPT4gMSwKLSAgICAnTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyJyA9PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwog
CiAKQEAgLTMyNTUsNiArMzMxNywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJl
dHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwo
KSkiOwogICAgIH0KIAorICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAg
ICAgICAgJGltcGxJbmNsdWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAg
IHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhN
dXRhdGlvbkxpc3RlbmVyKj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVx
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBl
LmgifSA9IDE7CiAgICAgICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYx
ZGMyODA5YTIwN2NmYmFlN2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRl
ZGM0Y2FiZTZlZGZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNs
dWRlICJWOE1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9k
ZS5oIgogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4Mywx
OSBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0
YXRpb25MaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgp
OworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KGxvb2t1cCA9PSBMaXN0ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxp
c3RlbmVyTWFuYWdlcjo6ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gZ2xvYmFsUHJvdG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250
ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90
b3R5cGVJc0RPTVdpbmRvdyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRh
dGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0
dXJuIDA7Cit9CisKICNpZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGll
cwogUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2
ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhh
ZTY3ZjU1NGIyMGFlZTI4ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3
YTg0ZjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAg
LTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsK
ICAgICBjbGFzcyBFdmVudFRhcmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRh
dGlvbkxpc3RlbmVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBj
bGFzcyBXb3JrZXJDb250ZXh0OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0
VG9WOE9iamVjdChFdmVudFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGJvb2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4
OjpMb2NhbDx2ODo6VmFsdWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQ
QVRIKQogICAgICAgICAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFk
Nzc4MDc5MDkzMzI2N2I5MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWVi
ZmNiZDg3NGI4OWU4ZDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEhpZGRlblByb3BlcnR5TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBWKG9iamVjdFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0
dHJpYnV0ZUxpc3RlbmVyKSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3Jp
cHRTdGF0ZSkgXAogICAgIFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBG
dW5jdGlvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRh
dGlvbkxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25M
aXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVj
NDBlMjlhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TXV0YXRpb25MaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lk
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0
YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisj
aW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVu
ZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5k
bGUmIHdvcmxkQ29udGV4dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD46Ok5ldyhsaXN0ZW5lcikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQp
Cit7CisgICAgbV9saXN0ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJD
YWxsYmFjayk7Cit9CisKK1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigp
Cit7CisgICAgaWYgKCFtX2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdl
dExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNs
ZWFyV3JhcHBlcihsaXN0ZW5lcik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgp
OworfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxs
YmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAg
VjhNdXRhdGlvbkxpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0
ZW5lcio+KHBhcmFtZXRlcik7CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgp
OworfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkK
K3sKKyAgICBpZiAoIW1fbGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIu
RGlzcG9zZSgpOworICAgICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lk
IFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQor
eworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRp
b25zOworCisgICAgLy8gRG9uJ3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0
ZWQgaW4gdGhpcyBpbnN0YW5jZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlv
bkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsK
KyAgICBBU1NFUlQoIW11dGF0aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKKworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0g
dG9WOENvbnRleHQoY29udGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUodjhDb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4
OjpBcnJheTo6TmV3KG11dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG11dGF0aW9ucy0+c2l6ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6
OkludGVnZXI6Ok5ldyhpKSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAg
IH07CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9i
amVjdCgpOworICAgIGJvb2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tl
Q2FsbGJhY2sobGlzdGVuZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7
Cit9CisKK3Vuc2lnbmVkIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJu
IERlZmF1bHRIYXNoPFY4TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4
YjIxOTVmYWMzYzdlOGE2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11
dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVk
ZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgor
CisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRh
dGlvbkxpc3RlbmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gbGlzdGVuZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlz
dGVuZXIsIHdvcmxkQ29udGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlz
dGVuZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0
aGlzID09ICZvdGhlcjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVjhNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0
ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011
dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7
CisgICAgdm9pZCBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IG1fbGlzdGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRD
b250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRh
dGlvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdi
NzVlNzgyNjM4MTAzMjI3MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlz
dGVuZXJNYW5hZ2VyX2gKKworI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5j
bHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBh
IGNvbnRhaW5lciBmb3IgVjhNdXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRl
biBwcm9wZXJ0aWVzIG9mIHY4OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4
TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAg
ICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAg
ICAgICByZXR1cm4gZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBm
aW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2
b2lkIGNsZWFyV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQor
ICAgIHsKKyAgICAgICAgbGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVu
UHJvcGVydHlOYW1lOjptdXRhdGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgTXV0YXRpb25MaXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRl
eHQoKSk7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gbGlzdGVuZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJv
cGVydHlOYW1lOjptdXRhdGlvbkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxNdXRhdGlvbkxpc3RlbmVyKj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAg
ICB9Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9u
TGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlKQoreworICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlm
ICghdmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7
CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3Qp
OworICAgIGlmICh3cmFwcGVyKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVh
dGUob2JqZWN0LCBXb3JsZENvbnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYg
KHdyYXBwZXJQdHIpCisgICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQ
dHIuZ2V0KCkpKTsKKworICAgIHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3
ODNiNjE1M2UzNThjMWEzZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2Vj
YmE5ZjUyNjc3NWMzMjhiMzUyMjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VXRpbGl0aWVzLmNwcApAQCAtNjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxD
b250ZXh0KCkKIC8vIEEgdmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBE
T00gb2JqZWN0Lgogdm9pZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgp
CiB7CisgICAgQVNTRVJUKG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4
KTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxG
aWVsZChjYWNoZUluZGV4KTsKICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1Vu
ZGVmaW5lZCgpKSB7CiAgICAgICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2Fs
bGJhY2suY3BwCmluZGV4IDExZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5Nzku
LmY1Y2YyZGRlYTY0ZWJjNzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxi
YWNrLmNwcApAQCAtNjMsMTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6Omhh
bmRsZUV2ZW50KCkKICAgICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFj
a1JldHVyblZhbHVlLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29s
IGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQg
YXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5W
YWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jv
b2wgaW52b2tlQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFs
dWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAg
ICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5T
ZXRWZXJib3NlKHRydWUpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tG
dW5jdGlvbjsKICAgICBpZiAoY2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChjYWxsYmFjaykpOwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkp
IHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNh
bGxiYWNrLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAg
ICAgaWYgKGhhbmRsZUV2ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgK
aW5kZXggOTRiYjc4MjFjNjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIx
OWM0YmU4NzBjOTk5MTZkNTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sg
ZmFpbGVkIChudWxsLCB3cm9uZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZv
a2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2Ms
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBp
bnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJh
MDA3NDVlNjcyMTJhYjI4OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2Ji
ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIg
QEAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgog
I2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZv
aWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERh
dGEpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNoYXJhY3RlckRhdGFNb2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJl
ZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4
dERhdGFDaGFuZ2VkKHRoaXMpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1
ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0
aW9uKG11dGF0aW9uKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3Bl
cmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1
ZGE2ODk5OC4uYzI2NzMwMjc5YWZhNWVmZjZjMjFiODFmMjQ4ODA1MDhlZWYzNTdlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUs
MTEgKzM3LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0
aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtMTA5NSw2ICsxMDk5LDE3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBj
aGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7
CiAKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiBpbnNlcnRlZE5vZGVzOworICAgICAgICBpbnNlcnRlZE5vZGVzLmFwcGVuZChjKTsKKyAg
ICAgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpj
cmVhdGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgU3RhdGljTm9kZUxpc3Q6OmFk
b3B0KGluc2VydGVkTm9kZXMpLCAwLCBjLT5uZXh0U2libGluZygpKTsKKyAgICAgICAgaWYgKGMt
PnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgdG9FbGVtZW50KGMt
PnBhcmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgICAgIGVsc2Ug
aWYgKGMtPnBhcmVudE5vZGUoKS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGMtPnBh
cmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgICAgIGMtPm93bmVy
RG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICB9CisKICAgICBpZiAo
Yy0+cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRP
TU5PREVJTlNFUlRFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQo
TXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwg
dHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CiAKQEAgLTExMTYsNiArMTEzMSwxNyBAQCBzdGF0aWMg
dm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQdHI8
Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+
ZG9jdW1lbnQoKTsKIAorICAgIGlmIChjLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsKKyAgICAgICAgcmVtb3ZlZE5vZGVzLmFwcGVu
ZChjKTsKKyAgICAgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9u
UmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMCwgU3RhdGlj
Tm9kZUxpc3Q6OmFkb3B0KHJlbW92ZWROb2RlcyksIGMtPm5leHRTaWJsaW5nKCkpOworICAgICAg
ICBpZiAoYy0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICB0b0Vs
ZW1lbnQoYy0+cGFyZW50Tm9kZSgpKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICAg
ICAgZWxzZSBpZiAoYy0+cGFyZW50Tm9kZSgpLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREUpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdtZW50
Kj4oYy0+cGFyZW50Tm9kZSgpKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICAgICAg
Yy0+b3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIH0KKwog
ICAgIC8vIGRpc3BhdGNoIHByZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5w
YXJlbnROb2RlKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9E
RVJFTU9WRURfTElTVEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwg
Yy0+cGFyZW50Tm9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZDI4ODZlOWVl
YWM3M2QyYWMyNGJiM2NmODBhYTRiNWZjYTFlMTkzLi5lYzM1YTUyMzVjNGQ2MWQ2MGNlOGI3MDY5
ODk2ODFjZjU4YWQ4N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNCw2ICsxMDQs
NyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11
dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUg
Ik5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCiAjaW5jbHVkZSAiTmV3WE1MRG9jdW1lbnRQYXJz
ZXIuaCIKQEAgLTUwOTEsNCArNTA5MiwxMSBAQCBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6Omxv
YWRlcigpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAorTXV0YXRpb25UYXJnZXREYXRh
KiBEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0
YXRpb25UYXJnZXREYXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRy
KG5ldyBNdXRhdGlvblRhcmdldERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0
YS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBlMDBiODY5NWRhMTJhYmQ0NGU5MWFhNmRlNDk1YTdiNjhhMjg4MTViLi5lNWIwNzdlMGRl
OTkxYzI4M2ZlYTQ1MTgxOTdiMjU3Y2E0YTcwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgog
I2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1l
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtMTAzLDYgKzEwNCw3
IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0Owog
Y2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNz
IE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CkBAIC0yMDYsNyArMjA4LDcgQEAgZW51bSBQYWdl
c2hvd0V2ZW50UGVyc2lzdGVuY2UgewogCiBlbnVtIFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHsg
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNhbGNTdHlsZSB9OwogCi1jbGFzcyBEb2N1
bWVudCA6IHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsK
K2NsYXNzIERvY3VtZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
ICAgICB7CkBAIC0xMTAyLDYgKzExMDQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGNsZWFy
WE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAorICAgIHZpcnR1YWwg
TXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0
aW9uVGFyZ2V0RGF0YS5nZXQoKTsgfQorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBl
bnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
SWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKQEAgLTE0MTAsNiArMTQx
NSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworCisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0
RGF0YT4gbV9tdXRhdGlvblRhcmdldERhdGE7CiB9OwogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBo
ZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdl
IHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXgg
NWM2ODM4ZWM1ZjVmMDQzNTExOGE4NWY2ZDE0ZjJlYTMwOTAxZDAzNi4uMTdkOTQzMzBjM2VkNGQ3
ZTAzNTRiMDk5MDllNjg3ZjBlYTE0NjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0y
NDUsNiArMjQ1LDExIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTEFO
R1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lk
IHdlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwg
aW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxp
c3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIpOworI2VuZGlmCisKKyNpZiAhZGVm
aW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAg
ICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtE
b250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9uYmx1cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcAppbmRleCAzODgyYzRkZmYwOGU2ZDhlOTYyNWM3NzgyNTY4ODQxNjE5ZDg5NDRmLi5m
ZGVhZDliMDE5NDNmYzE2YWFlOTZiMzFiZDljOTQ5MzViYjk5YjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIk11
dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBAIC04NSw0ICs4NiwxMSBAQCBi
b29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgRgogICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgY29udGV4dEVsZW1lbnQsIHNjcmlwdGlu
Z1Blcm1pc3Npb24pOwogfQogCitNdXRhdGlvblRhcmdldERhdGEqIERvY3VtZW50RnJhZ21lbnQ6
OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0
RGF0YSkKKyAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRp
b25UYXJnZXREYXRhKTsKKyAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDZiZjUyZjFhNzg0
YTEyMWM5YTNiZDA4YzgwOGM4MjM2MmEwNGZmMzAuLjZlZmQ3NzAzNGE1NDY2YjgzYmM5ZDRkMGI5
Y2EwMjRmMjA5ZTk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAt
MjYsMTAgKzI2LDE0IEBACiAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIE11dGF0
aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWlu
ZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC00MiwxMCAr
NDYsMTUgQEAgcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBNdXRhdGlv
blRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRpb25UYXJn
ZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11
dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9k
ZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJv
b2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNv
bnN0OworCisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERh
dGE7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5pZGwKaW5kZXggODgyYjYyZGIzOWViN2YyZTA1MDQ3ODIwNDkyYjdlOTM2MWE4ZWRlZC4uYjc1
Yjg1ZmJkNmQyNTIwZmQ0Y2I2ZjBjN2E2OGYwZjFiYzc4NjRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjUsNiArMjUsMTEgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5
U2VsZWN0b3JBbGwoaW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFM
QU5HVUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlzdGVu
ZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAg
ICAgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVu
ZXIgbGlzdGVuZXIpOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGI5ZWJmOWNjNzUzMGU3ZGQ4OTE1ZDE0Zjg3MDcyOTY1Yjg0ZGRjYmIuLjc5MzBlNDBhM2Vk
YzlkYzY2NGYzZGFjYjAxMGY2MDhlNmEwZTZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCkBA
IC02OTksNiArNzAwLDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3lu
Y2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAg
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVB
dHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGxvY2FsTmFtZSwgIiIsICIiKTsKKyAgICBlbnF1ZXVlTXV0
YXRpb24obXV0YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11
dGF0aW9uKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBA
IC03MzIsNiArNzM3LDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5
bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAg
IFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRl
QXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCAiIiwgIiIpOworICAgIGVu
cXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgb3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0
YXRpb24obXV0YXRpb24pOwogfQogCiBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gRWxlbWVudDo6Y3Jl
YXRlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCkBAIC0yMDUzLDQgKzIwNjIsMTQgQEAgUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRp
b25MaXN0PiBFbGVtZW50Ojp3ZWJraXRHZXRBbmltYXRpb25zKCkgY29uc3QKICAgICByZXR1cm4g
YW5pbUNvbnRyb2xsZXItPmFuaW1hdGlvbnNGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKIH0KIAor
TXV0YXRpb25UYXJnZXREYXRhKiBFbGVtZW50OjptdXRhdGlvblRhcmdldERhdGEoKQoreworICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRpb25UYXJnZXREYXRhKCkg
OiAwOworfQorCitNdXRhdGlvblRhcmdldERhdGEqIEVsZW1lbnQ6OmVuc3VyZU11dGF0aW9uVGFy
Z2V0RGF0YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU11dGF0aW9u
VGFyZ2V0RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCBlMTVmMjdhOWI1ZGVkMDFlYWQ1M2U5MDQ5ZjFiODZlNDM1NjI5NGRhLi44Yjg2NjAx
ZDg5ODA5NGNmYWZhM2I0ZWFiYjQzMmMxMDg1MjI0MmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bi5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFw
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtNDksNyArNTAsNyBAQCBlbnVtIFNw
ZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSB7CiAgICAgU3BlbGxjaGVja0F0dHJpYnV0ZURlZmF1bHQK
IH07CiAKLWNsYXNzIEVsZW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CitjbGFzcyBFbGVt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkVsZW1lbnQoKTsKQEAgLTM4NCw2ICsz
ODUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERh
dGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRh
KiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKKwogICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlv
biBvZiBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkgY2FsbHMgdGhlIGZvbGxvd2luZyB0d28g
ZnVuY3Rpb25zLgogICAgIC8vIFRoZXkgYXJlIHNlcGFyYXRlZCB0byBhbGxvdyBhIGRpZmZlcmVu
dCBmbG93IG9mIGNvbnRyb2wgaW4gU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgpLgog
ICAgIHZvaWQgcmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1
dGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA5ZWJiMDJhNTkyZjcxODMyNmMxNmUwMmYx
OTgxYjQxZDljODg5MGVjLi43Mjc3MThhNmU1NjYzM2RiNzMzZjhiZDcwZWJmNDE5ZmZhOWI5NmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0xNDAsNiArMTQwLDExIEBAIG1vZHVsZSBjb3Jl
IHsKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5H
VUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIo
aW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAgICAg
ICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIg
bGlzdGVuZXIpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykg
fHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0
dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFi
b3J0OwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYmx1cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA4MzAxNTA1YzNiNTJmY2MzMWNh
ZGRjYzNmMTY3ODQ4NGM2YWViZTJjLi4zNzIzYmM2OWZlM2RiMDdhNDgxYTFjOWVlNjE3YTI1OWM1
NzlhN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiQ2xhc3NMaXN0LmgiCiAjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01h
cC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEu
aCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
QEAgLTM5LDYgKzQwLDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxl
KCk7CiAKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0
dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgTXV0YXRpb25UYXJnZXREYXRh
KiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX211dGF0
aW9uVGFyZ2V0RGF0YSkKKyAgICAgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQ
dHIobmV3IE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgICAgIHJldHVybiBtX211dGF0aW9uVGFy
Z2V0RGF0YS5nZXQoKTsKKyAgICB9CisKKwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6bmVlZHNG
b2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAgICAgdXNpbmcgTm9kZVJhcmVE
YXRhOjpzZXROZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKIApAQCAt
NTUsNiArNjUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJv
b2wgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OwogI2VuZGlmCitwcml2YXRlOgorICAgIE93
blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJnZXREYXRhOwogfTsKIAogaW5s
aW5lIEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFkOGQ4ODQxMDQ1MWQyODYzNTdkZWUw
YTU1ZDEzM2Q0NjY5NmEwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25MaXN0ZW5l
cl9oCisjZGVmaW5lIE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTXV0YXRpb25SZWNvcmQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCit0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4gTXV0YXRpb25SZWNvcmRWZWN0b3I7
CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbkxp
c3RlbmVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TXV0YXRpb25MaXN0ZW5lcigpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImKSA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBoYXNoKCkgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbkxpc3RlbmVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWQwMWY4ZDNiNjZmZjE5ZDNkMzgxYjI2ZDc0
ZmVjYjdkYzZmN2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uTGlzdGVuZXIuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgUHVyZUludGVyZmFjZSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisg
ICAgXSBNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICAgICAgLy8gdm9pZCBoYW5kbGVFdmVudChpbiBN
dXRhdGlvblJlY29yZFtdIG11dGF0aW9ucykKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBB
cnJheSBtdXRhdGlvbnMpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25SZWNvcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3Jk
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zODFlMDIwOTdiNmE0OTExZWRlYTMxN2M0MmY1YTU2Yjc3MWQzNjFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNw
cApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgeworCitjbGFzcyBFbXB0eU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlTGlzdD4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlOb2RlTGlzdCk7CisgICAgfQor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgeyByZXR1
cm4gMDsgfQorCitwcml2YXRlOgorICAgIEVtcHR5Tm9kZUxpc3QoKSB7IH0KK307CisKK30KKwor
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlz
dENoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGlu
c2VydGVkLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVkLCBQYXNzUmVmUHRyPE5vZGU+IG5l
eHROb2RlKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBhZG9wdFJl
ZihuZXcgTXV0YXRpb25SZWNvcmQoQ2hpbGRsaXN0RmxhZywgdGFyZ2V0KSk7CisgICAgbXV0YXRp
b24tPm1faW5zZXJ0ZWROb2RlcyA9IGluc2VydGVkOworICAgIGlmICghbXV0YXRpb24tPm1faW5z
ZXJ0ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcyA9IEVtcHR5Tm9k
ZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9IHJlbW92ZWQ7
CisgICAgaWYgKCFtdXRhdGlvbi0+bV9yZW1vdmVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5t
X3JlbW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5t
X25leHROb2RlID0gbmV4dE5vZGU7CisgICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30K
KworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJp
YnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
YXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
KQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcg
TXV0YXRpb25SZWNvcmQoQXR0cmlidXRlRmxhZywgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1f
YXR0ck5hbWUgPSBhdHRyTmFtZTsKKyAgICBtdXRhdGlvbi0+bV9wcmV2VmFsdWUgPSBwcmV2VmFs
dWU7CisgICAgbXV0YXRpb24tPm1fbmV3VmFsdWUgPSBuZXdWYWx1ZTsKKyAgICByZXR1cm4gbXV0
YXRpb24ucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlv
blJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoQ2hhcmFjdGVyZGF0YUZs
YWcsIHRhcmdldCkpOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlRmxhZ1Rv
TmFtZShNdXRhdGlvblJlY29yZDo6TXV0YXRpb25UeXBlRmxhZyBmbGFnKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZGxpc3QsICgiY2hpbGRsaXN0IikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdHRyaWJ1dGUsICgiYXR0cmli
dXRlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGFyYWN0ZXJk
YXRhLCAoImNoYXJhY3RlcmRhdGEiKSk7CisKKyAgICBzd2l0Y2ggKGZsYWcpIHsKKyAgICBjYXNl
IE11dGF0aW9uUmVjb3JkOjpDaGlsZGxpc3RGbGFnOgorICAgICAgICByZXR1cm4gY2hpbGRsaXN0
OworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc6CisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGU7CisgICAgY2FzZSBNdXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZsYWc6
CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJkYXRhOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBlbXB0eUF0b207CisgICAgfQorfQorCitNdXRh
dGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlRmxhZyB0eXBlRmxhZywgUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgOiBtX3R5cGUodHlwZUZsYWdUb05hbWUodHlwZUZs
YWcpKQorICAgICwgbV90eXBlRmxhZyh0eXBlRmxhZykKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkK
K3sKK30KKworTXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCgpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzA0ODdhYjVmNzE3MDQzZDZmZmZmNTU4MDJlMzdlZjBlY2JlZWNmOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisj
aW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6
IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1Jl
ZlB0cjxOb2RlPiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGluc2VydGVkLCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiByZW1vdmVkLCBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQ
YXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwgY29u
c3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1Jl
ZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIE5v
ZGUqIHRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlw
ZSA9PSAnY2hpbGRsaXN0JworICAgIE5vZGVMaXN0KiBpbnNlcnRlZE5vZGVzKCkgeyByZXR1cm4g
bV9pbnNlcnRlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIHsg
cmV0dXJuIG1fcmVtb3ZlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZSogbmV4dE5vZGUoKSB7IHJl
dHVybiBtX25leHROb2RlLmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRl
JworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUoKSB7IHJldHVybiBtX2F0dHJOYW1l
OyB9CisgICAgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUoKSB7IHJldHVybiBtX3ByZXZWYWx1ZTsg
fQorICAgIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CisK
KyAgICAvLyBOb3QgcGFydCBvZiB0aGUgSURMLCBidXQgdXNlZCBpbnRlcm5hbGx5IGZvciBmYXN0
IHR5cGUtYmFzZWQgb3BlcmF0aW9ucy4KKyAgICBlbnVtIE11dGF0aW9uVHlwZUZsYWcgeworICAg
ICAgICBDaGlsZGxpc3RGbGFnID0gKDEgPDwgMCksCisgICAgICAgIEF0dHJpYnV0ZUZsYWcgPSAo
MSA8PCAxKSwKKyAgICAgICAgQ2hhcmFjdGVyZGF0YUZsYWcgPSAoMSA8PCAyKQorICAgIH07Cisg
ICAgTXV0YXRpb25UeXBlRmxhZyB0eXBlRmxhZygpIHsgcmV0dXJuIG1fdHlwZUZsYWc7IH0KKwor
cHJpdmF0ZToKKyAgICBNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFnLCBQYXNzUmVmUHRy
PE5vZGU+IHRhcmdldCk7CisKKyAgICBBdG9taWNTdHJpbmcgbV90eXBlOworICAgIE11dGF0aW9u
VHlwZUZsYWcgbV90eXBlRmxhZzsKKyAgICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgUmVm
UHRyPE5vZGVMaXN0PiBtX2luc2VydGVkTm9kZXM7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBtX3Jl
bW92ZWROb2RlczsKKyAgICBSZWZQdHI8Tm9kZT4gbV9uZXh0Tm9kZTsKKyAgICBBdG9taWNTdHJp
bmcgbV9hdHRyTmFtZTsKKyAgICBTdHJpbmcgbV9wcmV2VmFsdWU7CisgICAgU3RyaW5nIG1fbmV3
VmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU3YmNjZWQ2MWUwZGM5NmJiYTBj
Nzc2Y2RhOWI5MjViOGNkNmI3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5pZGwKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBp
bnRlcmZhY2UgTXV0YXRpb25SZWNvcmQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nICAgICAgdHlwZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAg
ICAgIHRhcmdldDsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgICAgICAgaW5zZXJ0ZWROb2RlczsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0ICAgICAgIHJlbW92ZWROb2RlczsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgIG5leHROb2RlOworCisgICAgICAg
IC8vIEZvciB0eXBlID09ICdhdHRyaWJ1dGUnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgICAgICBhdHRyTmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyAgICAgIHByZXZWYWx1ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyAgICAgIG5ld1ZhbHVlOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25UYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYmJhNzJkMmUzZmJmN2M4ZDUxYzUwNmM3OTE5MTgwNTRlMDgyOGZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNw
cApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blRhcmdldC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvbkxp
c3RlbmVyLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blRhcmdldERhdGEuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgor
CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0
IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1bWVudD4gZCwgUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3VtZW50KGQpCisgICAgICAgICwg
bGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7Cit9OworCitzdHJ1Y3Qg
TXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
TXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50
NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8RG9jdW1lbnQqPjo6aGFz
aChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxpc3RlbmVyLT5oYXNoKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11dGF0aW9uQ29udGV4dCogYSwg
Y29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEtPmRvY3Vt
ZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAqYi0+bGlzdGVuZXI7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlvbkNvbnRleHQqLCBNdXRhdGlv
blJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+IENvbnRleHRWZWN0b3JNYXA7
CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVjdG9yTWFwJiBjb250ZXh0VmVj
dG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRleHRWZWN0b3JNYXAsIG0s
ICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVlPE93blB0cjxNdXRhdGlvbkNv
bnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwgYWN0aXZlQ29udGV4dHMsICgp
KTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3ZvaWQgc3Bpbk11dGF0aW9uUXVl
dWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmlzRW1wdHkoKSkg
eworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWN0aXZlTXV0YXRp
b25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25QdHI8TXV0YXRpb25SZWNvcmRW
ZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCkudGFrZShjb250ZXh0LmdldCgp
KSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVFdmVudChjb250ZXh0LT5kb2N1
bWVudC5nZXQoKSwgdi5yZWxlYXNlKCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZW5zdXJl
TXV0YXRpb25RdWV1ZWQoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwg
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgUmVmUHRyPE11
dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIEFTU0VSVChtdXRhdGlv
bi0+dGFyZ2V0KCkpOworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50KCkp
OworICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihuZXcgTXV0
YXRpb25Db250ZXh0KG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1lbnQoKSwgcHJwTGlzdGVuZXIp
KTsKKworICAgIHBhaXI8Q29udGV4dFZlY3Rvck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IGNvbnRleHRWZWN0b3JNYXAoKS5hZGQoY29udGV4dC5nZXQoKSwgMCk7CisgICAgaWYgKHJlc3Vs
dC5zZWNvbmQpIHsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgTXV0YXRpb25S
ZWNvcmRWZWN0b3I7CisgICAgICAgIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKS5hcHBlbmQoY29u
dGV4dC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBNdXRhdGlvblJlY29yZFZlY3RvciogdiA9IHJl
c3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICh2LT5pc0VtcHR5KCkgfHwgdi0+bGFzdCgpICE9
IG11dGF0aW9uKQorICAgICAgICB2LT5hcHBlbmQobXV0YXRpb24pOworfQorCitNdXRhdGlvblRh
cmdldDo6fk11dGF0aW9uVGFyZ2V0KCkKK3sKK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6d2Vi
a2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBycExp
c3RlbmVyLCB1aW50OF90IHR5cGVNYXNrKQoreworICAgIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihwcnBMaXN0ZW5lciwgdHlwZU1hc2spOworICAgIE11dGF0
aW9uVGFyZ2V0RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHNpemVf
dCBpbmRleCA9IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0ZW5lcnMuYXBwZW5kKHJlZ2lzdGVy
ZWRMaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBkLT5saXN0ZW5lcnNbaW5kZXhdLnR5cGVz
IHw9IHR5cGVNYXNrOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIE11dGF0aW9u
VGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT0gKmxp
c3RlbmVyKSB7CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMucmVtb3ZlKGkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0Ojpl
bnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7
CisgICAgQVNTRVJUKHBycE11dGF0aW9uKTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9
IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0
aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5l
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGQtPmxpc3RlbmVyc1tpXS50eXBlcyAmIG11
dGF0aW9uLT50eXBlRmxhZygpKQorICAgICAgICAgICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+
bGlzdGVuZXJzW2ldLmxpc3RlbmVyLCBtdXRhdGlvbik7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
MWM0ZGE0NDRiNzFmZDhkNzUyYWJkNTMxOGEzNTYxMTQ2NGMzZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNdXRhdGlvblRhcmdldF9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0
YXRpb25MaXN0ZW5lcjsKK2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJn
ZXREYXRhOworCitjbGFzcyBNdXRhdGlvblRhcmdldCB7CitwdWJsaWM6CisgICAgdm9pZCB3ZWJr
aXRBZGRNdXRhdGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4sIHVpbnQ4
X3QgdHlwZU1hc2spOworICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRh
dGlvbkxpc3RlbmVyKik7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRyPE11
dGF0aW9uUmVjb3JkPik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NdXRhdGlvblRhcmdl
dCgpOworCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0
YSgpID0gMDsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCkgPSAwOworfTsKKwordm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRhdGlvblRhcmdldF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBiZTEwYzMwZDJlMGEz
Yjk0NDkwMGRiNWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRh
dGlvblRhcmdldERhdGFfaAorI2RlZmluZSBNdXRhdGlvblRhcmdldERhdGFfaAorCisjaW5jbHVk
ZSAiUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit0eXBlZGVmIFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcj4gTXV0YXRpb25MaXN0
ZW5lclZlY3RvcjsKK3N0cnVjdCBNdXRhdGlvblRhcmdldERhdGEgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgTXV0YXRpb25UYXJnZXREYXRhKCkgeyB9CisgICAgfk11dGF0aW9u
VGFyZ2V0RGF0YSgpIHsgfQorCisgICAgTXV0YXRpb25MaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRhdGlvblRhcmdl
dERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVu
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0NjBjMTFlMzdmYjc2ODkzMTk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXJfaAorI2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRl
ICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lz
dGVyZWRNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQ
YXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3QgdHlwZU1hc2spCisgICAgICAg
IDogbGlzdGVuZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFzaykgeyB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAqb3RoZXIubGlzdGVuZXI7Cisg
ICAgfQorCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyOworICAgIHVpbnQ4
X3QgdHlwZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDZjYTViMzdkMjFiOTYyYTFkYjJiMGEwNmU2M2U5MDZiYjY3ZDNmMmQuLmZiN2ViMGNkOGIx
Zjg1YTE5MmE5MGQ3MWUxOTA2ZTQ2ZDcyZTdkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2luY2x1
ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5j
bHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xODgzLDQgKzE4
ODQsOSBAQCBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJraXRTdG9yYWdlSW5mbygpIGNvbnN0
CiB9CiAjZW5kaWYKIAordm9pZCBET01XaW5kb3c6OnNwaW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAg
ICA6OldlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4MDlhOWYwNjZmYzI4ZjVhZWVi
ZTg3MWNlNjBkYzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2NDk4ZmNhZGYyM2VhMjdiNzczYjc0N2E0
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDE0LDYgKzQxNCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBlcmZvcm1hbmNlKCkgY29uc3Q7CiAj
ZW5kaWYKIAorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisKICAgICBwcml2YXRl
OgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IDYyZjFjMzAzNjZhMWZiN2UxNDc1NWVlMTU1NGE4YTNjMGZlYzExOTYuLjYyMjcxNTcw
MjM5M2E4OTcwNDNlMWEzYzM4NDIyZGY0ZTI4ZTNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKQEAgLTgwMyw2ICs4MDMsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIC8vIHdp
bmRvdy50b1N0cmluZygpIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgaW4gVjgKICAgICAgICAg
W1Y4RG9Ob3RDaGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b20s
IERvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKICNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJ
TkRJTkcpCisKKyAgICAgICAgLy8gRklYTUUoYWRhbWspOiBETyBOT1QgU1VCTUlUCisgICAgICAg
IC8vIFRoaXMgbmVlZHMgdG8gYmUgZXhwb3NlZCB0byBKUyB1bnRpbCBlbWJlZGRlcnMgYXJlIG1v
ZGlmaWVkIHRvIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUoKQorICAgICAgICAvLyBhdCB0aGUgZW5k
IG9mIGVhY2ggdGFzay4KKyAgICAgICAgdm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpOwogICAgIH07
CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105544</attachid>
            <date>2011-08-29 16:50:43 -0700</date>
            <delta_ts>2011-08-29 18:28:50 -0700</delta_ts>
            <desc>MutationRecord changes: addedCount, childlistIndex, and inDocument</desc>
            <filename>bug-66079-20110829165042.patch</filename>
            <type>text/plain</type>
            <size>111690</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJjNmQxYjc5Njk2Yzc5NGEzNWJiLi45MmUzNmJm
Nzg3ZmFlOWVmOTMzZWViYmFkZWQ3NzRkNTRjMzExYTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDgtMjUgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFy
Z2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlz
dGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFuIHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5l
IHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29tcGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZmU5
MTIyZjI0MGYwNDM3NTJmYzU3ZGMxNWVmODhkMDYwMDI2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNSBAQAorVGVzdCB0aGF0IE11dGF0aW9uTGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9uc1swXS5hZGRl
ZENvdW50IGlzIGFkZGVkQ291bnRzWzBdCitQQVNTIG11dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRl
eCBpcyBjaGlsZGxpc3RJbmRpY2VzWzBdCitQQVNTIG11dGF0aW9uc1swXS5pbkRvY3VtZW50IGlz
IGluRG9jdW1lbnRGbGFnc1swXQorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWRDb3VudCBpcyBhZGRl
ZENvdW50c1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0
SW5kaWNlc1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50Rmxh
Z3NbMV0KK1BBU1MgbXV0YXRpb25zWzJdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzJdCitQQVNTIGxp
c3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRk
ZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVk
Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdElu
ZGljZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdz
WzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJO
YW1lIGlzICJkYXRhLWZvbyIKK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1
bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25z
WzBdLnRhcmdldCBpcyB0ZXh0Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQg
aXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mg
bXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVk
IGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjRjZjE5NjBmNTBhNjViYzU0NTQ4
MjA4ZDcyZTg3OTUzZDNiNzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDE0NCBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgPGRpdiBpZD0ic2FuZGJveCIgc3R5
bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+CisgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRoYXQgTXV0YXRpb25MaXN0ZW5lcnMgd29yayBhcyBleHBlY3RlZC4nKTsKKyAgICAg
ICAgdmFyIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHZhciBsaXN0ZW5lckNhbGxlZCA9IGZh
bHNlOworICAgICAgICB2YXIgYWRkZWRDb3VudHM7CisgICAgICAgIHZhciByZW1vdmVkTm9kZXM7
CisgICAgICAgIHZhciBjaGlsZGxpc3RJbmRpY2VzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRy
czsKKyAgICAgICAgdmFyIHRleHROb2RlczsKKyAgICAgICAgdmFyIGRvY3VtZW50TGlzdGVuZXJP
cHRpb25zOworICAgICAgICB2YXIgaW5Eb2N1bWVudEZsYWdzOworCisgICAgICAgIGZ1bmN0aW9u
IGxpc3RlbmVyKG0pIHsKKyAgICAgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAg
ICAgIGxpc3RlbmVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgICAgICB2YXIgaW5zZXJ0ZWRJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgcmVtb3Zl
ZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBpbmRleEluZGV4ID0gMDsKKyAgICAgICAgICAg
IHZhciBhdHRySW5kZXggPSAwOworICAgICAgICAgICAgdmFyIHRleHROb2RlSW5kZXggPSAwOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1baV0udHlwZSA9PSAnY2hpbGRsaXN0JykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoYWRkZWRDb3VudHMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLmFkZGVkQ291bnQnLCAnYWRkZWRDb3VudHNbJyAr
IChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBtW2ldLnJlbW92ZWROb2Rlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLnJlbW92ZWROb2Rlc1sn
ICsgaiArICddJywgJ3JlbW92ZWROb2Rlc1snICsgKHJlbW92ZWRJbmRleCsrKSArICddJyk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkbGlzdElu
ZGljZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1snICsgaSArICddLmNoaWxkbGlzdEluZGV4JywgJ2NoaWxkbGlzdEluZGljZXNbJyArIChpbmRl
eEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1baV0udHlwZSA9
PSAnYXR0cmlidXRlJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ211dGF0aW9uc1snICsgaSArICddLmF0dHJOYW1lJywgbW9kaWZpZWRBdHRyc1thdHRySW5k
ZXgrK10pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdjaGFyYWN0
ZXJkYXRhJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBp
ICsgJ10udGFyZ2V0JywgJ3RleHROb2Rlc1snICsgKHRleHROb2RlSW5kZXgrKykgKyAnXScpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10uaW5Eb2N1bWVudCcsICdpbkRvY3VtZW50RmxhZ3NbJyArIGkgKyAnXScpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRlZENvdW50cyA9IFtdOworICAgICAgICAgICAg
cmVtb3ZlZE5vZGVzID0gW107CisgICAgICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gW107Cisg
ICAgICAgICAgICBtb2RpZmllZEF0dHJzID0gW107CisgICAgICAgICAgICB0ZXh0Tm9kZXMgPSBb
XTsKKyAgICAgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFtdOworICAgICAgICAgICAgcmVzdW1l
TGlzdGVuaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdXNwZW5kTGlzdGVu
aW5nKCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gcmVzdW1lTGlzdGVuaW5n
KCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0
ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJi
bGluZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zID0g
e2NoaWxkbGlzdDogdHJ1ZX07CisgICAgICAgIGRvY3VtZW50LndlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIobGlzdGVuZXIsIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zKTsKKyAgICAgICAgdmFyIGEg
PSBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Cisg
ICAgICAgIGEudGV4dENvbnRlbnQgPSAnaGVsbG8sIHdvcmxkJzsKKyAgICAgICAgdmFyIGIgPSBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAg
ICAgIGFkZGVkQ291bnRzID0gWzEsIDEsIDFdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0g
WzAsIDAsIDFdOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV07
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1
bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAg
ICAvLyBUZXN0IHJlbW92YWwuCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICBzYW5kYm94LnJlbW92
ZUNoaWxkKGIpOworICAgICAgICBhZGRlZENvdW50cyA9IFswXTsKKyAgICAgICAgcmVtb3ZlZE5v
ZGVzID0gW2JdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzFdOworICAgICAgICBpbkRv
Y3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAg
ICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNh
bGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxs
ZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAg
ICAgc2FuZGJveC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7YXR0cmlidXRl
OiB0cnVlfSk7CisgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbJ2RhdGEtZm9vJ107CisgICAgICAg
IHNhbmRib3guc2V0QXR0cmlidXRlKCdkYXRhLWZvbycsICdteWRhdGEnKTsKKyAgICAgICAgaW5E
b2N1bWVudEZsYWdzID0gW3RydWVdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAg
ICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJD
YWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3RlbmVyQ2Fs
bGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBjaGFyYWN0ZXJkYXRhIG11dGF0aW9uLgor
ICAgICAgICBhLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGFyYWN0ZXJk
YXRhOiB0cnVlfSk7CisgICAgICAgIHRleHROb2RlcyA9IFthLmZpcnN0Q2hpbGRdOworICAgICAg
ICBhLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBpbkRvY3Vt
ZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAg
IHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxl
ZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGRpc2Nvbm5lY3RlZCBEb2N1bWVudEZyYWdtZW50
CisgICAgICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsK
KyAgICAgICAgZnJhZy53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRs
aXN0OiB0cnVlfSk7CisgICAgICAgIHZhciBkID0gZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBhZGRlZENvdW50cyA9IFsxXTsKKyAgICAg
ICAgY2hpbGRsaXN0SW5kaWNlcyA9IFswXTsKKyAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0gW2Zh
bHNlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3Rl
bmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAg
IHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIHNhbmRib3gud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7Cisg
ICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOwor
ICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVz
dW1lTGlzdGVuaW5nKCk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNk
ZDczMGY0MmNlZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uNjRjNmJlZGNmYWYzZDA3MzQxM2Ey
ODhhM2RmZGRmZjY4MWUwNGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxMS0w
OC0yNSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBp
biBwcm9ncmVzc10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEg
cmVwbGFjZW1lbnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJp
bWVudGFsLCB2ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZl
bnR1YWxseSByZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAg
ICAgICAgbGFyZ2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNz
YWdlIHRvIHB1YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAg
ICAgVGhhdCB0aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1h
cml6ZWQgYnkKKyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgor
CisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJh
cHBzLzIwMTFKdWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2gg
aXMgaW4gbm8gd2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRp
b24uIFRoZSBiaWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5n
CisgICAgICAgIG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRhdGlvbkxpc3RlbmVyczog
dGhlIGluY2x1ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQgY2FsbHMgYSAic3Bpbk11
dGF0aW9uUXVldWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4g
VGhpcyBpcyBub3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0byBKUywKKyAgICAgICAg
dGhvdWdoOiBteSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0YXRpb25RdWV1ZSBmcm9t
CisgICAgICAgIEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdlYkNvcmUgb3IgKG1vcmUg
bGlrZWx5KSBpbgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBhIHNlcGFyYXRlIGNoYW5n
ZSB3aGljaCBpbXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4gQ2hyb21pdW0uCisKKyAg
ICAgICAgVGhlIG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhh
dCBNdXRhdGlvblJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRjaGVkIGluIGFsbCB0aGUg
cHJvcGVyIHBsYWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAgICAgIGlubmVySFRNTCBp
cyBub3QgYXMgd2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YKKyAg
ICAgICAgd2FudGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQgZmVlZGJhY2s6IGl0IHNo
b3VsZG4ndCBiZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0aW9uUmVjb3JkIGRpc3Bh
dGNoaW5nIGluIGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4KKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRh
dGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25MaXN0ZW5lcjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3Rl
bmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjppc29sYXRlZFdvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6d3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBwZXIpOgorICAgICAgICBK
U011dGF0aW9uTGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZlbnRMaXN0ZW5lciwKKyAg
ICAgICAgd2l0aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVhc29uIGZvciBleGlzdGlu
ZworICAgICAgICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciBuZWVkcyB0
byBiZWhhdmUKKyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBpbiB0aGF0IGR1cGxpY2F0
ZSBhZGRpdGlvbnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVxdWlyZXMgdGhlIG9wZXJh
dG9yPT0gbWV0aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcg
dGhlIHNhbWUgTXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFuIG9uY2UgdG8gYSBnaXZl
biBsaXN0ZW5lciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBhIEhhc2hNYXAsIHRodXMg
dGhlIHxoYXNofCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxGaWVsZHMpOgorICAgICAg
ICAoR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVG
dW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgIFNp
bmNlIE11dGF0aW9uTGlzdGVuZXJzIHRoZW1zZWx2ZXMgYXJlIGN1c3RvbSwgc28KKyAgICAgICAg
bXVzdCBiZSBtdXRhdGlvbiBsaXN0ZW5lciBhZGRpdGlvbiBhbmQgcmVtb3ZhbC4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRD
YWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlzdGVuZXJPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZG9G
aW5kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVxdWl2YWxlbnRzIG9mIHRo
ZSBKU011dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2VuZXJhbGl6ZWQgaW52b2tl
Q2FsbGJhY2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgorICAgICAgICBWOE11dGF0
aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVu
dCk6CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRhdGlvbnMuCisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3Zh
bEV2ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11dGF0aW9ucy4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIERpc3BhdGNoICJhdHRyaWJ1
dGUiIG11dGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERh
dGEpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
TXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uTGlz
dGVuZXI6On5NdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25MaXN0ZW5l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0eXBlRmxhZ1RvTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL011dGF0aW9u
UmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6aW5zZXJ0ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uUmVjb3JkOjpuZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
YXR0ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnByZXZWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV3VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGVGbGFnKToKKyAgICAgICAgKiBkb20vTXV0YXRp
b25SZWNvcmQuaWRsOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25SZWNvcmRzIGFyZSBhbmFsb2dv
dXMgdG8gRXZlbnRzOiB0aGV5IGhvbGQgZGF0YQorICAgICAgICBhYm91dCBhIHNpbmdsZSBtdXRh
dGlvbi4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpz
cGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVl
TXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAg
ICBNdXRhdGlvblRhcmdldCBpcyBhbmFsb2dvdXMgdG8gRXZlbnRUYXJnZXQsIGFuZCBpcyBhIG1p
eGluIGZvcgorICAgICAgICBEb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVudCwgYW5kIEVsZW1lbnQu
CisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUgdGhhdCB0
aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNoYW5n
ZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0byBkZWFs
IHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUtdG8t
cnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRhNWEyZTc2
M2FkOTZjNTM3MC4uOWU3OGZjMTRlMjVlYjc1MzE5NGFmNDJiNDE4MTk3MzY4NDBhNTY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCw4IEBACiAjaW5jbHVkZSAi
SlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVy
LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKICNpbmNsdWRlICJKU05hbWVk
Tm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuY3BwIgogI2luY2x1ZGUgIkpTTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggMjZiNjBhYjMxMzFkOWFlNGY2ZjIzNjM0MTcxMjUwZjZhNTVjMDdmOC4uYmUzYjA1NDJhOTMw
ZDI5YmJlMWFmOWExZWVjNjYyZjNhNzQxODQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0zMTUsNiArMzE1LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGFDYWxs
YmFjayBcCiAgICAgTW91c2VFdmVudCBcCiAgICAgTXV0YXRpb25FdmVudCBcCisgICAgTXV0YXRp
b25MaXN0ZW5lciBcCisgICAgTXV0YXRpb25SZWNvcmQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAg
ICAgTmF2aWdhdG9yIFwKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciBcCkBAIC01NzEsNyAr
NTczLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAKIC5QSE9OWSA6IGFsbAogCi1KU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkpCitKU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oIEpTTXV0YXRpb25MaXN0ZW5lci5oLCQoRE9NX0NMQVNTRVM6JT1K
UyUuaCkpCiAKIFdFQl9ET01fSEVBREVSUyA6PQogaWZlcSAoJChmaW5kc3RyaW5nIEJVSUxESU5H
X1dYLCQoRkVBVFVSRV9ERUZJTkVTKSksIEJVSUxESU5HX1dYKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCBmNTE4NjAwYTRlMTQxOWQwOTY5M2Y5ZTAzNjQwNjE5MWNj
MmYxYTRjLi45OWFhNzlhNzVjOTVmMjM2YjJiZjgzNzg3OGZkMjVhMDVlMWU0YmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAg
ICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBiaW5kaW5ncy92OC9jdXN0b20gZXhpc3QgZm9yIHRoZXNl
LgogICAgICAgJy4uL2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4vZG9tL0V2ZW50
VGFyZ2V0LmlkbCcsCisgICAgICAnLi4vZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKICAgICAg
ICcuLi9odG1sL1ZvaWRDYWxsYmFjay5pZGwnLAogCiAgICAgICAjIEJpbmRpbmdzIHdpdGggY3Vz
dG9tIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxNjg0
NGI3MTAxNzhhNzEyMjE4ZmZkNjA2YTJjYmMyMzNkMGNkMDcyLi45NzJiNmE3MzcxNGM1ZjBlYjZi
NTg5NzVjMGQ3OGJlMDM2N2IzNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTc5LDYgKzExNzks
OCBAQAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlUG9ydC5pZGwnLAogICAgICAgICAgICAgJ2Rv
bS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaWRsJywK
KyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAorICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvblJlY29yZC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaWRs
JywKICAgICAgICAgICAgICdkb20vTm9kZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlRmls
dGVyLmlkbCcsCkBAIC0yMDc3LDYgKzIwNzksOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHAnLApAQCAtNTMyNiw2ICs1MzMxLDEyIEBACiAgICAgICAgICAgICAnZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuY3BwJywKKyAg
ICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uVGFyZ2V0LmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0LmgnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCcsCiAgICAgICAgICAgICAnZG9tL05h
bWVOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuaCcsCiAgICAg
ICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5jcHAnLApAQCAtNTM2Nyw2ICs1Mzc4LDcgQEAKICAg
ICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIu
aCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NDYzZTUyN2RlNmZkYTMwYWI3OTk2OGU2
ZWFiNGM5YTJiZC4uOWYzZTNiMDkyMjI4YTE3OWRjNDlmZTA5OGNmZTU3ZmNhOTNmMTRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTQxMCw5ICs1NDEwLDE3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlw
aE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3
RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEg
LyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMw
MDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNjcxREEzRTEzRTM3MTQ5MDA1NThBRTkg
LyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29y
ZC5jcHAgKi87IH07CisJCUM2NzFEQTNGMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVj
b3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcx
REEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovOyB9OworCQlDNjcy
QTJEMzEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcyQTJEMjEzRjM0QzRBMDA5NDIz
Q0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZGNDEwNDcxMzBDNkU4OTAwMzkzREU0
IC8qIEVudHJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlCYXNlLmNwcCAqLzsgfTsK
KwkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQwMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJCUM2RjY3MTU0MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuY3BwICovOyB9OworCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2
RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERF
M0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5jcHAgKi87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011
dGF0aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LzsgfTsKIAkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmggKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjEzNyw5ICsxMjE0NSwyMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNB
OTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdseXBoTWV0cmljc01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3
NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8q
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRh
dGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0
QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBB
MDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRy
eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNl
LmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5l
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQwMTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9u
VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDcxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE11dGF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdE
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMxNTksNiArMTMxODAsNyBAQAogCQkJCTg5ODc4NTc2MTIyQ0ExREEwMDNBQUJE
QSAvKiBGaWxlQVBJICovLAogCQkJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICov
LAogCQkJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8sCisJCQkJQzY3
MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTMzNTAzQzlDMTAxNzlB
OUEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTFBQzIyNjAyMERCNjlFQTcwMDg5
QjY2OSAvKiBPZmZsaW5lICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVn
aW5zICovLApAQCAtMTU0MDUsNiArMTU0MjcsNyBAQAogCQkJCTg1QUZBN0FCMEFBRjNCQjAwMEU4
NDMwNSAvKiBFdmVudHMgKi8sCiAJCQkJODVDNTZEMDMwQUE4QkFBNzAwRDk1NzU1IC8qIEhUTUwg
Ki8sCiAJCQkJODVFNzExM0QwQUM1RDRBMTAwNTMyNzBGIC8qIEludGVybmFsICovLAorCQkJCUM2
NzFEQTVEMTNFMzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQk4NTM4RjA1NzBBRDcy
MkI5MDA2QTgxRDEgLyogUmFuZ2VzICovLAogCQkJCTg1MDY1NzA0MEFBQjQ3NkMwMDJEMTVDMCAv
KiBTdHlsZVNoZWV0cyAqLywKIAkJCQk4NUEwRjk4RTBBQzcxNkY0MDAxNjFGREMgLyogU1ZHICov
LApAQCAtMTg1MTMsNiArMTg1MzYsOCBAQAogCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhE
NUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCisJCQkJQzZGNjcxNUExM0UzNUVCMjAw
REUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJQzZGNjcxNUIxM0UzNUVC
MjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCTkzQjcwRDRGMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcw
RDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKIAkJ
CQkxNENEOEQ4MTEwNkI1MjkwMDBBNDZEMjMgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICov
LApAQCAtMTkxNjgsNiArMTkxOTMsMjIgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJz
ID0gMDsKIAkJfTsKKwkJQzY3MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDNjcxREEzODEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8sCisJCQkJQzY3MURBMzkxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
TXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDNjcxREE1RDEz
RTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5OTE0LDYg
KzE5OTU1LDE0IEBACiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZl
bnQuY3BwICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50
LmggKi8sCiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11dGF0aW9uRXZlbnQuaWRs
ICovLAorCQkJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmgg
Ki8sCisJCQkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaWRs
ICovLAorCQkJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAg
Ki8sCisJCQkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8s
CisJCQkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywK
KwkJCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovLAor
CQkJCUM2RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovLAorCQkJ
CUM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLywKIAkJ
CQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlB
ODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5
RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0xOTk3OCw2ICsy
MDAyNyw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVu
dFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZDNzAwRjk5MkUwIC8qIFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIxM0UzNUU1RTAwREUzQjlD
IC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERD
RjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQk5QkQwQkY5MjEy
QTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOUJEMEJGOTEx
MkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywKQEAgLTIyMDMyLDYgKzIy
MDgyLDggQEAKIAkJCQk4OTg3ODVCOTEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEyQjQ4MDA5NjMzQTUgLyogSlNN
b3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1RDEzRTM1RUIy
MDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjcx
REEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDU3LDggQEAK
IAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRh
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEw
MDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3
MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYxODEsNiArMjYyMzUsMTAgQEAKIAkJCQk5NzdFMkUwRTEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUz
NzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTlERTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRh
cmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyog
SlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2NzFEQTNFMTNFMzcx
NDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmUyYTY1MDczODJiZWM0NzRkNDYyYzgzYzEyNTUyMzhlMTM4N2QyYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5j
cHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU011dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmgi
CisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6SlNNdXRh
dGlvbkxpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fd3JhcHBlcigqaXNvbGF0ZWRXb3Js
ZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVk
V29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNGdW5jdGlvbi5zZXRNYXlC
ZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7
CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKworfQorCitKU011dGF0aW9u
TGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIoKQoreworfQorCit2b2lkIEpTTXV0YXRpb25M
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25z
KQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0
YXRpb25zOworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VSVCghbXV0YXRpb25zLT5p
c0VtcHR5KCkpOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24g
PSBtX2pzRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2lzb2xh
dGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihn
bG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaGUgd2luZG93IG11
c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgorICAgIC8vIEZJWE1FOiBBIGJldHRlciBmaXgg
Zm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01XaW5kb3c6OmZyYW1lKCkgdG8gbm90IHJldHVy
biBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cgdXNlZCB0byBiZSBpbi4KKyAgICBpZiAoZnJh
bWUtPmRvbVdpbmRvdygpICE9IHdpbmRvdy0+aW1wbCgpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KKyAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3Jp
cHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQtPmlz
UGF1c2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9
IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsK
KworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUo
KTsKKyAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7
CisgICAgfQorCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBS
ZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKworICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBtdXRhdGlvbkxpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG11dGF0aW9uTGlzdC5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkpKTsKKwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBhcmdzLmFwcGVuZChj
b25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9uTGlzdCkpOworCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
OworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5h
bWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRhLnRp
bWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQor
ICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQgdGhl
IHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1lbnQg
b3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoMCktPnRhcmdldCgpKTsKKyAgICAgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGds
b2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOworCisgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Cisg
ICAgfQorfQorCitib29sIEpTTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBNdXRh
dGlvbkxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBjb25zdCBKU011dGF0aW9uTGlzdGVuZXIq
IGpzTXV0YXRpb25MaXN0ZW5lciA9IHN0YXRpY19jYXN0PGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5l
cio+KCZsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9PSBqc011dGF0aW9uTGlz
dGVuZXItPm1fanNGdW5jdGlvbjsKK30KKwordW5zaWduZWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpo
YXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8SlNDOjpKU09iamVjdCo+OjpIYXNoOjpo
YXNoKG1fanNGdW5jdGlvbi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTNmYTE2YzlmMzc3NWZjMzJhOTlhNmVlN2M5MmQ3NThiN2IyZGUwZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKyNpZm5kZWYgSlNNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgSlNNdXRhdGlvbkxpc3Rl
bmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlIDxoZWFwL1dl
YWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9X
cml0ZUJhcnJpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XcmFwcGVy
V29ybGQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNNdXRhdGlvbkxpc3Rl
bmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTTXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVy
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTXV0YXRpb25MaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
fkpTTXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgp
OworCisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4g
bV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CisKKyAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBjb25z
dCB7IG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7IH0KKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCitwcml2YXRlOgorICAgIEpTTXV0
YXRpb25MaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlNDOjpKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKworICAgIG11dGFibGUgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9uOworICAgIG11dGFibGUg
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKworICAgIFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEpTTXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc0ZjBkMDg3ZDdiMWI0
ZjgxYTAxN2UzN2E0YWUxYjhlMjk5M2QzYmQuLjU0N2U0MTUwM2UwZDAxYzliOWI5NThkNTRjMzI5
NmZjM2VlNmM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODcsNiArMTg3LDUwIEBAIEVORAogICAgIHJldHVybiBA
R2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKIH0KIAorc3ViIEdlbmVyYXRlTXV0YXRpb25MaXN0
ZW5lckNhbGwKK3sKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJHBhc3NS
ZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7
CisgICAgbXkgJHR5cGVNYXNrSGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAi
LCB0eXBlTWFzayIgOiAiIjsKKyAgICBteSAkcHJlZml4ZWRGdW5jdGlvbk5hbWUgPSAid2Via2l0
IiAuIHVjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJNdXRhdGlv
blJlY29yZC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkpTTXV0YXRpb25MaXN0ZW5lci5o
In0gPSAxOworCisgICAgbXkgQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwgPSAoKTsKKwor
ICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAgICAgIHB1c2goQEdlbmVyYXRl
TXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBKU1ZhbHVlIGpzVHlwZXMgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWpzVHlwZXMuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTT2JqZWN0KiBqc1R5
cGVzT2JqZWN0ID0gYXNPYmplY3QoanNUeXBlcyk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7
CisgICAgSlNWYWx1ZSBqc0NoaWxkbGlzdCA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJjaGlsZGxpc3QiKSk7CisgICAgaWYgKGpzQ2hpbGRsaXN0LmlzQm9vbGVh
bigpICYmIGpzQ2hpbGRsaXN0LmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0
YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgSlNWYWx1ZSBqc0F0dHJpYnV0ZSA9IGpz
VHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhdHRyaWJ1dGUiKSk7Cisg
ICAgaWYgKGpzQXR0cmlidXRlLmlzQm9vbGVhbigpICYmIGpzQXR0cmlidXRlLmdldEJvb2xlYW4o
KSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7Cisg
ICAgSlNWYWx1ZSBqc0NoYXJhY3RlcmRhdGEgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICBpZiAoanNDaGFyYWN0ZXJkYXRh
LmlzQm9vbGVhbigpICYmIGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpCisgICAgICAgIHR5
cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzsKK0VORAorICAgIH0K
KworICAgIHB1c2goQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCisgICAgaW1wLT4ke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0aW9uTGlzdGVuZXIoSlNN
dXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBj
dXJyZW50V29ybGQoZXhlYykpJHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0eXBlTWFza0hhbmRsaW5n
fSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK0VORAorICAg
IHJldHVybiBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbDsKK30KKworCiAjIFBhcmFtczog
J2lkbERvY3VtZW50JyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZU1vZHVsZQogewpAQCAtMjAxNSw2ICsy
MDU5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUs
ICJhZGQiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUsICJy
ZW1vdmUiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJhZGQi
KSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
ZXEgIndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJyZW1vdmUi
KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGFy
Z3NJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUluZGV4ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTExZmIwOTRiZTUzMjUyMi4uYTMzYzZiYmNk
NjdjZGQwM2Y0MjVjZmE3NTMzYzlhY2FlZTRiZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ3OSw2ICs0NzksMTIg
QEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmll
bGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsKICAgICB9CiAKKyAgICBpZiAoJG5hbWUg
ZXEgIkRvY3VtZW50IiB8fAorICAgICAgICAkbmFtZSBlcSAiRG9jdW1lbnRGcmFnbWVudCIgfHwK
KyAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkVsZW1lbnQiKSkgeworICAgICAgICBwdXNo
KEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7Cisg
ICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0K
QEAgLTExMzQsNiArMTE0MCw1MyBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rp
b25OYW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQ
dHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7Cisg
ICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikg
PyAiY3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0
aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBs
SW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhN
dXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRh
dGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZl
bnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7
bG9va3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9
IDA7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09i
amVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlz
dCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3Qt
PkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6
OkNoaWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRl
ID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlm
ICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkK
KyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFy
YWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQor
ICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFn
OworICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CisgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVm
aXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFu
ZGxpbmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6
bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7
CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyMzksNiArMTI5MiwxNCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdl
bmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
JGltcGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0z
MTU1LDcgKzMyMTYsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScg
PT4gMSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAn
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
JyA9PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNTUsNiAr
MzMxNywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0g
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAor
ICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNs
dWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1
ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVy
Kj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAg
ICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFl
N2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAs
NiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNp
bmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0
ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6
ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJv
dG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+
R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRv
dyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFu
YWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNp
ZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4
ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVu
dFRhcmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwog
ICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250
ZXh0OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVu
dFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdl
dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1
dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAv
LyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5
MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDli
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVj
dFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVy
KSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4
dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0
ZW5lcikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0
ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFt
X2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0
KCk7CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0
ZW5lcik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRl
cik7CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1f
bGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAg
ICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8g
RG9uJ3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0
YW5jZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11
dGF0aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29u
dGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsK
KyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11
dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+
c2l6ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhp
KSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJv
b2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVu
ZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVk
IFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4
TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJf
aAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djgu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDog
cHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29u
dGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhN
dXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29y
bGRDb250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNw
b3NlTGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1f
bGlzdGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3
MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gK
KworI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlv
bkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3Ig
VjhNdXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9m
IHY4OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9G
aW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAg
bGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpt
dXRhdGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRp
b25MaXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlz
dGVuZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRh
dGlvbkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3Rl
bmVyKj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxp
bmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAg
IEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlv
bkxpc3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFw
cGVyKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3Js
ZENvbnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisg
ICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0
aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKwor
ICAgIHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEz
ZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhi
MzUyMjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApA
QCAtNjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEg
dmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9p
ZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJU
KG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4
KTsKICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4
IDExZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJj
NzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAg
ICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJh
Y2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBp
ZiAoY2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+
OjpDYXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFj
aykpOwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2
ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFj
NjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZk
NTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3
cm9uZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4
OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJD
aGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJl
Y29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRo
aXMpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVk
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uMmIyNjkz
YjdlZjFmZmVhZmIwYTljNGRjOGY2ODBhZjUzMmM0NDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVC
dXR0b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJl
Y29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMTA5NSw2ICsxMDk5LDIwIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBpbnNlcnRlZE5v
ZGVzOworICAgICAgICBpbnNlcnRlZE5vZGVzLmFwcGVuZChjKTsKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSAwOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjLT5wcmV2aW91c1NpYmxpbmcoKTsg
bjsgbiA9IG4tPnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMSAvKmFkZGVkQ291bnQqLywgMCAv
KnJlbW92ZWROb2RlcyovLCBpbmRleCk7CisgICAgICAgIGlmIChjLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxlbWVudChjLT5wYXJlbnROb2RlKCkpLT5l
bnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBlbHNlIGlmIChjLT5wYXJlbnROb2Rl
KCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihjLT5wYXJlbnROb2RlKCkpLT5lbnF1
ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBjLT5vd25lckRvY3VtZW50KCktPmVucXVl
dWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAgICAgaWYgKGMtPnBhcmVudE5vZGUoKSAm
JiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFSU5TRVJURURfTElT
VEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5v
ZGUoKSkpOwogCkBAIC0xMTE2LDYgKzExMzQsMjAgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGls
ZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAg
ICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBy
ZW1vdmVkTm9kZXM7CisgICAgICAgIHJlbW92ZWROb2Rlcy5hcHBlbmQoYyk7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gYy0+cHJldmlvdXNTaWJs
aW5nKCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChjLT5wYXJlbnROb2RlKCksIDAgLyphZGRlZENvdW50
Ki8sIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZW1vdmVkTm9kZXMpLCBpbmRleCk7CisgICAgICAg
IGlmIChjLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxl
bWVudChjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAg
ICBlbHNlIGlmIChjLT5wYXJlbnROb2RlKCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQq
PihjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBj
LT5vd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAg
ICAgLy8gZGlzcGF0Y2ggcHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCiAgICAgaWYgKGMtPnBh
cmVudE5vZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RF
UkVNT1ZFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0cnVlLCBj
LT5wYXJlbnROb2RlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkMjg4NmU5ZWVh
YzczZDJhYzI0YmIzY2Y4MGFhNGI1ZmNhMWUxOTMuLmVjMzVhNTIzNWM0ZDYxZDYwY2U4YjcwNjk4
OTY4MWNmNThhZDg3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0LDYgKzEwNCw3
IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
TmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNl
ci5oIgpAQCAtNTA5MSw0ICs1MDkyLDExIEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9h
ZGVyKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGVyOwogfQogCitNdXRhdGlvblRhcmdldERhdGEq
IERvY3VtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIGlmICghbV9tdXRh
dGlvblRhcmdldERhdGEpCisgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIo
bmV3IE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRh
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IGUwMGI4Njk1ZGExMmFiZDQ0ZTkxYWE2ZGU0OTVhN2I2OGEyODgxNWIuLmU1YjA3N2UwZGU5
OTFjMjgzZmVhNDUxODE5N2IyNTdjYTRhNzA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0xMDMsNiArMTA0LDcg
QEAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBj
bGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHM7CitjbGFzcyBNdXRhdGlvblRhcmdldERhdGE7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3Mg
Tm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBlbnVtIFBhZ2Vz
aG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAKIGVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgeyBS
ZWNhbGNTdHlsZUltbWVkaWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlIH07CiAKLWNsYXNzIERvY3Vt
ZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewor
Y2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQog
ICAgIHsKQEAgLTExMDIsNiArMTEwNCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY2xlYXJY
TUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVu
c3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJ
Z25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIApAQCAtMTQxMCw2ICsxNDE1
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXRE
YXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhl
cmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2Ug
cmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA1
YzY4MzhlYzVmNWYwNDM1MTE4YTg1ZjZkMTRmMmVhMzA5MDFkMDM2Li4xN2Q5NDMzMGMzZWQ0ZDdl
MDM1NGIwOTkwOWU2ODdmMGVhMTQ2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0
NSw2ICsyNDUsMTEgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQg
d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBp
biBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlz
dGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKKworI2lmICFkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAg
ICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCmluZGV4IDM4ODJjNGRmZjA4ZTZkOGU5NjI1Yzc3ODI1Njg4NDE2MTlkODk0NGYuLmZk
ZWFkOWIwMTk0M2ZjMTZhYWU5NmIzMWJkOWM5NDkzNWJiOTliNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTg1LDQgKzg2LDExIEBAIGJv
b2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGCiAgICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbik7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnRGcmFnbWVudDo6
ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXRE
YXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlv
blRhcmdldERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3ODRh
MTIxYzlhM2JkMDhjODA4YzgyMzYyYTA0ZmYzMC4uNmVmZDc3MDM0YTU0NjZiODNiYzlkNGQwYjlj
YTAyNGYyMDllOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgTXV0YXRp
b25UYXJnZXREYXRhOworCitjbGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDEwICs0
NiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOwogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9u
VGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdl
dERhdGEuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0
YXRpb25UYXJnZXREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2Rl
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29u
c3Q7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0
YTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmlkbAppbmRleCA4ODJiNjJkYjM5ZWI3ZjJlMDUwNDc4MjA0OTJiN2U5MzYxYThlZGVkLi5iNzVi
ODVmYmQ2ZDI1MjBmZDRjYjZmMGM3YTY4ZjBmMWJjNzg2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yNSw2ICsyNSwxMSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZUxpc3QgcXVlcnlT
ZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAg
ICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5l
ciBsaXN0ZW5lcik7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRkZGNiYi4uNzkzMGU0MGEzZWRj
OWRjNjY0ZjNkYWNiMDEwZjYwOGU2YTBlNmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKQEAg
LTY5OSw2ICs3MDAsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5j
aHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lLCAiIiwgIiIpOworICAgIGVucXVldWVNdXRh
dGlvbihtdXRhdGlvbik7CisgICAgb3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJikKQEAg
LTczMiw2ICs3MzcsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3lu
Y2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAg
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVB
dHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIG5hbWUubG9jYWxOYW1lKCksICIiLCAiIik7CisgICAgZW5x
dWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICBvd25lckRvY3VtZW50KCktPmVucXVldWVNdXRh
dGlvbihtdXRhdGlvbik7CiB9CiAKIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBFbGVtZW50OjpjcmVh
dGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKQEAgLTIwNTMsNCArMjA2MiwxNCBAQCBQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlv
bkxpc3Q+IEVsZW1lbnQ6OndlYmtpdEdldEFuaW1hdGlvbnMoKSBjb25zdAogICAgIHJldHVybiBh
bmltQ29udHJvbGxlci0+YW5pbWF0aW9uc0ZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwogfQogCitN
dXRhdGlvblRhcmdldERhdGEqIEVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tdXRhdGlvblRhcmdldERhdGEoKSA6
IDA7Cit9CisKK011dGF0aW9uVGFyZ2V0RGF0YSogRWxlbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJn
ZXREYXRhKCkKK3sKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IGUxNWYyN2E5YjVkZWQwMWVhZDUzZTkwNDlmMWI4NmU0MzU2Mjk0ZGEuLjhiODY2MDFk
ODk4MDk0Y2ZhZmEzYjRlYWJiNDMyYzEwODUyMjQyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAu
aCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogCkBAIC00OSw3ICs1MCw3IEBAIGVudW0gU3Bl
bGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlRGVmYXVsdAog
fTsKIAotY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIEVsZW1l
bnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+RWxlbWVudCgpOwpAQCAtMzg0LDYgKzM4
NSw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0
YSogbXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEq
IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiAgICAgLy8gVGhlIGltcGxlbWVudGF0aW9u
IG9mIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoKSBjYWxscyB0aGUgZm9sbG93aW5nIHR3byBm
dW5jdGlvbnMuCiAgICAgLy8gVGhleSBhcmUgc2VwYXJhdGVkIHRvIGFsbG93IGEgZGlmZmVyZW50
IGZsb3cgb2YgY29udHJvbCBpbiBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkuCiAg
ICAgdm9pZCByZWNhbGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDllYmIwMmE1OTJmNzE4MzI2YzE2ZTAyZjE5
ODFiNDFkOWM4ODkwZWMuLjcyNzcxOGE2ZTU2NjMzZGI3MzNmOGJkNzBlYmY0MTlmZmE5Yjk2ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTE0MCw2ICsxNDAsMTEgQEAgbW9kdWxlIGNvcmUg
ewogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdV
QUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihp
biBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAgICAg
ICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBs
aXN0ZW5lcik7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8
fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0
cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJv
cnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDgzMDE1MDVjM2I1MmZjYzMxY2Fk
ZGNjM2YxNjc4NDg0YzZhZWJlMmMuLjM3MjNiYzY5ZmUzZGIwN2E0ODFhMWM5ZWU2MTdhMjU5YzU3
OWE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI1LDYgKzI1LDcg
QEAKICNpbmNsdWRlICJDbGFzc0xpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFw
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5o
IgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApA
QCAtMzksNiArNDAsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldENvbXB1dGVkU3R5bGUo
KTsKIAorICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1
cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7IH0KKyAgICBNdXRhdGlvblRhcmdldERhdGEq
IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCisgICAgeworICAgICAgICBpZiAoIW1fbXV0YXRp
b25UYXJnZXREYXRhKQorICAgICAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0
cihuZXcgTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJn
ZXREYXRhLmdldCgpOworICAgIH0KKworCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0Zv
Y3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURh
dGE6OnNldE5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwogCkBAIC01
NSw2ICs2NSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9v
bCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CiAjZW5kaWYKK3ByaXZhdGU6CisgICAgT3du
UHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERhdGE7CiB9OwogCiBpbmxp
bmUgSW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQ4ZDg4NDEwNDUxZDI4NjM1N2RlZTBh
NTVkMTMzZDQ2Njk2YTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvbkxpc3RlbmVy
X2gKKyNkZWZpbmUgTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNdXRhdGlvblJlY29yZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK3R5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZFZlY3RvcjsK
KworY2xhc3MgTXV0YXRpb25MaXN0ZW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uTGlz
dGVuZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NdXRhdGlvbkxpc3RlbmVyKCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5lciYpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhhc2goKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uTGlzdGVuZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZDAxZjhkM2I2NmZmMTlkM2QzODFiMjZkNzRm
ZWNiN2RjNmY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25MaXN0ZW5lci5pZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBQdXJlSW50ZXJmYWNlLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAg
ICBdIE11dGF0aW9uTGlzdGVuZXIgeworICAgICAgICAvLyB2b2lkIGhhbmRsZUV2ZW50KGluIE11
dGF0aW9uUmVjb3JkW10gbXV0YXRpb25zKQorICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIEFy
cmF5IG11dGF0aW9ucyk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ5NTgyOWQxZWYzMjIxOWQwNDA5Y2IwMWNmZDBkZDcwMmVkMTc1OTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3Bw
CkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9u
UmVjb3JkLmgiCisKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEVtcHR5Tm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3Qg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVMaXN0PiBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eU5vZGVMaXN0KTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCB7IHJldHVy
biAwOyB9CisKK3ByaXZhdGU6CisgICAgRW1wdHlOb2RlTGlzdCgpIHsgfQorfTsKKworfQorCitQ
YXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0
Q2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgdW5zaWduZWQgYWRkZWRDb3VudCwgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXgpCit7Cisg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlv
blJlY29yZChDaGlsZGxpc3RGbGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9hZGRlZENv
dW50ID0gYWRkZWRDb3VudDsKKyAgICBtdXRhdGlvbi0+bV9yZW1vdmVkTm9kZXMgPSByZW1vdmVk
OworICAgIGlmICghbXV0YXRpb24tPm1fcmVtb3ZlZE5vZGVzKQorICAgICAgICBtdXRhdGlvbi0+
bV9yZW1vdmVkTm9kZXMgPSBFbXB0eU5vZGVMaXN0OjpjcmVhdGUoKTsKKyAgICBtdXRhdGlvbi0+
bV9jaGlsZGxpc3RJbmRleCA9IGNoaWxkbGlzdEluZGV4OworICAgIHJldHVybiBtdXRhdGlvbi5y
ZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3Jk
OjpjcmVhdGVBdHRyaWJ1dGVDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcmIHByZXZWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0g
YWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKEF0dHJpYnV0ZUZsYWcsIHRhcmdldCkpOworICAg
IG11dGF0aW9uLT5tX2F0dHJOYW1lID0gYXR0ck5hbWU7CisgICAgbXV0YXRpb24tPm1fcHJldlZh
bHVlID0gcHJldlZhbHVlOworICAgIG11dGF0aW9uLT5tX25ld1ZhbHVlID0gbmV3VmFsdWU7Cisg
ICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJl
Y29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENo
YXJhY3RlcmRhdGFGbGFnLCB0YXJnZXQpKTsKK30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZUZsYWdUb05hbWUoTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uVHlwZUZsYWcgZmxhZykK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgY2hpbGRsaXN0LCAoImNo
aWxkbGlzdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXR0cmli
dXRlLCAoImF0dHJpYnV0ZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgY2hhcmFjdGVyZGF0YSwgKCJjaGFyYWN0ZXJkYXRhIikpOworCisgICAgc3dpdGNoIChmbGFn
KSB7CisgICAgY2FzZSBNdXRhdGlvblJlY29yZDo6Q2hpbGRsaXN0RmxhZzoKKyAgICAgICAgcmV0
dXJuIGNoaWxkbGlzdDsKKyAgICBjYXNlIE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOgor
ICAgICAgICByZXR1cm4gYXR0cmlidXRlOworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6OkNoYXJh
Y3RlcmRhdGFGbGFnOgorICAgICAgICByZXR1cm4gY2hhcmFjdGVyZGF0YTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAg
IH0KK30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlwZUZsYWcg
dHlwZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90eXBlKHR5cGVGbGFn
VG9OYW1lKHR5cGVGbGFnKSkKKyAgICAsIG1fdHlwZUZsYWcodHlwZUZsYWcpCisgICAgLCBtX3Rh
cmdldCh0YXJnZXQpCisgICAgLCBtX2luRG9jdW1lbnQobV90YXJnZXQtPmluRG9jdW1lbnQoKSkK
K3sKK30KKworTXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCgpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2UwMjdjOTJkNjllNzM2OTQ4OGYyOTEzNWYwNGQ3OWQxNGMxODk0NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisj
aW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6
IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1Jl
ZlB0cjxOb2RlPiB0YXJnZXQsIHVuc2lnbmVkIGFkZGVkQ291bnQsIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IHJlbW92ZWQsIHVuc2lnbmVkIGNoaWxkbGlzdEluZGV4KTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBw
cmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uUmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQpOworCisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIE5vZGUqIHRhcmdldCgp
IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisgICAgYm9vbCBpbkRvY3VtZW50KCkgeyByZXR1
cm4gbV9pbkRvY3VtZW50OyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAg
IHVuc2lnbmVkIGFkZGVkQ291bnQoKSB7IHJldHVybiBtX2FkZGVkQ291bnQ7IH0KKyAgICBOb2Rl
TGlzdCogcmVtb3ZlZE5vZGVzKCkgeyByZXR1cm4gbV9yZW1vdmVkTm9kZXMuZ2V0KCk7IH0KKyAg
ICB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCgpIHsgcmV0dXJuIG1fY2hpbGRsaXN0SW5kZXg7IH0K
KworICAgIC8vIEZvciB0eXBlID09ICdhdHRyaWJ1dGUnCisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyTmFtZSgpIHsgcmV0dXJuIG1fYXR0ck5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHBy
ZXZWYWx1ZSgpIHsgcmV0dXJuIG1fcHJldlZhbHVlOyB9CisgICAgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KKworICAgIC8vIE5vdCBwYXJ0IG9mIHRoZSBJ
REwsIGJ1dCB1c2VkIGludGVybmFsbHkgZm9yIGZhc3QgdHlwZS1iYXNlZCBvcGVyYXRpb25zLgor
ICAgIGVudW0gTXV0YXRpb25UeXBlRmxhZyB7CisgICAgICAgIENoaWxkbGlzdEZsYWcgPSAoMSA8
PCAwKSwKKyAgICAgICAgQXR0cmlidXRlRmxhZyA9ICgxIDw8IDEpLAorICAgICAgICBDaGFyYWN0
ZXJkYXRhRmxhZyA9ICgxIDw8IDIpCisgICAgfTsKKyAgICBNdXRhdGlvblR5cGVGbGFnIHR5cGVG
bGFnKCkgeyByZXR1cm4gbV90eXBlRmxhZzsgfQorCitwcml2YXRlOgorICAgIE11dGF0aW9uUmVj
b3JkKE11dGF0aW9uVHlwZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKworICAgIEF0
b21pY1N0cmluZyBtX3R5cGU7CisgICAgTXV0YXRpb25UeXBlRmxhZyBtX3R5cGVGbGFnOworICAg
IFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKKyAgICBib29sIG1faW5Eb2N1bWVudDsKKyAgICB1bnNp
Z25lZCBtX2FkZGVkQ291bnQ7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBtX3JlbW92ZWROb2RlczsK
KyAgICB1bnNpZ25lZCBtX2NoaWxkbGlzdEluZGV4OworICAgIFJlZlB0cjxOb2RlPiBtX25leHRO
b2RlOworICAgIEF0b21pY1N0cmluZyBtX2F0dHJOYW1lOworICAgIFN0cmluZyBtX3ByZXZWYWx1
ZTsKKyAgICBTdHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
OGIxOGU4ZjQ4YjQzOTIyZTRhMTgwODliZjFkNGEwZmM2YTkyMjgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgTm9kZSAgICAgICAgICAgdGFyZ2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgaW5Eb2N1bWVudDsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAn
Y2hpbGRsaXN0JworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgYWRk
ZWRDb3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0ICAgICAgIHJlbW92
ZWROb2RlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgIGNoaWxk
bGlzdEluZGV4OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdhdHRyaWJ1dGUnCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBhdHRyTmFtZTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIHByZXZWYWx1ZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIG5ld1ZhbHVlOworICAgIH07Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmJhNzJkMmUzZmJmN2M4ZDUx
YzUwNmM3OTE5MTgwNTRlMDgyOGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uVGFyZ2V0LmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQu
aCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitz
dHJ1Y3QgTXV0YXRpb25Db250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxE
b2N1bWVudD4gZCwgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRv
Y3VtZW50KGQpCisgICAgICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVm
UHRyPERvY3VtZW50PiBkb2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlz
dGVuZXI7Cit9OworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAg
ICByZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0
ckhhc2g8RG9jdW1lbnQqPjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXkt
Pmxpc3RlbmVyLT5oYXNoKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IE11dGF0aW9uQ29udGV4dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGEtPmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9
PSAqYi0+bGlzdGVuZXI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRh
dGlvbkNvbnRleHQqLCBNdXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhh
c2g+IENvbnRleHRWZWN0b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0
VmVjdG9yTWFwJiBjb250ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENvbnRleHRWZWN0b3JNYXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERl
cXVlPE93blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4g
PiwgYWN0aXZlQ29udGV4dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisK
K3ZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25D
b250ZXh0cygpLmlzRW1wdHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBj
b250ZXh0ID0gYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBP
d25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFw
KCkudGFrZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5k
bGVFdmVudChjb250ZXh0LT5kb2N1bWVudC5nZXQoKSwgdi5yZWxlYXNlKCkpOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgZW5zdXJlTXV0YXRpb25RdWV1ZWQoUGFzc1JlZlB0cjxNdXRhdGlvbkxp
c3RlbmVyPiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRp
b24pCit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9u
OworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0KCkpOworICAgIEFTU0VSVChtdXRhdGlvbi0+
dGFyZ2V0KCktPmRvY3VtZW50KCkpOworICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRl
eHQgPSBhZG9wdFB0cihuZXcgTXV0YXRpb25Db250ZXh0KG11dGF0aW9uLT50YXJnZXQoKS0+ZG9j
dW1lbnQoKSwgcHJwTGlzdGVuZXIpKTsKKworICAgIHBhaXI8Q29udGV4dFZlY3Rvck1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGNvbnRleHRWZWN0b3JNYXAoKS5hZGQoY29udGV4dC5nZXQo
KSwgMCk7CisgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5z
ZWNvbmQgPSBuZXcgTXV0YXRpb25SZWNvcmRWZWN0b3I7CisgICAgICAgIGFjdGl2ZU11dGF0aW9u
Q29udGV4dHMoKS5hcHBlbmQoY29udGV4dC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBNdXRhdGlv
blJlY29yZFZlY3RvciogdiA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICh2LT5pc0Vt
cHR5KCkgfHwgdi0+bGFzdCgpICE9IG11dGF0aW9uKQorICAgICAgICB2LT5hcHBlbmQobXV0YXRp
b24pOworfQorCitNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KCkKK3sKK30KKwordm9p
ZCBNdXRhdGlvblRhcmdldDo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IHBycExpc3RlbmVyLCB1aW50OF90IHR5cGVNYXNrKQoreworICAgIFJl
Z2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihwcnBMaXN0ZW5lciwg
dHlwZU1hc2spOworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFy
Z2V0RGF0YSgpOworICAgIHNpemVfdCBpbmRleCA9IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVy
ZWRMaXN0ZW5lcik7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0
ZW5lcnMuYXBwZW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBkLT5s
aXN0ZW5lcnNbaW5kZXhdLnR5cGVzIHw9IHR5cGVNYXNrOworfQorCit2b2lkIE11dGF0aW9uVGFy
Z2V0Ojp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3Rl
bmVyKQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgp
OworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5l
cnNbaV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJl
Y29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNTRVJUKHBycE11dGF0aW9uKTsKKworICAgIE11
dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8
fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGQtPmxp
c3RlbmVyc1tpXS50eXBlcyAmIG11dGF0aW9uLT50eXBlRmxhZygpKQorICAgICAgICAgICAgZW5z
dXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJzW2ldLmxpc3RlbmVyLCBtdXRhdGlvbik7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRh
cmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiMWM0ZGE0NDRiNzFmZDhkNzUyYWJkNTMxOGEzNTYxMTQ2NGMz
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQu
aApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldF9oCisjZGVmaW5lIE11dGF0
aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0ZW5lcjsKK2NsYXNzIE11dGF0aW9uUmVjb3Jk
OworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworCitjbGFzcyBNdXRhdGlvblRhcmdldCB7Citw
dWJsaWM6CisgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0
YXRpb25MaXN0ZW5lcj4sIHVpbnQ4X3QgdHlwZU1hc2spOworICAgIHZvaWQgd2Via2l0UmVtb3Zl
TXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKik7CisKKyAgICB2b2lkIGVucXVldWVN
dXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPik7CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5NdXRhdGlvblRhcmdldCgpOworCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERh
dGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0
RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworfTsKKwordm9pZCBzcGluTXV0
YXRpb25RdWV1ZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRh
dGlvblRhcmdldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJn
ZXREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDBiZTEwYzMwZDJlMGEzYjk0NDkwMGRiNWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldERhdGFfaAorI2RlZmluZSBNdXRhdGlvblRh
cmdldERhdGFfaAorCisjaW5jbHVkZSAiUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRpb25M
aXN0ZW5lcj4gTXV0YXRpb25MaXN0ZW5lclZlY3RvcjsKK3N0cnVjdCBNdXRhdGlvblRhcmdldERh
dGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTXV0YXRpb25UYXJnZXREYXRh
KCkgeyB9CisgICAgfk11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgfQorCisgICAgTXV0YXRpb25MaXN0
ZW5lclZlY3RvciBsaXN0ZW5lcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNdXRhdGlvblRhcmdldERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVn
aXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0
ZDE0NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25M
aXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3Rl
cmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4
X3QgdHlwZU1hc2spCisgICAgICAgIDogbGlzdGVuZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBl
TWFzaykgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9
PSAqb3RoZXIubGlzdGVuZXI7CisgICAgfQorCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+
IGxpc3RlbmVyOworICAgIHVpbnQ4X3QgdHlwZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDZjYTViMzdkMjFiOTYyYTFkYjJiMGEwNmU2M2U5MDZi
YjY3ZDNmMmQuLmZiN2ViMGNkOGIxZjg1YTE5MmE5MGQ3MWUxOTA2ZTQ2ZDcyZTdkMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJNZWRp
YVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xODgzLDQgKzE4ODQsOSBAQCBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJr
aXRTdG9yYWdlSW5mbygpIGNvbnN0CiB9CiAjZW5kaWYKIAordm9pZCBET01XaW5kb3c6OnNwaW5N
dXRhdGlvblF1ZXVlKCkKK3sKKyAgICA6OldlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEy
YWQ4MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNlNjBkYzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2NDk4
ZmNhZGYyM2VhMjdiNzczYjc0N2E0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDE0
LDYgKzQxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBl
cmZvcm1hbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1
ZXVlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDYyZjFjMzAzNjZhMWZiN2UxNDc1NWVlMTU1NGE4
YTNjMGZlYzExOTYuLjYyMjcxNTcwMjM5M2E4OTcwNDNlMWEzYzM4NDIyZGY0ZTI4ZTNjYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTgwMyw2ICs4MDMsMTEgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIC8vIHdpbmRvdy50b1N0cmluZygpIHJlcXVpcmVzIHNwZWNpYWwgaGFu
ZGxpbmcgaW4gVjgKICAgICAgICAgW1Y4RG9Ob3RDaGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5LCBDdXN0b20sIERvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKICNl
bmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKKyAgICAgICAgLy8gRklYTUUoYWRhbWspOiBE
TyBOT1QgU1VCTUlUCisgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZXhwb3NlZCB0byBKUyB1
bnRpbCBlbWJlZGRlcnMgYXJlIG1vZGlmaWVkIHRvIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUoKQor
ICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIGVhY2ggdGFzay4KKyAgICAgICAgdm9pZCBzcGluTXV0
YXRpb25RdWV1ZSgpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105558</attachid>
            <date>2011-08-29 18:28:54 -0700</date>
            <delta_ts>2011-08-29 18:41:57 -0700</delta_ts>
            <desc>MutationRecord: removed prevValue/newValue</desc>
            <filename>bug-66079-20110829182852.patch</filename>
            <type>text/plain</type>
            <size>111204</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJjNmQxYjc5Njk2Yzc5NGEzNWJiLi45MmUzNmJm
Nzg3ZmFlOWVmOTMzZWViYmFkZWQ3NzRkNTRjMzExYTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDgtMjUgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFy
Z2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlz
dGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFuIHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5l
IHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29tcGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZmU5
MTIyZjI0MGYwNDM3NTJmYzU3ZGMxNWVmODhkMDYwMDI2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNSBAQAorVGVzdCB0aGF0IE11dGF0aW9uTGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9uc1swXS5hZGRl
ZENvdW50IGlzIGFkZGVkQ291bnRzWzBdCitQQVNTIG11dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRl
eCBpcyBjaGlsZGxpc3RJbmRpY2VzWzBdCitQQVNTIG11dGF0aW9uc1swXS5pbkRvY3VtZW50IGlz
IGluRG9jdW1lbnRGbGFnc1swXQorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWRDb3VudCBpcyBhZGRl
ZENvdW50c1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0
SW5kaWNlc1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50Rmxh
Z3NbMV0KK1BBU1MgbXV0YXRpb25zWzJdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzJdCitQQVNTIGxp
c3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRk
ZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVk
Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdElu
ZGljZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdz
WzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJO
YW1lIGlzICJkYXRhLWZvbyIKK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1
bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25z
WzBdLnRhcmdldCBpcyB0ZXh0Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQg
aXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mg
bXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVk
IGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjRjZjE5NjBmNTBhNjViYzU0NTQ4
MjA4ZDcyZTg3OTUzZDNiNzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDE0NCBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgPGRpdiBpZD0ic2FuZGJveCIgc3R5
bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+CisgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRoYXQgTXV0YXRpb25MaXN0ZW5lcnMgd29yayBhcyBleHBlY3RlZC4nKTsKKyAgICAg
ICAgdmFyIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHZhciBsaXN0ZW5lckNhbGxlZCA9IGZh
bHNlOworICAgICAgICB2YXIgYWRkZWRDb3VudHM7CisgICAgICAgIHZhciByZW1vdmVkTm9kZXM7
CisgICAgICAgIHZhciBjaGlsZGxpc3RJbmRpY2VzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRy
czsKKyAgICAgICAgdmFyIHRleHROb2RlczsKKyAgICAgICAgdmFyIGRvY3VtZW50TGlzdGVuZXJP
cHRpb25zOworICAgICAgICB2YXIgaW5Eb2N1bWVudEZsYWdzOworCisgICAgICAgIGZ1bmN0aW9u
IGxpc3RlbmVyKG0pIHsKKyAgICAgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAg
ICAgIGxpc3RlbmVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgICAgICB2YXIgaW5zZXJ0ZWRJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgcmVtb3Zl
ZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBpbmRleEluZGV4ID0gMDsKKyAgICAgICAgICAg
IHZhciBhdHRySW5kZXggPSAwOworICAgICAgICAgICAgdmFyIHRleHROb2RlSW5kZXggPSAwOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1baV0udHlwZSA9PSAnY2hpbGRsaXN0JykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoYWRkZWRDb3VudHMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLmFkZGVkQ291bnQnLCAnYWRkZWRDb3VudHNbJyAr
IChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBtW2ldLnJlbW92ZWROb2Rlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLnJlbW92ZWROb2Rlc1sn
ICsgaiArICddJywgJ3JlbW92ZWROb2Rlc1snICsgKHJlbW92ZWRJbmRleCsrKSArICddJyk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkbGlzdElu
ZGljZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1snICsgaSArICddLmNoaWxkbGlzdEluZGV4JywgJ2NoaWxkbGlzdEluZGljZXNbJyArIChpbmRl
eEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1baV0udHlwZSA9
PSAnYXR0cmlidXRlJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ211dGF0aW9uc1snICsgaSArICddLmF0dHJOYW1lJywgbW9kaWZpZWRBdHRyc1thdHRySW5k
ZXgrK10pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdjaGFyYWN0
ZXJkYXRhJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBp
ICsgJ10udGFyZ2V0JywgJ3RleHROb2Rlc1snICsgKHRleHROb2RlSW5kZXgrKykgKyAnXScpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10uaW5Eb2N1bWVudCcsICdpbkRvY3VtZW50RmxhZ3NbJyArIGkgKyAnXScpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRlZENvdW50cyA9IFtdOworICAgICAgICAgICAg
cmVtb3ZlZE5vZGVzID0gW107CisgICAgICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gW107Cisg
ICAgICAgICAgICBtb2RpZmllZEF0dHJzID0gW107CisgICAgICAgICAgICB0ZXh0Tm9kZXMgPSBb
XTsKKyAgICAgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFtdOworICAgICAgICAgICAgcmVzdW1l
TGlzdGVuaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdXNwZW5kTGlzdGVu
aW5nKCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gcmVzdW1lTGlzdGVuaW5n
KCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0
ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJi
bGluZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zID0g
e2NoaWxkbGlzdDogdHJ1ZX07CisgICAgICAgIGRvY3VtZW50LndlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIobGlzdGVuZXIsIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zKTsKKyAgICAgICAgdmFyIGEg
PSBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Cisg
ICAgICAgIGEudGV4dENvbnRlbnQgPSAnaGVsbG8sIHdvcmxkJzsKKyAgICAgICAgdmFyIGIgPSBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAg
ICAgIGFkZGVkQ291bnRzID0gWzEsIDEsIDFdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0g
WzAsIDAsIDFdOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV07
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1
bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAg
ICAvLyBUZXN0IHJlbW92YWwuCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICBzYW5kYm94LnJlbW92
ZUNoaWxkKGIpOworICAgICAgICBhZGRlZENvdW50cyA9IFswXTsKKyAgICAgICAgcmVtb3ZlZE5v
ZGVzID0gW2JdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzFdOworICAgICAgICBpbkRv
Y3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAg
ICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNh
bGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxs
ZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAg
ICAgc2FuZGJveC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7YXR0cmlidXRl
OiB0cnVlfSk7CisgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbJ2RhdGEtZm9vJ107CisgICAgICAg
IHNhbmRib3guc2V0QXR0cmlidXRlKCdkYXRhLWZvbycsICdteWRhdGEnKTsKKyAgICAgICAgaW5E
b2N1bWVudEZsYWdzID0gW3RydWVdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAg
ICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJD
YWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3RlbmVyQ2Fs
bGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBjaGFyYWN0ZXJkYXRhIG11dGF0aW9uLgor
ICAgICAgICBhLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGFyYWN0ZXJk
YXRhOiB0cnVlfSk7CisgICAgICAgIHRleHROb2RlcyA9IFthLmZpcnN0Q2hpbGRdOworICAgICAg
ICBhLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBpbkRvY3Vt
ZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAg
IHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxl
ZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGRpc2Nvbm5lY3RlZCBEb2N1bWVudEZyYWdtZW50
CisgICAgICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsK
KyAgICAgICAgZnJhZy53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRs
aXN0OiB0cnVlfSk7CisgICAgICAgIHZhciBkID0gZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBhZGRlZENvdW50cyA9IFsxXTsKKyAgICAg
ICAgY2hpbGRsaXN0SW5kaWNlcyA9IFswXTsKKyAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0gW2Zh
bHNlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3Rl
bmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAg
IHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIHNhbmRib3gud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7Cisg
ICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOwor
ICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVz
dW1lTGlzdGVuaW5nKCk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNk
ZDczMGY0MmNlZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uNjRjNmJlZGNmYWYzZDA3MzQxM2Ey
ODhhM2RmZGRmZjY4MWUwNGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxMS0w
OC0yNSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBp
biBwcm9ncmVzc10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEg
cmVwbGFjZW1lbnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJp
bWVudGFsLCB2ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZl
bnR1YWxseSByZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAg
ICAgICAgbGFyZ2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNz
YWdlIHRvIHB1YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAg
ICAgVGhhdCB0aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1h
cml6ZWQgYnkKKyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgor
CisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJh
cHBzLzIwMTFKdWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2gg
aXMgaW4gbm8gd2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRp
b24uIFRoZSBiaWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5n
CisgICAgICAgIG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRhdGlvbkxpc3RlbmVyczog
dGhlIGluY2x1ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQgY2FsbHMgYSAic3Bpbk11
dGF0aW9uUXVldWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4g
VGhpcyBpcyBub3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0byBKUywKKyAgICAgICAg
dGhvdWdoOiBteSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0YXRpb25RdWV1ZSBmcm9t
CisgICAgICAgIEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdlYkNvcmUgb3IgKG1vcmUg
bGlrZWx5KSBpbgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBhIHNlcGFyYXRlIGNoYW5n
ZSB3aGljaCBpbXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4gQ2hyb21pdW0uCisKKyAg
ICAgICAgVGhlIG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhh
dCBNdXRhdGlvblJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRjaGVkIGluIGFsbCB0aGUg
cHJvcGVyIHBsYWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAgICAgIGlubmVySFRNTCBp
cyBub3QgYXMgd2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YKKyAg
ICAgICAgd2FudGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQgZmVlZGJhY2s6IGl0IHNo
b3VsZG4ndCBiZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0aW9uUmVjb3JkIGRpc3Bh
dGNoaW5nIGluIGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4KKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRh
dGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25MaXN0ZW5lcjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3Rl
bmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjppc29sYXRlZFdvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6d3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBwZXIpOgorICAgICAgICBK
U011dGF0aW9uTGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZlbnRMaXN0ZW5lciwKKyAg
ICAgICAgd2l0aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVhc29uIGZvciBleGlzdGlu
ZworICAgICAgICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciBuZWVkcyB0
byBiZWhhdmUKKyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBpbiB0aGF0IGR1cGxpY2F0
ZSBhZGRpdGlvbnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVxdWlyZXMgdGhlIG9wZXJh
dG9yPT0gbWV0aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcg
dGhlIHNhbWUgTXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFuIG9uY2UgdG8gYSBnaXZl
biBsaXN0ZW5lciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBhIEhhc2hNYXAsIHRodXMg
dGhlIHxoYXNofCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxGaWVsZHMpOgorICAgICAg
ICAoR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVG
dW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgIFNp
bmNlIE11dGF0aW9uTGlzdGVuZXJzIHRoZW1zZWx2ZXMgYXJlIGN1c3RvbSwgc28KKyAgICAgICAg
bXVzdCBiZSBtdXRhdGlvbiBsaXN0ZW5lciBhZGRpdGlvbiBhbmQgcmVtb3ZhbC4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRD
YWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlzdGVuZXJPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZG9G
aW5kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVxdWl2YWxlbnRzIG9mIHRo
ZSBKU011dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2VuZXJhbGl6ZWQgaW52b2tl
Q2FsbGJhY2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgorICAgICAgICBWOE11dGF0
aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVu
dCk6CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRhdGlvbnMuCisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3Zh
bEV2ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11dGF0aW9ucy4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIERpc3BhdGNoICJhdHRyaWJ1
dGUiIG11dGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERh
dGEpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
TXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uTGlz
dGVuZXI6On5NdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25MaXN0ZW5l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0eXBlRmxhZ1RvTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL011dGF0aW9u
UmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6aW5zZXJ0ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uUmVjb3JkOjpuZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
YXR0ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnByZXZWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV3VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGVGbGFnKToKKyAgICAgICAgKiBkb20vTXV0YXRp
b25SZWNvcmQuaWRsOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25SZWNvcmRzIGFyZSBhbmFsb2dv
dXMgdG8gRXZlbnRzOiB0aGV5IGhvbGQgZGF0YQorICAgICAgICBhYm91dCBhIHNpbmdsZSBtdXRh
dGlvbi4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpz
cGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVl
TXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAg
ICBNdXRhdGlvblRhcmdldCBpcyBhbmFsb2dvdXMgdG8gRXZlbnRUYXJnZXQsIGFuZCBpcyBhIG1p
eGluIGZvcgorICAgICAgICBEb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVudCwgYW5kIEVsZW1lbnQu
CisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUgdGhhdCB0
aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNoYW5n
ZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0byBkZWFs
IHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUtdG8t
cnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRhNWEyZTc2
M2FkOTZjNTM3MC4uOWU3OGZjMTRlMjVlYjc1MzE5NGFmNDJiNDE4MTk3MzY4NDBhNTY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCw4IEBACiAjaW5jbHVkZSAi
SlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVy
LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKICNpbmNsdWRlICJKU05hbWVk
Tm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuY3BwIgogI2luY2x1ZGUgIkpTTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggMjZiNjBhYjMxMzFkOWFlNGY2ZjIzNjM0MTcxMjUwZjZhNTVjMDdmOC4uYmUzYjA1NDJhOTMw
ZDI5YmJlMWFmOWExZWVjNjYyZjNhNzQxODQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0zMTUsNiArMzE1LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGFDYWxs
YmFjayBcCiAgICAgTW91c2VFdmVudCBcCiAgICAgTXV0YXRpb25FdmVudCBcCisgICAgTXV0YXRp
b25MaXN0ZW5lciBcCisgICAgTXV0YXRpb25SZWNvcmQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAg
ICAgTmF2aWdhdG9yIFwKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciBcCkBAIC01NzEsNyAr
NTczLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAKIC5QSE9OWSA6IGFsbAogCi1KU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkpCitKU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oIEpTTXV0YXRpb25MaXN0ZW5lci5oLCQoRE9NX0NMQVNTRVM6JT1K
UyUuaCkpCiAKIFdFQl9ET01fSEVBREVSUyA6PQogaWZlcSAoJChmaW5kc3RyaW5nIEJVSUxESU5H
X1dYLCQoRkVBVFVSRV9ERUZJTkVTKSksIEJVSUxESU5HX1dYKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCBmNTE4NjAwYTRlMTQxOWQwOTY5M2Y5ZTAzNjQwNjE5MWNj
MmYxYTRjLi45OWFhNzlhNzVjOTVmMjM2YjJiZjgzNzg3OGZkMjVhMDVlMWU0YmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAg
ICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBiaW5kaW5ncy92OC9jdXN0b20gZXhpc3QgZm9yIHRoZXNl
LgogICAgICAgJy4uL2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4vZG9tL0V2ZW50
VGFyZ2V0LmlkbCcsCisgICAgICAnLi4vZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKICAgICAg
ICcuLi9odG1sL1ZvaWRDYWxsYmFjay5pZGwnLAogCiAgICAgICAjIEJpbmRpbmdzIHdpdGggY3Vz
dG9tIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxNjg0
NGI3MTAxNzhhNzEyMjE4ZmZkNjA2YTJjYmMyMzNkMGNkMDcyLi45NzJiNmE3MzcxNGM1ZjBlYjZi
NTg5NzVjMGQ3OGJlMDM2N2IzNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTc5LDYgKzExNzks
OCBAQAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlUG9ydC5pZGwnLAogICAgICAgICAgICAgJ2Rv
bS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaWRsJywK
KyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAorICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvblJlY29yZC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaWRs
JywKICAgICAgICAgICAgICdkb20vTm9kZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlRmls
dGVyLmlkbCcsCkBAIC0yMDc3LDYgKzIwNzksOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHAnLApAQCAtNTMyNiw2ICs1MzMxLDEyIEBACiAgICAgICAgICAgICAnZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuY3BwJywKKyAg
ICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uVGFyZ2V0LmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0LmgnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCcsCiAgICAgICAgICAgICAnZG9tL05h
bWVOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuaCcsCiAgICAg
ICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5jcHAnLApAQCAtNTM2Nyw2ICs1Mzc4LDcgQEAKICAg
ICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIu
aCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NDYzZTUyN2RlNmZkYTMwYWI3OTk2OGU2
ZWFiNGM5YTJiZC4uOWYzZTNiMDkyMjI4YTE3OWRjNDlmZTA5OGNmZTU3ZmNhOTNmMTRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTQxMCw5ICs1NDEwLDE3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlw
aE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3
RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEg
LyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMw
MDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNjcxREEzRTEzRTM3MTQ5MDA1NThBRTkg
LyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29y
ZC5jcHAgKi87IH07CisJCUM2NzFEQTNGMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVj
b3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcx
REEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovOyB9OworCQlDNjcy
QTJEMzEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcyQTJEMjEzRjM0QzRBMDA5NDIz
Q0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZGNDEwNDcxMzBDNkU4OTAwMzkzREU0
IC8qIEVudHJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlCYXNlLmNwcCAqLzsgfTsK
KwkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQwMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJCUM2RjY3MTU0MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuY3BwICovOyB9OworCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2
RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERF
M0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5jcHAgKi87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011
dGF0aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LzsgfTsKIAkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmggKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjEzNyw5ICsxMjE0NSwyMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNB
OTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdseXBoTWV0cmljc01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3
NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8q
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRh
dGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0
QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBB
MDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRy
eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNl
LmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5l
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQwMTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9u
VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDcxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE11dGF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdE
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMxNTksNiArMTMxODAsNyBAQAogCQkJCTg5ODc4NTc2MTIyQ0ExREEwMDNBQUJE
QSAvKiBGaWxlQVBJICovLAogCQkJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICov
LAogCQkJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8sCisJCQkJQzY3
MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTMzNTAzQzlDMTAxNzlB
OUEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTFBQzIyNjAyMERCNjlFQTcwMDg5
QjY2OSAvKiBPZmZsaW5lICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVn
aW5zICovLApAQCAtMTU0MDUsNiArMTU0MjcsNyBAQAogCQkJCTg1QUZBN0FCMEFBRjNCQjAwMEU4
NDMwNSAvKiBFdmVudHMgKi8sCiAJCQkJODVDNTZEMDMwQUE4QkFBNzAwRDk1NzU1IC8qIEhUTUwg
Ki8sCiAJCQkJODVFNzExM0QwQUM1RDRBMTAwNTMyNzBGIC8qIEludGVybmFsICovLAorCQkJCUM2
NzFEQTVEMTNFMzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQk4NTM4RjA1NzBBRDcy
MkI5MDA2QTgxRDEgLyogUmFuZ2VzICovLAogCQkJCTg1MDY1NzA0MEFBQjQ3NkMwMDJEMTVDMCAv
KiBTdHlsZVNoZWV0cyAqLywKIAkJCQk4NUEwRjk4RTBBQzcxNkY0MDAxNjFGREMgLyogU1ZHICov
LApAQCAtMTg1MTMsNiArMTg1MzYsOCBAQAogCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhE
NUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCisJCQkJQzZGNjcxNUExM0UzNUVCMjAw
REUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJQzZGNjcxNUIxM0UzNUVC
MjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCTkzQjcwRDRGMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcw
RDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKIAkJ
CQkxNENEOEQ4MTEwNkI1MjkwMDBBNDZEMjMgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICov
LApAQCAtMTkxNjgsNiArMTkxOTMsMjIgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJz
ID0gMDsKIAkJfTsKKwkJQzY3MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDNjcxREEzODEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8sCisJCQkJQzY3MURBMzkxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
TXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDNjcxREE1RDEz
RTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5OTE0LDYg
KzE5OTU1LDE0IEBACiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZl
bnQuY3BwICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50
LmggKi8sCiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11dGF0aW9uRXZlbnQuaWRs
ICovLAorCQkJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmgg
Ki8sCisJCQkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaWRs
ICovLAorCQkJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAg
Ki8sCisJCQkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8s
CisJCQkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywK
KwkJCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovLAor
CQkJCUM2RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovLAorCQkJ
CUM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLywKIAkJ
CQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlB
ODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5
RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0xOTk3OCw2ICsy
MDAyNyw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVu
dFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZDNzAwRjk5MkUwIC8qIFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIxM0UzNUU1RTAwREUzQjlD
IC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERD
RjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQk5QkQwQkY5MjEy
QTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOUJEMEJGOTEx
MkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywKQEAgLTIyMDMyLDYgKzIy
MDgyLDggQEAKIAkJCQk4OTg3ODVCOTEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEyQjQ4MDA5NjMzQTUgLyogSlNN
b3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1RDEzRTM1RUIy
MDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjcx
REEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDU3LDggQEAK
IAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRh
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEw
MDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3
MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYxODEsNiArMjYyMzUsMTAgQEAKIAkJCQk5NzdFMkUwRTEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUz
NzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTlERTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRh
cmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyog
SlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2NzFEQTNFMTNFMzcx
NDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmUyYTY1MDczODJiZWM0NzRkNDYyYzgzYzEyNTUyMzhlMTM4N2QyYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5j
cHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU011dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmgi
CisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6SlNNdXRh
dGlvbkxpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fd3JhcHBlcigqaXNvbGF0ZWRXb3Js
ZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVk
V29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNGdW5jdGlvbi5zZXRNYXlC
ZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7
CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKworfQorCitKU011dGF0aW9u
TGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIoKQoreworfQorCit2b2lkIEpTTXV0YXRpb25M
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25z
KQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0
YXRpb25zOworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VSVCghbXV0YXRpb25zLT5p
c0VtcHR5KCkpOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24g
PSBtX2pzRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2lzb2xh
dGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihn
bG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaGUgd2luZG93IG11
c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgorICAgIC8vIEZJWE1FOiBBIGJldHRlciBmaXgg
Zm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01XaW5kb3c6OmZyYW1lKCkgdG8gbm90IHJldHVy
biBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cgdXNlZCB0byBiZSBpbi4KKyAgICBpZiAoZnJh
bWUtPmRvbVdpbmRvdygpICE9IHdpbmRvdy0+aW1wbCgpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KKyAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3Jp
cHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQtPmlz
UGF1c2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9
IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsK
KworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUo
KTsKKyAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7
CisgICAgfQorCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBS
ZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKworICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBtdXRhdGlvbkxpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG11dGF0aW9uTGlzdC5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkpKTsKKwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBhcmdzLmFwcGVuZChj
b25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9uTGlzdCkpOworCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
OworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5h
bWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRhLnRp
bWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQor
ICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQgdGhl
IHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1lbnQg
b3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoMCktPnRhcmdldCgpKTsKKyAgICAgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGds
b2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOworCisgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Cisg
ICAgfQorfQorCitib29sIEpTTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBNdXRh
dGlvbkxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBjb25zdCBKU011dGF0aW9uTGlzdGVuZXIq
IGpzTXV0YXRpb25MaXN0ZW5lciA9IHN0YXRpY19jYXN0PGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5l
cio+KCZsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9PSBqc011dGF0aW9uTGlz
dGVuZXItPm1fanNGdW5jdGlvbjsKK30KKwordW5zaWduZWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpo
YXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8SlNDOjpKU09iamVjdCo+OjpIYXNoOjpo
YXNoKG1fanNGdW5jdGlvbi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTNmYTE2YzlmMzc3NWZjMzJhOTlhNmVlN2M5MmQ3NThiN2IyZGUwZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKyNpZm5kZWYgSlNNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgSlNNdXRhdGlvbkxpc3Rl
bmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlIDxoZWFwL1dl
YWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9X
cml0ZUJhcnJpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XcmFwcGVy
V29ybGQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNNdXRhdGlvbkxpc3Rl
bmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTTXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVy
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTXV0YXRpb25MaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
fkpTTXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgp
OworCisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4g
bV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CisKKyAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBjb25z
dCB7IG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7IH0KKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCitwcml2YXRlOgorICAgIEpTTXV0
YXRpb25MaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlNDOjpKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKworICAgIG11dGFibGUgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9uOworICAgIG11dGFibGUg
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKworICAgIFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEpTTXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc0ZjBkMDg3ZDdiMWI0
ZjgxYTAxN2UzN2E0YWUxYjhlMjk5M2QzYmQuLjU0N2U0MTUwM2UwZDAxYzliOWI5NThkNTRjMzI5
NmZjM2VlNmM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODcsNiArMTg3LDUwIEBAIEVORAogICAgIHJldHVybiBA
R2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKIH0KIAorc3ViIEdlbmVyYXRlTXV0YXRpb25MaXN0
ZW5lckNhbGwKK3sKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJHBhc3NS
ZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7
CisgICAgbXkgJHR5cGVNYXNrSGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAi
LCB0eXBlTWFzayIgOiAiIjsKKyAgICBteSAkcHJlZml4ZWRGdW5jdGlvbk5hbWUgPSAid2Via2l0
IiAuIHVjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJNdXRhdGlv
blJlY29yZC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkpTTXV0YXRpb25MaXN0ZW5lci5o
In0gPSAxOworCisgICAgbXkgQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwgPSAoKTsKKwor
ICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAgICAgIHB1c2goQEdlbmVyYXRl
TXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBKU1ZhbHVlIGpzVHlwZXMgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWpzVHlwZXMuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTT2JqZWN0KiBqc1R5
cGVzT2JqZWN0ID0gYXNPYmplY3QoanNUeXBlcyk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7
CisgICAgSlNWYWx1ZSBqc0NoaWxkbGlzdCA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJjaGlsZGxpc3QiKSk7CisgICAgaWYgKGpzQ2hpbGRsaXN0LmlzQm9vbGVh
bigpICYmIGpzQ2hpbGRsaXN0LmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0
YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgSlNWYWx1ZSBqc0F0dHJpYnV0ZSA9IGpz
VHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhdHRyaWJ1dGUiKSk7Cisg
ICAgaWYgKGpzQXR0cmlidXRlLmlzQm9vbGVhbigpICYmIGpzQXR0cmlidXRlLmdldEJvb2xlYW4o
KSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7Cisg
ICAgSlNWYWx1ZSBqc0NoYXJhY3RlcmRhdGEgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICBpZiAoanNDaGFyYWN0ZXJkYXRh
LmlzQm9vbGVhbigpICYmIGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpCisgICAgICAgIHR5
cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzsKK0VORAorICAgIH0K
KworICAgIHB1c2goQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCisgICAgaW1wLT4ke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0aW9uTGlzdGVuZXIoSlNN
dXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBj
dXJyZW50V29ybGQoZXhlYykpJHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0eXBlTWFza0hhbmRsaW5n
fSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK0VORAorICAg
IHJldHVybiBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbDsKK30KKworCiAjIFBhcmFtczog
J2lkbERvY3VtZW50JyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZU1vZHVsZQogewpAQCAtMjAxNSw2ICsy
MDU5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUs
ICJhZGQiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUsICJy
ZW1vdmUiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJhZGQi
KSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
ZXEgIndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJyZW1vdmUi
KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGFy
Z3NJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUluZGV4ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTExZmIwOTRiZTUzMjUyMi4uYTMzYzZiYmNk
NjdjZGQwM2Y0MjVjZmE3NTMzYzlhY2FlZTRiZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ3OSw2ICs0NzksMTIg
QEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmll
bGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsKICAgICB9CiAKKyAgICBpZiAoJG5hbWUg
ZXEgIkRvY3VtZW50IiB8fAorICAgICAgICAkbmFtZSBlcSAiRG9jdW1lbnRGcmFnbWVudCIgfHwK
KyAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkVsZW1lbnQiKSkgeworICAgICAgICBwdXNo
KEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7Cisg
ICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0K
QEAgLTExMzQsNiArMTE0MCw1MyBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rp
b25OYW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQ
dHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7Cisg
ICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikg
PyAiY3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0
aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBs
SW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhN
dXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRh
dGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZl
bnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7
bG9va3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9
IDA7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09i
amVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlz
dCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3Qt
PkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6
OkNoaWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRl
ID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlm
ICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkK
KyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFy
YWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQor
ICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFn
OworICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CisgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVm
aXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFu
ZGxpbmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6
bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7
CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyMzksNiArMTI5MiwxNCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdl
bmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
JGltcGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0z
MTU1LDcgKzMyMTYsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScg
PT4gMSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAn
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
JyA9PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNTUsNiAr
MzMxNywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0g
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAor
ICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNs
dWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1
ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVy
Kj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAg
ICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFl
N2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAs
NiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNp
bmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0
ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6
ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJv
dG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+
R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRv
dyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFu
YWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNp
ZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4
ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVu
dFRhcmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwog
ICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250
ZXh0OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVu
dFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdl
dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1
dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAv
LyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5
MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDli
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVj
dFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVy
KSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4
dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0
ZW5lcikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0
ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFt
X2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0
KCk7CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0
ZW5lcik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRl
cik7CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1f
bGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAg
ICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8g
RG9uJ3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0
YW5jZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11
dGF0aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29u
dGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsK
KyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11
dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+
c2l6ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhp
KSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJv
b2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVu
ZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVk
IFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4
TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJf
aAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djgu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDog
cHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29u
dGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhN
dXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29y
bGRDb250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNw
b3NlTGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1f
bGlzdGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3
MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gK
KworI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlv
bkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3Ig
VjhNdXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9m
IHY4OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9G
aW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAg
bGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpt
dXRhdGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRp
b25MaXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlz
dGVuZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRh
dGlvbkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3Rl
bmVyKj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxp
bmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAg
IEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlv
bkxpc3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFw
cGVyKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3Js
ZENvbnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisg
ICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0
aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKwor
ICAgIHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEz
ZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhi
MzUyMjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApA
QCAtNjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEg
dmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9p
ZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJU
KG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4
KTsKICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4
IDExZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJj
NzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAg
ICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJh
Y2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBp
ZiAoY2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+
OjpDYXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFj
aykpOwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2
ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFj
NjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZk
NTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3
cm9uZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4
OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJD
aGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJl
Y29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRo
aXMpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVk
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uMmIyNjkz
YjdlZjFmZmVhZmIwYTljNGRjOGY2ODBhZjUzMmM0NDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVC
dXR0b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJl
Y29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMTA5NSw2ICsxMDk5LDIwIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBpbnNlcnRlZE5v
ZGVzOworICAgICAgICBpbnNlcnRlZE5vZGVzLmFwcGVuZChjKTsKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSAwOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjLT5wcmV2aW91c1NpYmxpbmcoKTsg
bjsgbiA9IG4tPnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMSAvKmFkZGVkQ291bnQqLywgMCAv
KnJlbW92ZWROb2RlcyovLCBpbmRleCk7CisgICAgICAgIGlmIChjLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxlbWVudChjLT5wYXJlbnROb2RlKCkpLT5l
bnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBlbHNlIGlmIChjLT5wYXJlbnROb2Rl
KCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihjLT5wYXJlbnROb2RlKCkpLT5lbnF1
ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBjLT5vd25lckRvY3VtZW50KCktPmVucXVl
dWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAgICAgaWYgKGMtPnBhcmVudE5vZGUoKSAm
JiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFSU5TRVJURURfTElT
VEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5v
ZGUoKSkpOwogCkBAIC0xMTE2LDYgKzExMzQsMjAgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGls
ZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAg
ICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBy
ZW1vdmVkTm9kZXM7CisgICAgICAgIHJlbW92ZWROb2Rlcy5hcHBlbmQoYyk7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gYy0+cHJldmlvdXNTaWJs
aW5nKCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChjLT5wYXJlbnROb2RlKCksIDAgLyphZGRlZENvdW50
Ki8sIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZW1vdmVkTm9kZXMpLCBpbmRleCk7CisgICAgICAg
IGlmIChjLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxl
bWVudChjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAg
ICBlbHNlIGlmIChjLT5wYXJlbnROb2RlKCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQq
PihjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBj
LT5vd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAg
ICAgLy8gZGlzcGF0Y2ggcHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCiAgICAgaWYgKGMtPnBh
cmVudE5vZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RF
UkVNT1ZFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0cnVlLCBj
LT5wYXJlbnROb2RlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkMjg4NmU5ZWVh
YzczZDJhYzI0YmIzY2Y4MGFhNGI1ZmNhMWUxOTMuLmVjMzVhNTIzNWM0ZDYxZDYwY2U4YjcwNjk4
OTY4MWNmNThhZDg3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0LDYgKzEwNCw3
IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
TmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNl
ci5oIgpAQCAtNTA5MSw0ICs1MDkyLDExIEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9h
ZGVyKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGVyOwogfQogCitNdXRhdGlvblRhcmdldERhdGEq
IERvY3VtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIGlmICghbV9tdXRh
dGlvblRhcmdldERhdGEpCisgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIo
bmV3IE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRh
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IGUwMGI4Njk1ZGExMmFiZDQ0ZTkxYWE2ZGU0OTVhN2I2OGEyODgxNWIuLmU1YjA3N2UwZGU5
OTFjMjgzZmVhNDUxODE5N2IyNTdjYTRhNzA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0xMDMsNiArMTA0LDcg
QEAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBj
bGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHM7CitjbGFzcyBNdXRhdGlvblRhcmdldERhdGE7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3Mg
Tm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBlbnVtIFBhZ2Vz
aG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAKIGVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgeyBS
ZWNhbGNTdHlsZUltbWVkaWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlIH07CiAKLWNsYXNzIERvY3Vt
ZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewor
Y2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQog
ICAgIHsKQEAgLTExMDIsNiArMTEwNCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY2xlYXJY
TUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVu
c3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJ
Z25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIApAQCAtMTQxMCw2ICsxNDE1
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXRE
YXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhl
cmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2Ug
cmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA1
YzY4MzhlYzVmNWYwNDM1MTE4YTg1ZjZkMTRmMmVhMzA5MDFkMDM2Li4xN2Q5NDMzMGMzZWQ0ZDdl
MDM1NGIwOTkwOWU2ODdmMGVhMTQ2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0
NSw2ICsyNDUsMTEgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQg
d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBp
biBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlz
dGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKKworI2lmICFkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAg
ICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCmluZGV4IDM4ODJjNGRmZjA4ZTZkOGU5NjI1Yzc3ODI1Njg4NDE2MTlkODk0NGYuLmZk
ZWFkOWIwMTk0M2ZjMTZhYWU5NmIzMWJkOWM5NDkzNWJiOTliNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTg1LDQgKzg2LDExIEBAIGJv
b2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGCiAgICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbik7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnRGcmFnbWVudDo6
ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXRE
YXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlv
blRhcmdldERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3ODRh
MTIxYzlhM2JkMDhjODA4YzgyMzYyYTA0ZmYzMC4uNmVmZDc3MDM0YTU0NjZiODNiYzlkNGQwYjlj
YTAyNGYyMDllOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgTXV0YXRp
b25UYXJnZXREYXRhOworCitjbGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDEwICs0
NiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOwogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9u
VGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdl
dERhdGEuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0
YXRpb25UYXJnZXREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2Rl
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29u
c3Q7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0
YTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmlkbAppbmRleCA4ODJiNjJkYjM5ZWI3ZjJlMDUwNDc4MjA0OTJiN2U5MzYxYThlZGVkLi5iNzVi
ODVmYmQ2ZDI1MjBmZDRjYjZmMGM3YTY4ZjBmMWJjNzg2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yNSw2ICsyNSwxMSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZUxpc3QgcXVlcnlT
ZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAg
ICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5l
ciBsaXN0ZW5lcik7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRkZGNiYi4uMjY2NjE4OTUyN2Ri
NDhiNTRhYmJhMTJmNjE1Y2FmYmRmY2JjYTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKQEAg
LTY5OSw2ICs3MDAsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5j
aHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiAr
NzM3LDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9uaXpp
bmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIFJlZlB0cjxN
dXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRl
Q2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMjA1
Myw0ICsyMDYyLDE0IEBAIFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uTGlzdD4gRWxlbWVudDo6
d2Via2l0R2V0QW5pbWF0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIGFuaW1Db250cm9sbGVyLT5h
bmltYXRpb25zRm9yUmVuZGVyZXIocmVuZGVyZXIoKSk7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0
YSogRWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gaGFzUmFyZURh
dGEoKSA/IHJhcmVEYXRhKCktPm11dGF0aW9uVGFyZ2V0RGF0YSgpIDogMDsKK30KKworTXV0YXRp
b25UYXJnZXREYXRhKiBFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAg
IHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZTE1ZjI3YTli
NWRlZDAxZWFkNTNlOTA0OWYxYjg2ZTQzNTYyOTRkYS4uOGI4NjYwMWQ4OTgwOTRjZmFmYTNiNGVh
YmI0MzJjMTA4NTIyNDJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJN
dXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCiAKQEAgLTQ5LDcgKzUwLDcgQEAgZW51bSBTcGVsbGNoZWNrQXR0cmlidXRl
U3RhdGUgewogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0CiB9OwogCi1jbGFzcyBFbGVt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250
YWluZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5FbGVtZW50KCk7CkBAIC0zODQsNiArMzg1LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKIAorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdl
dERhdGEoKTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCk7CisKICAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgRWxlbWVudDo6YXR0
cmlidXRlQ2hhbmdlZCgpIGNhbGxzIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucy4KICAgICAv
LyBUaGV5IGFyZSBzZXBhcmF0ZWQgdG8gYWxsb3cgYSBkaWZmZXJlbnQgZmxvdyBvZiBjb250cm9s
IGluIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoKS4KICAgICB2b2lkIHJlY2FsY1N0
eWxlSWZOZWVkZWRBZnRlckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwKaW5kZXggOWViYjAyYTU5MmY3MTgzMjZjMTZlMDJmMTk4MWI0MWQ5Yzg4OTBlYy4u
NzI3NzE4YTZlNTY2MzNkYjczM2Y4YmQ3MGViZjQxOWZmYTliOTZlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbApAQCAtMTQwLDYgKzE0MCwxMSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAogI2lm
ICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MK
KyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVu
ZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBlcyk7CisgICAgICAgIHZvaWQgd2Via2l0UmVt
b3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRp
ZgorCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0
cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmJsdXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggODMwMTUwNWMzYjUyZmNjMzFjYWRkY2MzZjE2Nzg0ODRjNmFl
YmUyYy4uMzcyM2JjNjlmZTNkYjA3YTQ4MWExYzllZTYxN2EyNTljNTc5YTdkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNs
YXNzTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTm9k
ZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0zOSw2ICs0MCwxNSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogCisgICAgTXV0YXRp
b25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9uVGFy
Z2V0RGF0YS5nZXQoKTsgfQorICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCkKKyAgICB7CisgICAgICAgIGlmICghbV9tdXRhdGlvblRhcmdldERhdGEpCisg
ICAgICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRh
cmdldERhdGEpOworICAgICAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cisg
ICAgfQorCisKICAgICB1c2luZyBOb2RlUmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNlVXBk
YXRlU29vbkFmdGVyQXR0YWNoOwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0TmVlZHNGb2N1
c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAKQEAgLTU1LDYgKzY1LDggQEAgcHVi
bGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudDsKICNlbmRpZgorcHJpdmF0ZToKKyAgICBPd25QdHI8TXV0YXRpb25UYXJn
ZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIGlubGluZSBJbnRTaXplIGRlZmF1
bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhZDhkODg0MTA0NTFkMjg2MzU3ZGVlMGE1NWQxMzNkNDY2OTZhMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBNdXRh
dGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVjb3Jk
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9uUmVjb3JkVmVjdG9yOworCitjbGFzcyBNdXRhdGlv
bkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlv
blJlY29yZFZlY3Rvcj4pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
dXRhdGlvbkxpc3RlbmVyJikgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpID0gMDsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25MaXN0ZW5lci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWFkMDFmOGQzYjY2ZmYxOWQzZDM4MWIyNmQ3NGZlY2I3ZGM2ZjdhYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIFB1
cmVJbnRlcmZhY2UsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gTXV0YXRpb25MaXN0
ZW5lciB7CisgICAgICAgIC8vIHZvaWQgaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRbXSBt
dXRhdGlvbnMpCisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gQXJyYXkgbXV0YXRpb25zKTsK
KyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3Jk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2FhZGFhMjI3NTBlOWUyNTgwOGRmMzg2YmExMmJjNTFmNTNjYjQwNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsK
KworY2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEVtcHR5Tm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRl
bSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdp
dGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0
ZToKKyAgICBFbXB0eU5vZGVMaXN0KCkgeyB9Cit9OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQ
dHI8Tm9kZT4gdGFyZ2V0LCB1bnNpZ25lZCBhZGRlZENvdW50LCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiByZW1vdmVkLCB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCkKK3sKKyAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENoaWxkbGlz
dEZsYWcsIHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2FkZGVkQ291bnQgPSBhZGRlZENvdW50
OworICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRh
dGlvbi0+bV9yZW1vdmVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9
IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdEluZGV4
ID0gY2hpbGRsaXN0SW5kZXg7CisgICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKwor
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0
ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
ck5hbWUpCit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVm
KG5ldyBNdXRhdGlvblJlY29yZChBdHRyaWJ1dGVGbGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlv
bi0+bV9hdHRyTmFtZSA9IGF0dHJOYW1lOworICAgIHJldHVybiBtdXRhdGlvbi5yZWxlYXNlKCk7
Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVU
ZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGFyYWN0ZXJkYXRhRmxhZywgdGFyZ2V0KSk7Cit9
CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVGbGFnVG9OYW1lKE11dGF0aW9uUmVj
b3JkOjpNdXRhdGlvblR5cGVGbGFnIGZsYWcpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGNoaWxkbGlzdCwgKCJjaGlsZGxpc3QiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGF0dHJpYnV0ZSwgKCJhdHRyaWJ1dGUiKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoYXJhY3RlcmRhdGEsICgiY2hhcmFjdGVy
ZGF0YSIpKTsKKworICAgIHN3aXRjaCAoZmxhZykgeworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6
OkNoaWxkbGlzdEZsYWc6CisgICAgICAgIHJldHVybiBjaGlsZGxpc3Q7CisgICAgY2FzZSBNdXRh
dGlvblJlY29yZDo6QXR0cmlidXRlRmxhZzoKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTsKKyAg
ICBjYXNlIE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzoKKyAgICAgICAgcmV0dXJu
IGNoYXJhY3RlcmRhdGE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICB9Cit9CisKK011dGF0aW9uUmVjb3JkOjpNdXRh
dGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFnIHR5cGVGbGFnLCBQYXNzUmVmUHRyPE5vZGU+IHRh
cmdldCkKKyAgICA6IG1fdHlwZSh0eXBlRmxhZ1RvTmFtZSh0eXBlRmxhZykpCisgICAgLCBtX3R5
cGVGbGFnKHR5cGVGbGFnKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgICwgbV9pbkRvY3Vt
ZW50KG1fdGFyZ2V0LT5pbkRvY3VtZW50KCkpCit7Cit9CisKK011dGF0aW9uUmVjb3JkOjp+TXV0
YXRpb25SZWNvcmQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ODU1NmM1YzZhYTMwYjJhZmVjYTRmMWFh
YThlZjY3ZDkwMzBjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25SZWNvcmQuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblJlY29yZF9oCisj
ZGVmaW5lIE11dGF0aW9uUmVjb3JkX2gKKworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJO
b2RlTGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTXV0YXRpb25SZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblJl
Y29yZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBj
cmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCB1bnNpZ25lZCBh
ZGRlZENvdW50LCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVkLCB1bnNpZ25lZCBjaGlsZGxp
c3RJbmRleCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0ck5hbWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVh
dGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgdmlydHVh
bCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIE5vZGUqIHRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0Lmdl
dCgpOyB9CisgICAgYm9vbCBpbkRvY3VtZW50KCkgeyByZXR1cm4gbV9pbkRvY3VtZW50OyB9CisK
KyAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAgIHVuc2lnbmVkIGFkZGVkQ291bnQo
KSB7IHJldHVybiBtX2FkZGVkQ291bnQ7IH0KKyAgICBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkg
eyByZXR1cm4gbV9yZW1vdmVkTm9kZXMuZ2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjaGlsZGxpc3RJ
bmRleCgpIHsgcmV0dXJuIG1fY2hpbGRsaXN0SW5kZXg7IH0KKworICAgIC8vIEZvciB0eXBlID09
ICdhdHRyaWJ1dGUnCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSgpIHsgcmV0dXJu
IG1fYXR0ck5hbWU7IH0KKworICAgIC8vIE5vdCBwYXJ0IG9mIHRoZSBJREwsIGJ1dCB1c2VkIGlu
dGVybmFsbHkgZm9yIGZhc3QgdHlwZS1iYXNlZCBvcGVyYXRpb25zLgorICAgIGVudW0gTXV0YXRp
b25UeXBlRmxhZyB7CisgICAgICAgIENoaWxkbGlzdEZsYWcgPSAoMSA8PCAwKSwKKyAgICAgICAg
QXR0cmlidXRlRmxhZyA9ICgxIDw8IDEpLAorICAgICAgICBDaGFyYWN0ZXJkYXRhRmxhZyA9ICgx
IDw8IDIpCisgICAgfTsKKyAgICBNdXRhdGlvblR5cGVGbGFnIHR5cGVGbGFnKCkgeyByZXR1cm4g
bV90eXBlRmxhZzsgfQorCitwcml2YXRlOgorICAgIE11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlw
ZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKworICAgIEF0b21pY1N0cmluZyBtX3R5
cGU7CisgICAgTXV0YXRpb25UeXBlRmxhZyBtX3R5cGVGbGFnOworICAgIFJlZlB0cjxOb2RlPiBt
X3RhcmdldDsKKyAgICBib29sIG1faW5Eb2N1bWVudDsKKyAgICB1bnNpZ25lZCBtX2FkZGVkQ291
bnQ7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBtX3JlbW92ZWROb2RlczsKKyAgICB1bnNpZ25lZCBt
X2NoaWxkbGlzdEluZGV4OworICAgIEF0b21pY1N0cmluZyBtX2F0dHJOYW1lOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNv
cmQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg1ZGQ5NGVkODdhMWYxOWM3MTM3M2EwMWRjN2JhYWNiYjg5YmY3
NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQu
aWRsCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIE11dGF0aW9u
UmVjb3JkIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIHR5cGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICB0YXJnZXQ7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICBpbkRvY3VtZW50OworCisgICAg
ICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxpc3QnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nICBhZGRlZENvdW50OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Tm9kZUxpc3QgICAgICAgcmVtb3ZlZE5vZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyAgY2hpbGRsaXN0SW5kZXg7CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0g
J2F0dHJpYnV0ZScKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0
dHJOYW1lOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25UYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYmJhNzJkMmUzZmJmN2M4ZDUxYzUwNmM3OTE5MTgwNTRlMDgyOGZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcApAQCAtMCww
ICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5o
IgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgi
CisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERh
dGEuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0IHsKKyAgICBN
dXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1bWVudD4gZCwgUGFzc1JlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3VtZW50KGQpCisgICAgICAgICwgbGlzdGVuZXIo
bykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudDsKKyAgICBS
ZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7Cit9OworCitzdHJ1Y3QgTXV0YXRpb25D
b250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTXV0YXRpb25D
b250ZXh0KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhh
c2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8RG9jdW1lbnQqPjo6aGFzaChrZXktPmRv
Y3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxpc3RlbmVyLT5oYXNoKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11dGF0aW9uQ29udGV4dCogYSwgY29uc3QgTXV0
YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEtPmRvY3VtZW50ID09IGIt
PmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAqYi0+bGlzdGVuZXI7CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsK
K307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlvbkNvbnRleHQqLCBNdXRhdGlvblJlY29yZFZl
Y3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+IENvbnRleHRWZWN0b3JNYXA7CisKK30gLy8g
bmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVjdG9yTWFwJiBjb250ZXh0VmVjdG9yTWFwKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRleHRWZWN0b3JNYXAsIG0sICgpKTsKKyAg
ICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVlPE93blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4m
IGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVx
dWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwgYWN0aXZlQ29udGV4dHMsICgpKTsKKyAgICBy
ZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3ZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKQorewor
ICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmlzRW1wdHkoKSkgeworICAgICAg
ICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWN0aXZlTXV0YXRpb25Db250ZXh0
cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHYg
PSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCkudGFrZShjb250ZXh0LmdldCgpKSk7CisgICAg
ICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVFdmVudChjb250ZXh0LT5kb2N1bWVudC5nZXQo
KSwgdi5yZWxlYXNlKCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZW5zdXJlTXV0YXRpb25R
dWV1ZWQoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0
cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVj
b3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0
KCkpOworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50KCkpOworICAgIE93
blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihuZXcgTXV0YXRpb25Db250
ZXh0KG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1lbnQoKSwgcHJwTGlzdGVuZXIpKTsKKworICAg
IHBhaXI8Q29udGV4dFZlY3Rvck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGNvbnRleHRW
ZWN0b3JNYXAoKS5hZGQoY29udGV4dC5nZXQoKSwgMCk7CisgICAgaWYgKHJlc3VsdC5zZWNvbmQp
IHsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgTXV0YXRpb25SZWNvcmRWZWN0
b3I7CisgICAgICAgIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKS5hcHBlbmQoY29udGV4dC5yZWxl
YXNlKCkpOworICAgIH0KKyAgICBNdXRhdGlvblJlY29yZFZlY3RvciogdiA9IHJlc3VsdC5maXJz
dC0+c2Vjb25kOworICAgIGlmICh2LT5pc0VtcHR5KCkgfHwgdi0+bGFzdCgpICE9IG11dGF0aW9u
KQorICAgICAgICB2LT5hcHBlbmQobXV0YXRpb24pOworfQorCitNdXRhdGlvblRhcmdldDo6fk11
dGF0aW9uVGFyZ2V0KCkKK3sKK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6d2Via2l0QWRkTXV0
YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBycExpc3RlbmVyLCB1
aW50OF90IHR5cGVNYXNrKQoreworICAgIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHJlZ2lz
dGVyZWRMaXN0ZW5lcihwcnBMaXN0ZW5lciwgdHlwZU1hc2spOworICAgIE11dGF0aW9uVGFyZ2V0
RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHNpemVfdCBpbmRleCA9
IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAgaWYgKGluZGV4ID09
IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0ZW5lcnMuYXBwZW5kKHJlZ2lzdGVyZWRMaXN0ZW5l
cik7CisgICAgZWxzZQorICAgICAgICBkLT5saXN0ZW5lcnNbaW5kZXhdLnR5cGVzIHw9IHR5cGVN
YXNrOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3Rl
bmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0
YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7
CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0
YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNT
RVJUKHBycE11dGF0aW9uKTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJw
TXV0YXRpb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKGQtPmxpc3RlbmVyc1tpXS50eXBlcyAmIG11dGF0aW9uLT50
eXBlRmxhZygpKQorICAgICAgICAgICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJz
W2ldLmxpc3RlbmVyLCBtdXRhdGlvbik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMWM0ZGE0NDRi
NzFmZDhkNzUyYWJkNTMxOGEzNTYxMTQ2NGMzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRh
dGlvblRhcmdldF9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0
ZW5lcjsKK2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOwor
CitjbGFzcyBNdXRhdGlvblRhcmdldCB7CitwdWJsaWM6CisgICAgdm9pZCB3ZWJraXRBZGRNdXRh
dGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4sIHVpbnQ4X3QgdHlwZU1h
c2spOworICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3Rl
bmVyKik7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NdXRhdGlvblRhcmdldCgpOworCisg
ICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsK
KyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRh
KCkgPSAwOworfTsKKwordm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpOworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRhdGlvblRhcmdldF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25UYXJnZXREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBiZTEwYzMwZDJlMGEzYjk0NDkwMGRi
NWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvblRhcmdldERhdGEuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdl
dERhdGFfaAorI2RlZmluZSBNdXRhdGlvblRhcmdldERhdGFfaAorCisjaW5jbHVkZSAiUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVm
IFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcj4gTXV0YXRpb25MaXN0ZW5lclZlY3Rv
cjsKK3N0cnVjdCBNdXRhdGlvblRhcmdldERhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgTXV0YXRpb25UYXJnZXREYXRhKCkgeyB9CisgICAgfk11dGF0aW9uVGFyZ2V0RGF0
YSgpIHsgfQorCisgICAgTXV0YXRpb25MaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRhdGlvblRhcmdldERhdGFfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVy
LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAor
I2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlv
bkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRh
dGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3QgdHlwZU1hc2spCisgICAgICAgIDogbGlzdGVu
ZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFzaykgeyB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAqb3RoZXIubGlzdGVuZXI7CisgICAgfQorCisg
ICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyOworICAgIHVpbnQ4X3QgdHlwZXM7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDZjYTVi
MzdkMjFiOTYyYTFkYjJiMGEwNmU2M2U5MDZiYjY3ZDNmMmQuLmZiN2ViMGNkOGIxZjg1YTE5MmE5
MGQ3MWUxOTA2ZTQ2ZDcyZTdkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcy
LDYgKzcyLDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlh
UXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xODgzLDQgKzE4ODQsOSBAQCBT
dG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJraXRTdG9yYWdlSW5mbygpIGNvbnN0CiB9CiAjZW5k
aWYKIAordm9pZCBET01XaW5kb3c6OnNwaW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAgICA6OldlYkNv
cmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNlNjBk
YzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2NDk4ZmNhZGYyM2VhMjdiNzczYjc0N2E0N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDE0LDYgKzQxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBlcmZvcm1hbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAor
ICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBET01XaW5kb3coRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDYy
ZjFjMzAzNjZhMWZiN2UxNDc1NWVlMTU1NGE4YTNjMGZlYzExOTYuLjYyMjcxNTcwMjM5M2E4OTcw
NDNlMWEzYzM4NDIyZGY0ZTI4ZTNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAg
LTgwMyw2ICs4MDMsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIC8vIHdpbmRvdy50b1N0
cmluZygpIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgaW4gVjgKICAgICAgICAgW1Y4RG9Ob3RD
aGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b20sIERvbnRFbnVt
XSBET01TdHJpbmcgdG9TdHJpbmcoKTsKICNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisK
KyAgICAgICAgLy8gRklYTUUoYWRhbWspOiBETyBOT1QgU1VCTUlUCisgICAgICAgIC8vIFRoaXMg
bmVlZHMgdG8gYmUgZXhwb3NlZCB0byBKUyB1bnRpbCBlbWJlZGRlcnMgYXJlIG1vZGlmaWVkIHRv
IGNhbGwgc3Bpbk11dGF0aW9uUXVldWUoKQorICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIGVhY2gg
dGFzay4KKyAgICAgICAgdm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105559</attachid>
            <date>2011-08-29 18:42:01 -0700</date>
            <delta_ts>2011-08-30 13:33:09 -0700</delta_ts>
            <desc>MutationRecord: memory optimization</desc>
            <filename>bug-66079-20110829184200.patch</filename>
            <type>text/plain</type>
            <size>111459</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJjNmQxYjc5Njk2Yzc5NGEzNWJiLi45MmUzNmJm
Nzg3ZmFlOWVmOTMzZWViYmFkZWQ3NzRkNTRjMzExYTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDgtMjUgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFy
Z2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlz
dGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFuIHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5l
IHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29tcGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZmU5
MTIyZjI0MGYwNDM3NTJmYzU3ZGMxNWVmODhkMDYwMDI2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNSBAQAorVGVzdCB0aGF0IE11dGF0aW9uTGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9uc1swXS5hZGRl
ZENvdW50IGlzIGFkZGVkQ291bnRzWzBdCitQQVNTIG11dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRl
eCBpcyBjaGlsZGxpc3RJbmRpY2VzWzBdCitQQVNTIG11dGF0aW9uc1swXS5pbkRvY3VtZW50IGlz
IGluRG9jdW1lbnRGbGFnc1swXQorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWRDb3VudCBpcyBhZGRl
ZENvdW50c1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0
SW5kaWNlc1sxXQorUEFTUyBtdXRhdGlvbnNbMV0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50Rmxh
Z3NbMV0KK1BBU1MgbXV0YXRpb25zWzJdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMl0KK1BB
U1MgbXV0YXRpb25zWzJdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzJdCitQQVNTIGxp
c3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRk
ZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVk
Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdElu
ZGljZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdz
WzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJO
YW1lIGlzICJkYXRhLWZvbyIKK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1
bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25z
WzBdLnRhcmdldCBpcyB0ZXh0Tm9kZXNbMF0KK1BBU1MgbXV0YXRpb25zWzBdLmluRG9jdW1lbnQg
aXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mg
bXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2FsbGVk
IGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjRjZjE5NjBmNTBhNjViYzU0NTQ4
MjA4ZDcyZTg3OTUzZDNiNzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDE0NCBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgPGRpdiBpZD0ic2FuZGJveCIgc3R5
bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+CisgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9u
KCdUZXN0IHRoYXQgTXV0YXRpb25MaXN0ZW5lcnMgd29yayBhcyBleHBlY3RlZC4nKTsKKyAgICAg
ICAgdmFyIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHZhciBsaXN0ZW5lckNhbGxlZCA9IGZh
bHNlOworICAgICAgICB2YXIgYWRkZWRDb3VudHM7CisgICAgICAgIHZhciByZW1vdmVkTm9kZXM7
CisgICAgICAgIHZhciBjaGlsZGxpc3RJbmRpY2VzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRy
czsKKyAgICAgICAgdmFyIHRleHROb2RlczsKKyAgICAgICAgdmFyIGRvY3VtZW50TGlzdGVuZXJP
cHRpb25zOworICAgICAgICB2YXIgaW5Eb2N1bWVudEZsYWdzOworCisgICAgICAgIGZ1bmN0aW9u
IGxpc3RlbmVyKG0pIHsKKyAgICAgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAg
ICAgIGxpc3RlbmVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgICAgICB2YXIgaW5zZXJ0ZWRJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgcmVtb3Zl
ZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBpbmRleEluZGV4ID0gMDsKKyAgICAgICAgICAg
IHZhciBhdHRySW5kZXggPSAwOworICAgICAgICAgICAgdmFyIHRleHROb2RlSW5kZXggPSAwOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1baV0udHlwZSA9PSAnY2hpbGRsaXN0JykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoYWRkZWRDb3VudHMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLmFkZGVkQ291bnQnLCAnYWRkZWRDb3VudHNbJyAr
IChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBtW2ldLnJlbW92ZWROb2Rlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1snICsgaSArICddLnJlbW92ZWROb2Rlc1sn
ICsgaiArICddJywgJ3JlbW92ZWROb2Rlc1snICsgKHJlbW92ZWRJbmRleCsrKSArICddJyk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkbGlzdElu
ZGljZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1snICsgaSArICddLmNoaWxkbGlzdEluZGV4JywgJ2NoaWxkbGlzdEluZGljZXNbJyArIChpbmRl
eEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1baV0udHlwZSA9
PSAnYXR0cmlidXRlJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ211dGF0aW9uc1snICsgaSArICddLmF0dHJOYW1lJywgbW9kaWZpZWRBdHRyc1thdHRySW5k
ZXgrK10pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdjaGFyYWN0
ZXJkYXRhJykgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBp
ICsgJ10udGFyZ2V0JywgJ3RleHROb2Rlc1snICsgKHRleHROb2RlSW5kZXgrKykgKyAnXScpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10uaW5Eb2N1bWVudCcsICdpbkRvY3VtZW50RmxhZ3NbJyArIGkgKyAnXScpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRlZENvdW50cyA9IFtdOworICAgICAgICAgICAg
cmVtb3ZlZE5vZGVzID0gW107CisgICAgICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gW107Cisg
ICAgICAgICAgICBtb2RpZmllZEF0dHJzID0gW107CisgICAgICAgICAgICB0ZXh0Tm9kZXMgPSBb
XTsKKyAgICAgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFtdOworICAgICAgICAgICAgcmVzdW1l
TGlzdGVuaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdXNwZW5kTGlzdGVu
aW5nKCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gcmVzdW1lTGlzdGVuaW5n
KCkgeworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0
ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJi
bGluZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zID0g
e2NoaWxkbGlzdDogdHJ1ZX07CisgICAgICAgIGRvY3VtZW50LndlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIobGlzdGVuZXIsIGRvY3VtZW50TGlzdGVuZXJPcHRpb25zKTsKKyAgICAgICAgdmFyIGEg
PSBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Cisg
ICAgICAgIGEudGV4dENvbnRlbnQgPSAnaGVsbG8sIHdvcmxkJzsKKyAgICAgICAgdmFyIGIgPSBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAg
ICAgIGFkZGVkQ291bnRzID0gWzEsIDEsIDFdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0g
WzAsIDAsIDFdOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV07
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1
bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAg
ICAvLyBUZXN0IHJlbW92YWwuCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICBzYW5kYm94LnJlbW92
ZUNoaWxkKGIpOworICAgICAgICBhZGRlZENvdW50cyA9IFswXTsKKyAgICAgICAgcmVtb3ZlZE5v
ZGVzID0gW2JdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzFdOworICAgICAgICBpbkRv
Y3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAg
ICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNh
bGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxs
ZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAg
ICAgc2FuZGJveC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7YXR0cmlidXRl
OiB0cnVlfSk7CisgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbJ2RhdGEtZm9vJ107CisgICAgICAg
IHNhbmRib3guc2V0QXR0cmlidXRlKCdkYXRhLWZvbycsICdteWRhdGEnKTsKKyAgICAgICAgaW5E
b2N1bWVudEZsYWdzID0gW3RydWVdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAg
ICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJD
YWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3RlbmVyQ2Fs
bGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGVzdCBjaGFyYWN0ZXJkYXRhIG11dGF0aW9uLgor
ICAgICAgICBhLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGFyYWN0ZXJk
YXRhOiB0cnVlfSk7CisgICAgICAgIHRleHROb2RlcyA9IFthLmZpcnN0Q2hpbGRdOworICAgICAg
ICBhLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBpbkRvY3Vt
ZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAg
IHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxl
ZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGRpc2Nvbm5lY3RlZCBEb2N1bWVudEZyYWdtZW50
CisgICAgICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsK
KyAgICAgICAgZnJhZy53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRs
aXN0OiB0cnVlfSk7CisgICAgICAgIHZhciBkID0gZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBhZGRlZENvdW50cyA9IFsxXTsKKyAgICAg
ICAgY2hpbGRsaXN0SW5kaWNlcyA9IFswXTsKKyAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0gW2Zh
bHNlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3Rl
bmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAg
IHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIHNhbmRib3gud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7Cisg
ICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOwor
ICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7
CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmco
KTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVz
dW1lTGlzdGVuaW5nKCk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNk
ZDczMGY0MmNlZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uNjRjNmJlZGNmYWYzZDA3MzQxM2Ey
ODhhM2RmZGRmZjY4MWUwNGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxMS0w
OC0yNSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBp
biBwcm9ncmVzc10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEg
cmVwbGFjZW1lbnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJp
bWVudGFsLCB2ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZl
bnR1YWxseSByZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAg
ICAgICAgbGFyZ2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNz
YWdlIHRvIHB1YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAg
ICAgVGhhdCB0aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1h
cml6ZWQgYnkKKyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgor
CisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJh
cHBzLzIwMTFKdWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2gg
aXMgaW4gbm8gd2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRp
b24uIFRoZSBiaWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5n
CisgICAgICAgIG9mIE11dGF0aW9uUmVjb3JkIGFycmF5cyB0byBNdXRhdGlvbkxpc3RlbmVyczog
dGhlIGluY2x1ZGVkIGxheW91dAorICAgICAgICB0ZXN0IGluc3RlYWQgY2FsbHMgYSAic3Bpbk11
dGF0aW9uUXVldWUiIGZ1bmN0aW9uIHRvIHRyaWdnZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4g
VGhpcyBpcyBub3QgYWN0dWFsbHkgbWVhbnQgdG8gYmUgZXhwb3NlZCB0byBKUywKKyAgICAgICAg
dGhvdWdoOiBteSBob3BlIGlzIHRvIGluc3RlYWQgY2FsbCBzcGluTXV0YXRpb25RdWV1ZSBmcm9t
CisgICAgICAgIEMrKywgZWl0aGVyIGZyb20gc29tZXdoZXJlIGluIFdlYkNvcmUgb3IgKG1vcmUg
bGlrZWx5KSBpbgorICAgICAgICB0aGUgZW1iZWRkZXIuIEkgaGF2ZSBhIHNlcGFyYXRlIGNoYW5n
ZSB3aGljaCBpbXBsZW1lbnRzIHRoZQorICAgICAgICBsYXR0ZXIgaW4gQ2hyb21pdW0uCisKKyAg
ICAgICAgVGhlIG90aGVyIG1haW4gdGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhh
dCBNdXRhdGlvblJlY29yZHMKKyAgICAgICAgYXJlIG5vdCBkaXNwYXRjaGVkIGluIGFsbCB0aGUg
cHJvcGVyIHBsYWNlcywgZS5nLiwgdGhlIGhhbmRsaW5nIG9mCisgICAgICAgIGlubmVySFRNTCBp
cyBub3QgYXMgd2UgaG9wZSBpdCB0byBiZS4gVGhpcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YKKyAg
ICAgICAgd2FudGluZyB0byBwdXQgdGhpcyBwYXRjaCB1cCB0byBnZXQgZmVlZGJhY2s6IGl0IHNo
b3VsZG4ndCBiZQorICAgICAgICBtdWNoIHdvcmsgdG8gYWRkIE11dGF0aW9uUmVjb3JkIGRpc3Bh
dGNoaW5nIGluIGFsbCB0aGUgcHJvcGVyCisgICAgICAgIHBsYWNlcy4KKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRh
dGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNN
dXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25MaXN0ZW5lcjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3Rl
bmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjppc29sYXRlZFdvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6d3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OnNldFdyYXBwZXIpOgorICAgICAgICBK
U011dGF0aW9uTGlzdGVuZXIgaXMgdmVyeSBzaW1pbGFyIHRvIEpTRXZlbnRMaXN0ZW5lciwKKyAg
ICAgICAgd2l0aCBhIGZldyBzaW1wbGlmaWNhdGlvbnMuICBJdHMgcmVhc29uIGZvciBleGlzdGlu
ZworICAgICAgICBpcyB0aGF0IE5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciBuZWVkcyB0
byBiZWhhdmUKKyAgICAgICAgbGlrZSBhZGRFdmVudExpc3RlbmVyLCBpbiB0aGF0IGR1cGxpY2F0
ZSBhZGRpdGlvbnMgYXJlCisgICAgICAgIGlnbm9yZWQuIFRoaXMgcmVxdWlyZXMgdGhlIG9wZXJh
dG9yPT0gbWV0aG9kLiBXZSBhbHNvCisgICAgICAgIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcg
dGhlIHNhbWUgTXV0YXRpb25SZWNvcmQKKyAgICAgICAgbW9yZSB0aGFuIG9uY2UgdG8gYSBnaXZl
biBsaXN0ZW5lciwgYW5kIGZvciB0aGlzCisgICAgICAgIHdlIHVzZSBhIEhhc2hNYXAsIHRodXMg
dGhlIHxoYXNofCBtZXRob2QuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxGaWVsZHMpOgorICAgICAg
ICAoR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVG
dW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgIFNp
bmNlIE11dGF0aW9uTGlzdGVuZXJzIHRoZW1zZWx2ZXMgYXJlIGN1c3RvbSwgc28KKyAgICAgICAg
bXVzdCBiZSBtdXRhdGlvbiBsaXN0ZW5lciBhZGRpdGlvbiBhbmQgcmVtb3ZhbC4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFzaCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRD
YWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlzdGVuZXJPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZG9G
aW5kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVxdWl2YWxlbnRzIG9mIHRo
ZSBKU011dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2VuZXJhbGl6ZWQgaW52b2tl
Q2FsbGJhY2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgorICAgICAgICBWOE11dGF0
aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVu
dCk6CisgICAgICAgIERpc3BhdGNoICJjaGFyYWN0ZXJkYXRhIiBtdXRhdGlvbnMuCisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3Zh
bEV2ZW50cyk6CisgICAgICAgIERpc3BhdGNoICJjaGlsZGxpc3QiIG11dGF0aW9ucy4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIERpc3BhdGNoICJhdHRyaWJ1
dGUiIG11dGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERh
dGEpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
TXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uTGlz
dGVuZXI6On5NdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25MaXN0ZW5l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjp0eXBlRmxhZ1RvTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL011dGF0aW9u
UmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6aW5zZXJ0ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uUmVjb3JkOjpuZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
YXR0ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnByZXZWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV3VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OnR5cGVGbGFnKToKKyAgICAgICAgKiBkb20vTXV0YXRp
b25SZWNvcmQuaWRsOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25SZWNvcmRzIGFyZSBhbmFsb2dv
dXMgdG8gRXZlbnRzOiB0aGV5IGhvbGQgZGF0YQorICAgICAgICBhYm91dCBhIHNpbmdsZSBtdXRh
dGlvbi4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpz
cGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVl
TXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAg
ICBNdXRhdGlvblRhcmdldCBpcyBhbmFsb2dvdXMgdG8gRXZlbnRUYXJnZXQsIGFuZCBpcyBhIG1p
eGluIGZvcgorICAgICAgICBEb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVudCwgYW5kIEVsZW1lbnQu
CisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oLgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAg
ICAgKiBkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUgdGhhdCB0
aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNoYW5n
ZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0byBkZWFs
IHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUtdG8t
cnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRhNWEyZTc2
M2FkOTZjNTM3MC4uOWU3OGZjMTRlMjVlYjc1MzE5NGFmNDJiNDE4MTk3MzY4NDBhNTY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCw4IEBACiAjaW5jbHVkZSAi
SlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVy
LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKICNpbmNsdWRlICJKU05hbWVk
Tm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuY3BwIgogI2luY2x1ZGUgIkpTTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggMjZiNjBhYjMxMzFkOWFlNGY2ZjIzNjM0MTcxMjUwZjZhNTVjMDdmOC4uYmUzYjA1NDJhOTMw
ZDI5YmJlMWFmOWExZWVjNjYyZjNhNzQxODQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0zMTUsNiArMzE1LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGFDYWxs
YmFjayBcCiAgICAgTW91c2VFdmVudCBcCiAgICAgTXV0YXRpb25FdmVudCBcCisgICAgTXV0YXRp
b25MaXN0ZW5lciBcCisgICAgTXV0YXRpb25SZWNvcmQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAg
ICAgTmF2aWdhdG9yIFwKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciBcCkBAIC01NzEsNyAr
NTczLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAKIC5QSE9OWSA6IGFsbAogCi1KU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkpCitKU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oIEpTTXV0YXRpb25MaXN0ZW5lci5oLCQoRE9NX0NMQVNTRVM6JT1K
UyUuaCkpCiAKIFdFQl9ET01fSEVBREVSUyA6PQogaWZlcSAoJChmaW5kc3RyaW5nIEJVSUxESU5H
X1dYLCQoRkVBVFVSRV9ERUZJTkVTKSksIEJVSUxESU5HX1dYKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCBmNTE4NjAwYTRlMTQxOWQwOTY5M2Y5ZTAzNjQwNjE5MWNj
MmYxYTRjLi45OWFhNzlhNzVjOTVmMjM2YjJiZjgzNzg3OGZkMjVhMDVlMWU0YmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAg
ICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBiaW5kaW5ncy92OC9jdXN0b20gZXhpc3QgZm9yIHRoZXNl
LgogICAgICAgJy4uL2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4vZG9tL0V2ZW50
VGFyZ2V0LmlkbCcsCisgICAgICAnLi4vZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKICAgICAg
ICcuLi9odG1sL1ZvaWRDYWxsYmFjay5pZGwnLAogCiAgICAgICAjIEJpbmRpbmdzIHdpdGggY3Vz
dG9tIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxNjg0
NGI3MTAxNzhhNzEyMjE4ZmZkNjA2YTJjYmMyMzNkMGNkMDcyLi45NzJiNmE3MzcxNGM1ZjBlYjZi
NTg5NzVjMGQ3OGJlMDM2N2IzNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTc5LDYgKzExNzks
OCBAQAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlUG9ydC5pZGwnLAogICAgICAgICAgICAgJ2Rv
bS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaWRsJywK
KyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAorICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvblJlY29yZC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaWRs
JywKICAgICAgICAgICAgICdkb20vTm9kZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlRmls
dGVyLmlkbCcsCkBAIC0yMDc3LDYgKzIwNzksOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHAnLApAQCAtNTMyNiw2ICs1MzMxLDEyIEBACiAgICAgICAgICAgICAnZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuY3BwJywKKyAg
ICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uVGFyZ2V0LmNwcCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0LmgnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCcsCiAgICAgICAgICAgICAnZG9tL05h
bWVOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuaCcsCiAgICAg
ICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5jcHAnLApAQCAtNTM2Nyw2ICs1Mzc4LDcgQEAKICAg
ICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIu
aCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGJhODQ2NDYzZTUyN2RlNmZkYTMwYWI3OTk2OGU2
ZWFiNGM5YTJiZC4uOWYzZTNiMDkyMjI4YTE3OWRjNDlmZTA5OGNmZTU3ZmNhOTNmMTRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTQxMCw5ICs1NDEwLDE3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlw
aE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3
RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEg
LyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMw
MDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNjcxREEzRTEzRTM3MTQ5MDA1NThBRTkg
LyogSlNNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29y
ZC5jcHAgKi87IH07CisJCUM2NzFEQTNGMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVj
b3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcx
REEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovOyB9OworCQlDNjcy
QTJEMzEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjcyQTJEMjEzRjM0QzRBMDA5NDIz
Q0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZGNDEwNDcxMzBDNkU4OTAwMzkzREU0
IC8qIEVudHJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlCYXNlLmNwcCAqLzsgfTsK
KwkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQwMTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CisJCUM2RjY3MTU0MTNFMzVFNUUw
MERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuY3BwICovOyB9OworCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2
RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERF
M0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5jcHAgKi87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011
dGF0aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LzsgfTsKIAkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmggKi87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjEzNyw5ICsxMjE0NSwyMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNB
OTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdseXBoTWV0cmljc01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3
NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8q
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNjcxREEzODEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpT
TXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRh
dGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0
QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBB
MDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRy
eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNl
LmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5l
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQwMTNFMzVFNUUwMERF
M0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9u
VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDcxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE11dGF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUM2RjY3MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdE
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMxNTksNiArMTMxODAsNyBAQAogCQkJCTg5ODc4NTc2MTIyQ0ExREEwMDNBQUJE
QSAvKiBGaWxlQVBJICovLAogCQkJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1MICov
LAogCQkJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8sCisJCQkJQzY3
MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTMzNTAzQzlDMTAxNzlB
OUEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTFBQzIyNjAyMERCNjlFQTcwMDg5
QjY2OSAvKiBPZmZsaW5lICovLAogCQkJCUE5RDI0N0Y5MEQ3NTdFNDEwMEZERjk1OSAvKiBQbHVn
aW5zICovLApAQCAtMTU0MDUsNiArMTU0MjcsNyBAQAogCQkJCTg1QUZBN0FCMEFBRjNCQjAwMEU4
NDMwNSAvKiBFdmVudHMgKi8sCiAJCQkJODVDNTZEMDMwQUE4QkFBNzAwRDk1NzU1IC8qIEhUTUwg
Ki8sCiAJCQkJODVFNzExM0QwQUM1RDRBMTAwNTMyNzBGIC8qIEludGVybmFsICovLAorCQkJCUM2
NzFEQTVEMTNFMzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQk4NTM4RjA1NzBBRDcy
MkI5MDA2QTgxRDEgLyogUmFuZ2VzICovLAogCQkJCTg1MDY1NzA0MEFBQjQ3NkMwMDJEMTVDMCAv
KiBTdHlsZVNoZWV0cyAqLywKIAkJCQk4NUEwRjk4RTBBQzcxNkY0MDAxNjFGREMgLyogU1ZHICov
LApAQCAtMTg1MTMsNiArMTg1MzYsOCBAQAogCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhE
NUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCisJCQkJQzZGNjcxNUExM0UzNUVCMjAw
REUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJQzZGNjcxNUIxM0UzNUVC
MjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCTkzQjcwRDRGMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwICovLAogCQkJCTkzQjcw
RDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCAqLywKIAkJ
CQkxNENEOEQ4MTEwNkI1MjkwMDBBNDZEMjMgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICov
LApAQCAtMTkxNjgsNiArMTkxOTMsMjIgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJz
ID0gMDsKIAkJfTsKKwkJQzY3MURBNDQxM0UzNzE2ODAwNTU4QUU5IC8qIE11dGF0aW9uICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDNjcxREEzODEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8sCisJCQkJQzY3MURBMzkxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
TXV0YXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDNjcxREE1RDEz
RTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5OTE0LDYg
KzE5OTU1LDE0IEBACiAJCQkJODUwMzFCMzMwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZl
bnQuY3BwICovLAogCQkJCTg1MDMxQjM0MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50
LmggKi8sCiAJCQkJOTNFRUMxRjMwOUMyODc3NzAwQzUxNUQxIC8qIE11dGF0aW9uRXZlbnQuaWRs
ICovLAorCQkJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmgg
Ki8sCisJCQkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaWRs
ICovLAorCQkJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAg
Ki8sCisJCQkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8s
CisJCQkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywK
KwkJCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovLAor
CQkJCUM2RjY3MTQ3MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovLAorCQkJ
CUM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLywKIAkJ
CQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlB
ODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5
RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0xOTk3OCw2ICsy
MDAyNyw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVu
dFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZDNzAwRjk5MkUwIC8qIFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIxM0UzNUU1RTAwREUzQjlD
IC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERD
RjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQk5QkQwQkY5MjEy
QTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOUJEMEJGOTEx
MkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywKQEAgLTIyMDMyLDYgKzIy
MDgyLDggQEAKIAkJCQk4OTg3ODVCOTEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEyQjQ4MDA5NjMzQTUgLyogSlNN
b3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUg
LyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1RDEzRTM1RUIy
MDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjcx
REEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDU3LDggQEAK
IAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRh
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEw
MDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3
MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYxODEsNiArMjYyMzUsMTAgQEAKIAkJCQk5NzdFMkUwRTEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUz
NzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTlERTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRh
cmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyog
SlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2NzFEQTNFMTNFMzcx
NDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmUyYTY1MDczODJiZWM0NzRkNDYyYzgzYzEyNTUyMzhlMTM4N2QyYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5j
cHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU011dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmgi
CisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6SlNNdXRh
dGlvbkxpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1fd3JhcHBlcigqaXNvbGF0ZWRXb3Js
ZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVk
V29ybGQpCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNGdW5jdGlvbi5zZXRNYXlC
ZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7
CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKworfQorCitKU011dGF0aW9u
TGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIoKQoreworfQorCit2b2lkIEpTTXV0YXRpb25M
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25z
KQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0
YXRpb25zOworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VSVCghbXV0YXRpb25zLT5p
c0VtcHR5KCkpOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24g
PSBtX2pzRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBtX2lzb2xh
dGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihn
bG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaGUgd2luZG93IG11
c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgorICAgIC8vIEZJWE1FOiBBIGJldHRlciBmaXgg
Zm9yIHRoaXMgbWF5IGJlIHRvIGNoYW5nZSBET01XaW5kb3c6OmZyYW1lKCkgdG8gbm90IHJldHVy
biBhIGZyYW1lIHRoZSBkZXRhY2hlZCB3aW5kb3cgdXNlZCB0byBiZSBpbi4KKyAgICBpZiAoZnJh
bWUtPmRvbVdpbmRvdygpICE9IHdpbmRvdy0+aW1wbCgpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0cz8KKyAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3Jp
cHQtPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBzY3JpcHQtPmlz
UGF1c2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9
IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsK
KworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUo
KTsKKyAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7
CisgICAgfQorCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBS
ZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKworICAgICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBtdXRhdGlvbkxpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG11dGF0aW9uTGlzdC5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkpKTsKKwor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBhcmdzLmFwcGVuZChj
b25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9uTGlzdCkpOworCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
OworICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5h
bWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRhLnRp
bWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQor
ICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQgdGhl
IHRhcmdldCBzaG91bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1lbnQg
b3IgRE9NV2luZG93PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucy0+YXQoMCktPnRhcmdldCgpKTsKKyAgICAgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGds
b2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOworCisgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Cisg
ICAgfQorfQorCitib29sIEpTTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBNdXRh
dGlvbkxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBjb25zdCBKU011dGF0aW9uTGlzdGVuZXIq
IGpzTXV0YXRpb25MaXN0ZW5lciA9IHN0YXRpY19jYXN0PGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5l
cio+KCZsaXN0ZW5lcik7CisgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9PSBqc011dGF0aW9uTGlz
dGVuZXItPm1fanNGdW5jdGlvbjsKK30KKwordW5zaWduZWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpo
YXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8SlNDOjpKU09iamVjdCo+OjpIYXNoOjpo
YXNoKG1fanNGdW5jdGlvbi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTNmYTE2YzlmMzc3NWZjMzJhOTlhNmVlN2M5MmQ3NThiN2IyZGUwZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKyNpZm5kZWYgSlNNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgSlNNdXRhdGlvbkxpc3Rl
bmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlIDxoZWFwL1dl
YWsuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9X
cml0ZUJhcnJpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XcmFwcGVy
V29ybGQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworY2xhc3MgSlNNdXRhdGlvbkxpc3Rl
bmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTTXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVy
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTXV0YXRpb25MaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
fkpTTXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgp
OworCisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4g
bV9pc29sYXRlZFdvcmxkLmdldCgpOyB9CisKKyAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93cmFwcGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBjb25z
dCB7IG1fd3JhcHBlci5zZXQoZ2xvYmFsRGF0YSwgd3JhcHBlciwgMCk7IH0KKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworCitwcml2YXRlOgorICAgIEpTTXV0
YXRpb25MaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlNDOjpKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKworICAgIG11dGFibGUgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9uOworICAgIG11dGFibGUg
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKworICAgIFJlZlB0cjxET01XcmFw
cGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEpTTXV0YXRpb25MaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDc0ZjBkMDg3ZDdiMWI0
ZjgxYTAxN2UzN2E0YWUxYjhlMjk5M2QzYmQuLjU0N2U0MTUwM2UwZDAxYzliOWI5NThkNTRjMzI5
NmZjM2VlNmM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODcsNiArMTg3LDUwIEBAIEVORAogICAgIHJldHVybiBA
R2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKIH0KIAorc3ViIEdlbmVyYXRlTXV0YXRpb25MaXN0
ZW5lckNhbGwKK3sKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJHBhc3NS
ZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7
CisgICAgbXkgJHR5cGVNYXNrSGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAi
LCB0eXBlTWFzayIgOiAiIjsKKyAgICBteSAkcHJlZml4ZWRGdW5jdGlvbk5hbWUgPSAid2Via2l0
IiAuIHVjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJNdXRhdGlv
blJlY29yZC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7IkpTTXV0YXRpb25MaXN0ZW5lci5o
In0gPSAxOworCisgICAgbXkgQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwgPSAoKTsKKwor
ICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAgICAgIHB1c2goQEdlbmVyYXRl
TXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBKU1ZhbHVlIGpzVHlwZXMgPSBleGVj
LT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWpzVHlwZXMuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTT2JqZWN0KiBqc1R5
cGVzT2JqZWN0ID0gYXNPYmplY3QoanNUeXBlcyk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7
CisgICAgSlNWYWx1ZSBqc0NoaWxkbGlzdCA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJjaGlsZGxpc3QiKSk7CisgICAgaWYgKGpzQ2hpbGRsaXN0LmlzQm9vbGVh
bigpICYmIGpzQ2hpbGRsaXN0LmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0
YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgSlNWYWx1ZSBqc0F0dHJpYnV0ZSA9IGpz
VHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJhdHRyaWJ1dGUiKSk7Cisg
ICAgaWYgKGpzQXR0cmlidXRlLmlzQm9vbGVhbigpICYmIGpzQXR0cmlidXRlLmdldEJvb2xlYW4o
KSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7Cisg
ICAgSlNWYWx1ZSBqc0NoYXJhY3RlcmRhdGEgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICBpZiAoanNDaGFyYWN0ZXJkYXRh
LmlzQm9vbGVhbigpICYmIGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpCisgICAgICAgIHR5
cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzsKK0VORAorICAgIH0K
KworICAgIHB1c2goQEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGwsIDw8RU5EKTsKKyAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCisgICAgaW1wLT4ke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0aW9uTGlzdGVuZXIoSlNN
dXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBj
dXJyZW50V29ybGQoZXhlYykpJHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0eXBlTWFza0hhbmRsaW5n
fSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK0VORAorICAg
IHJldHVybiBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbDsKK30KKworCiAjIFBhcmFtczog
J2lkbERvY3VtZW50JyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZU1vZHVsZQogewpAQCAtMjAxNSw2ICsy
MDU5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUs
ICJhZGQiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUsICJy
ZW1vdmUiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJhZGQi
KSk7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
ZXEgIndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsKCJyZW1vdmUi
KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGFy
Z3NJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUluZGV4ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTExZmIwOTRiZTUzMjUyMi4uYTMzYzZiYmNk
NjdjZGQwM2Y0MjVjZmE3NTMzYzlhY2FlZTRiZDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQ3OSw2ICs0NzksMTIg
QEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmll
bGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsKICAgICB9CiAKKyAgICBpZiAoJG5hbWUg
ZXEgIkRvY3VtZW50IiB8fAorICAgICAgICAkbmFtZSBlcSAiRG9jdW1lbnRGcmFnbWVudCIgfHwK
KyAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkVsZW1lbnQiKSkgeworICAgICAgICBwdXNo
KEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7Cisg
ICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0K
QEAgLTExMzQsNiArMTE0MCw1MyBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rp
b25OYW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQ
dHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7Cisg
ICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikg
PyAiY3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0
aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBs
SW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhN
dXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRh
dGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZl
bnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7
bG9va3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9
IDA7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09i
amVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlz
dCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3Qt
PkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6
OkNoaWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRl
ID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlm
ICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkK
KyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFy
YWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQor
ICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFn
OworICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CisgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVm
aXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFu
ZGxpbmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6
bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7
CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyMzksNiArMTI5MiwxNCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdl
bmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
JGltcGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0z
MTU1LDcgKzMyMTYsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScg
PT4gMSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAn
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
JyA9PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNTUsNiAr
MzMxNywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0g
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAor
ICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNs
dWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1
ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVy
Kj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAg
ICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFl
N2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAs
NiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNp
bmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0
ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6
ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJv
dG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+
R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRv
dyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFu
YWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNp
ZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4
ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVu
dFRhcmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwog
ICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250
ZXh0OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVu
dFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdl
dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1
dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAv
LyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5
MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDli
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVj
dFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVy
KSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4
dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0
ZW5lcikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0
ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFt
X2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0
KCk7CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0
ZW5lcik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRl
cik7CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1f
bGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAg
ICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8g
RG9uJ3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0
YW5jZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11
dGF0aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29u
dGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsK
KyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11
dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+
c2l6ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhp
KSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJv
b2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVu
ZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVk
IFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4
TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJf
aAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djgu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDog
cHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29u
dGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhN
dXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29y
bGRDb250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNw
b3NlTGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1f
bGlzdGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3
MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gK
KworI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlv
bkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3Ig
VjhNdXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9m
IHY4OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9G
aW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAg
bGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpt
dXRhdGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRp
b25MaXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlz
dGVuZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRh
dGlvbkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3Rl
bmVyKj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxp
bmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAg
IEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlv
bkxpc3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFw
cGVyKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3Js
ZENvbnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisg
ICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0
aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKwor
ICAgIHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEz
ZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhi
MzUyMjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApA
QCAtNjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEg
dmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9p
ZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJU
KG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4
KTsKICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4
IDExZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJj
NzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAg
ICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJh
Y2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBp
ZiAoY2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+
OjpDYXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFj
aykpOwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2
ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFj
NjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZk
NTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3
cm9uZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4
OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJD
aGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJl
Y29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRo
aXMpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVk
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggNmJhNWFjZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uMmIyNjkz
YjdlZjFmZmVhZmIwYTljNGRjOGY2ODBhZjUzMmM0NDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVC
dXR0b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJl
Y29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMTA5NSw2ICsxMDk5LDIwIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBpbnNlcnRlZE5v
ZGVzOworICAgICAgICBpbnNlcnRlZE5vZGVzLmFwcGVuZChjKTsKKyAgICAgICAgdW5zaWduZWQg
aW5kZXggPSAwOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjLT5wcmV2aW91c1NpYmxpbmcoKTsg
bjsgbiA9IG4tPnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMSAvKmFkZGVkQ291bnQqLywgMCAv
KnJlbW92ZWROb2RlcyovLCBpbmRleCk7CisgICAgICAgIGlmIChjLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxlbWVudChjLT5wYXJlbnROb2RlKCkpLT5l
bnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBlbHNlIGlmIChjLT5wYXJlbnROb2Rl
KCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihjLT5wYXJlbnROb2RlKCkpLT5lbnF1
ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBjLT5vd25lckRvY3VtZW50KCktPmVucXVl
dWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAgICAgaWYgKGMtPnBhcmVudE5vZGUoKSAm
JiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFSU5TRVJURURfTElT
VEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5v
ZGUoKSkpOwogCkBAIC0xMTE2LDYgKzExMzQsMjAgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGls
ZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKKyAg
ICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBy
ZW1vdmVkTm9kZXM7CisgICAgICAgIHJlbW92ZWROb2Rlcy5hcHBlbmQoYyk7CisgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gYy0+cHJldmlvdXNTaWJs
aW5nKCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChjLT5wYXJlbnROb2RlKCksIDAgLyphZGRlZENvdW50
Ki8sIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZW1vdmVkTm9kZXMpLCBpbmRleCk7CisgICAgICAg
IGlmIChjLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxl
bWVudChjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAg
ICBlbHNlIGlmIChjLT5wYXJlbnROb2RlKCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQq
PihjLT5wYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgICAgICBj
LT5vd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgfQorCiAg
ICAgLy8gZGlzcGF0Y2ggcHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCiAgICAgaWYgKGMtPnBh
cmVudE5vZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RF
UkVNT1ZFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0cnVlLCBj
LT5wYXJlbnROb2RlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkMjg4NmU5ZWVh
YzczZDJhYzI0YmIzY2Y4MGFhNGI1ZmNhMWUxOTMuLmVjMzVhNTIzNWM0ZDYxZDYwY2U4YjcwNjk4
OTY4MWNmNThhZDg3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0LDYgKzEwNCw3
IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
TmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNl
ci5oIgpAQCAtNTA5MSw0ICs1MDkyLDExIEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9h
ZGVyKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGVyOwogfQogCitNdXRhdGlvblRhcmdldERhdGEq
IERvY3VtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIGlmICghbV9tdXRh
dGlvblRhcmdldERhdGEpCisgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIo
bmV3IE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRh
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IGUwMGI4Njk1ZGExMmFiZDQ0ZTkxYWE2ZGU0OTVhN2I2OGEyODgxNWIuLmU1YjA3N2UwZGU5
OTFjMjgzZmVhNDUxODE5N2IyNTdjYTRhNzA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0xMDMsNiArMTA0LDcg
QEAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBj
bGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHM7CitjbGFzcyBNdXRhdGlvblRhcmdldERhdGE7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3Mg
Tm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBlbnVtIFBhZ2Vz
aG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAKIGVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgeyBS
ZWNhbGNTdHlsZUltbWVkaWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlIH07CiAKLWNsYXNzIERvY3Vt
ZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewor
Y2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQog
ICAgIHsKQEAgLTExMDIsNiArMTEwNCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY2xlYXJY
TUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVu
c3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJ
Z25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIApAQCAtMTQxMCw2ICsxNDE1
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXRE
YXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhl
cmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2Ug
cmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA1
YzY4MzhlYzVmNWYwNDM1MTE4YTg1ZjZkMTRmMmVhMzA5MDFkMDM2Li4xN2Q5NDMzMGMzZWQ0ZDdl
MDM1NGIwOTkwOWU2ODdmMGVhMTQ2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0
NSw2ICsyNDUsMTEgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQg
d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBp
biBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlz
dGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKKworI2lmICFkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAg
ICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCmluZGV4IDM4ODJjNGRmZjA4ZTZkOGU5NjI1Yzc3ODI1Njg4NDE2MTlkODk0NGYuLmZk
ZWFkOWIwMTk0M2ZjMTZhYWU5NmIzMWJkOWM5NDkzNWJiOTliNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiTXV0
YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTg1LDQgKzg2LDExIEBAIGJv
b2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGCiAgICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbik7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnRGcmFnbWVudDo6
ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXRE
YXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlv
blRhcmdldERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3ODRh
MTIxYzlhM2JkMDhjODA4YzgyMzYyYTA0ZmYzMC4uNmVmZDc3MDM0YTU0NjZiODNiYzlkNGQwYjlj
YTAyNGYyMDllOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgTXV0YXRp
b25UYXJnZXREYXRhOworCitjbGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDEwICs0
NiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOwogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9u
VGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdl
dERhdGEuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0
YXRpb25UYXJnZXREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2Rl
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29u
c3Q7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0
YTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmlkbAppbmRleCA4ODJiNjJkYjM5ZWI3ZjJlMDUwNDc4MjA0OTJiN2U5MzYxYThlZGVkLi5iNzVi
ODVmYmQ2ZDI1MjBmZDRjYjZmMGM3YTY4ZjBmMWJjNzg2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yNSw2ICsyNSwxMSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZUxpc3QgcXVlcnlT
ZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAg
ICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5l
ciBsaXN0ZW5lcik7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRkZGNiYi4uMjY2NjE4OTUyN2Ri
NDhiNTRhYmJhMTJmNjE1Y2FmYmRmY2JjYTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKQEAg
LTY5OSw2ICs3MDAsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5j
aHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiAr
NzM3LDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9uaXpp
bmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIFJlZlB0cjxN
dXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRl
Q2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMjA1
Myw0ICsyMDYyLDE0IEBAIFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uTGlzdD4gRWxlbWVudDo6
d2Via2l0R2V0QW5pbWF0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIGFuaW1Db250cm9sbGVyLT5h
bmltYXRpb25zRm9yUmVuZGVyZXIocmVuZGVyZXIoKSk7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0
YSogRWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gaGFzUmFyZURh
dGEoKSA/IHJhcmVEYXRhKCktPm11dGF0aW9uVGFyZ2V0RGF0YSgpIDogMDsKK30KKworTXV0YXRp
b25UYXJnZXREYXRhKiBFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAg
IHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZTE1ZjI3YTli
NWRlZDAxZWFkNTNlOTA0OWYxYjg2ZTQzNTYyOTRkYS4uOGI4NjYwMWQ4OTgwOTRjZmFmYTNiNGVh
YmI0MzJjMTA4NTIyNDJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJN
dXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCiAKQEAgLTQ5LDcgKzUwLDcgQEAgZW51bSBTcGVsbGNoZWNrQXR0cmlidXRl
U3RhdGUgewogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0CiB9OwogCi1jbGFzcyBFbGVt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250
YWluZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5FbGVtZW50KCk7CkBAIC0zODQsNiArMzg1LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKIAorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdl
dERhdGEoKTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCk7CisKICAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgRWxlbWVudDo6YXR0
cmlidXRlQ2hhbmdlZCgpIGNhbGxzIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucy4KICAgICAv
LyBUaGV5IGFyZSBzZXBhcmF0ZWQgdG8gYWxsb3cgYSBkaWZmZXJlbnQgZmxvdyBvZiBjb250cm9s
IGluIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoKS4KICAgICB2b2lkIHJlY2FsY1N0
eWxlSWZOZWVkZWRBZnRlckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwKaW5kZXggOWViYjAyYTU5MmY3MTgzMjZjMTZlMDJmMTk4MWI0MWQ5Yzg4OTBlYy4u
NzI3NzE4YTZlNTY2MzNkYjczM2Y4YmQ3MGViZjQxOWZmYTliOTZlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbApAQCAtMTQwLDYgKzE0MCwxMSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAogI2lm
ICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MK
KyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVu
ZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBlcyk7CisgICAgICAgIHZvaWQgd2Via2l0UmVt
b3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRp
ZgorCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0
cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmJsdXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggODMwMTUwNWMzYjUyZmNjMzFjYWRkY2MzZjE2Nzg0ODRjNmFl
YmUyYy4uMzcyM2JjNjlmZTNkYjA3YTQ4MWExYzllZTYxN2EyNTljNTc5YTdkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNs
YXNzTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTm9k
ZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0zOSw2ICs0MCwxNSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogCisgICAgTXV0YXRp
b25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9uVGFy
Z2V0RGF0YS5nZXQoKTsgfQorICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25U
YXJnZXREYXRhKCkKKyAgICB7CisgICAgICAgIGlmICghbV9tdXRhdGlvblRhcmdldERhdGEpCisg
ICAgICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRh
cmdldERhdGEpOworICAgICAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cisg
ICAgfQorCisKICAgICB1c2luZyBOb2RlUmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNlVXBk
YXRlU29vbkFmdGVyQXR0YWNoOwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0TmVlZHNGb2N1
c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAKQEAgLTU1LDYgKzY1LDggQEAgcHVi
bGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudDsKICNlbmRpZgorcHJpdmF0ZToKKyAgICBPd25QdHI8TXV0YXRpb25UYXJn
ZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIGlubGluZSBJbnRTaXplIGRlZmF1
bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhZDhkODg0MTA0NTFkMjg2MzU3ZGVlMGE1NWQxMzNkNDY2OTZhMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBNdXRh
dGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVjb3Jk
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9uUmVjb3JkVmVjdG9yOworCitjbGFzcyBNdXRhdGlv
bkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlv
blJlY29yZFZlY3Rvcj4pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
dXRhdGlvbkxpc3RlbmVyJikgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpID0gMDsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25MaXN0ZW5lci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWFkMDFmOGQzYjY2ZmYxOWQzZDM4MWIyNmQ3NGZlY2I3ZGM2ZjdhYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIFB1
cmVJbnRlcmZhY2UsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gTXV0YXRpb25MaXN0
ZW5lciB7CisgICAgICAgIC8vIHZvaWQgaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRbXSBt
dXRhdGlvbnMpCisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gQXJyYXkgbXV0YXRpb25zKTsK
KyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3Jk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDgzYzVhMzg2Y2QxYjA3MmZkNThjOTA4OGJmNjhhNDJjMGNlMjU4MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsK
KworY2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEVtcHR5Tm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1YWwgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRl
bSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdp
dGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0
ZToKKyAgICBFbXB0eU5vZGVMaXN0KCkgeyB9Cit9OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQ
dHI8Tm9kZT4gdGFyZ2V0LCB1bnNpZ25lZCBhZGRlZENvdW50LCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiByZW1vdmVkLCB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCkKK3sKKyAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENoaWxkbGlz
dEZsYWcsIHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEgPSBhZG9wdFB0
cihuZXcgQ2hpbGRsaXN0RGF0YSk7CisgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0YS0+YWRk
ZWRDb3VudCA9IGFkZGVkQ291bnQ7CisgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0YS0+cmVt
b3ZlZE5vZGVzID0gcmVtb3ZlZDsKKyAgICBpZiAoIW11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEt
PnJlbW92ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0YS0+cmVtb3Zl
ZE5vZGVzID0gRW1wdHlOb2RlTGlzdDo6Y3JlYXRlKCk7CisgICAgbXV0YXRpb24tPm1fY2hpbGRs
aXN0RGF0YS0+Y2hpbGRsaXN0SW5kZXggPSBjaGlsZGxpc3RJbmRleDsKKyAgICByZXR1cm4gbXV0
YXRpb24ucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlv
blJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKEF0dHJpYnV0ZUZsYWcs
IHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2F0dHJOYW1lID0gYXR0ck5hbWU7CisgICAgcmV0
dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4g
TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRh
cmdldCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENoYXJhY3Rl
cmRhdGFGbGFnLCB0YXJnZXQpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvblJl
Y29yZDo6dHlwZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNo
aWxkbGlzdCwgKCJjaGlsZGxpc3QiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGF0dHJpYnV0ZSwgKCJhdHRyaWJ1dGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGNoYXJhY3RlcmRhdGEsICgiY2hhcmFjdGVyZGF0YSIpKTsKKworICAg
IHN3aXRjaCAobV90eXBlRmxhZykgeworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6OkNoaWxkbGlz
dEZsYWc6CisgICAgICAgIHJldHVybiBjaGlsZGxpc3Q7CisgICAgY2FzZSBNdXRhdGlvblJlY29y
ZDo6QXR0cmlidXRlRmxhZzoKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTsKKyAgICBjYXNlIE11
dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzoKKyAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
cmRhdGE7CisgICAgfQorICAgIEFTU0VSVChmYWxzZSk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsK
K30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlwZUZsYWcgdHlw
ZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90eXBlRmxhZyh0eXBlRmxh
ZykKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKKyAgICAsIG1faW5Eb2N1bWVudChtX3RhcmdldC0+
aW5Eb2N1bWVudCgpKQoreworfQorCitNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKCkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNv
cmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YTEwOGQ1MzFhZjk3MjhmMzdmOWFiZTFhOGI2ODBhNjA2MTA3ZDEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25SZWNvcmRfaAorI2RlZmluZSBNdXRhdGlv
blJlY29yZF9oCisKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11
dGF0aW9uUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25SZWNvcmQ+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQ2hpbGRsaXN0
Q2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgdW5zaWduZWQgYWRkZWRDb3VudCwgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVBdHRyaWJ1dGVDaGFuZ2Vk
KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJOYW1lKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlVGV4dERhdGFDaGFu
Z2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKworICAgIHZpcnR1YWwgfk11dGF0aW9uUmVj
b3JkKCk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKyAgICBOb2RlKiB0YXJn
ZXQoKSB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQorICAgIGJvb2wgaW5Eb2N1bWVudCgpIHsg
cmV0dXJuIG1faW5Eb2N1bWVudDsgfQorCisgICAgLy8gRm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcK
KyAgICB1bnNpZ25lZCBhZGRlZENvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoaWxk
bGlzdERhdGEgPyBtX2NoaWxkbGlzdERhdGEtPmFkZGVkQ291bnQgOiAwOworICAgIH0KKyAgICBO
b2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoaWxkbGlz
dERhdGEgPyBtX2NoaWxkbGlzdERhdGEtPnJlbW92ZWROb2Rlcy5nZXQoKSA6IDA7CisgICAgfQor
ICAgIHVuc2lnbmVkIGNoaWxkbGlzdEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2No
aWxkbGlzdERhdGEgPyBtX2NoaWxkbGlzdERhdGEtPmNoaWxkbGlzdEluZGV4IDogMDsKKyAgICB9
CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0ck5hbWUoKSB7IHJldHVybiBtX2F0dHJOYW1lOyB9CisKKyAgICAvLyBOb3QgcGFydCBv
ZiB0aGUgSURMLCBidXQgdXNlZCBpbnRlcm5hbGx5IGZvciBmYXN0IHR5cGUtYmFzZWQgb3BlcmF0
aW9ucy4KKyAgICBlbnVtIE11dGF0aW9uVHlwZUZsYWcgeworICAgICAgICBDaGlsZGxpc3RGbGFn
ID0gKDEgPDwgMCksCisgICAgICAgIEF0dHJpYnV0ZUZsYWcgPSAoMSA8PCAxKSwKKyAgICAgICAg
Q2hhcmFjdGVyZGF0YUZsYWcgPSAoMSA8PCAyKQorICAgIH07CisgICAgTXV0YXRpb25UeXBlRmxh
ZyB0eXBlRmxhZygpIHsgcmV0dXJuIG1fdHlwZUZsYWc7IH0KKworcHJpdmF0ZToKKyAgICBNdXRh
dGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFnLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCk7CisK
KyAgICBzdHJ1Y3QgQ2hpbGRsaXN0RGF0YSB7CisgICAgICAgIHVuc2lnbmVkIGFkZGVkQ291bnQ7
CisgICAgICAgIFJlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZE5vZGVzOworICAgICAgICB1bnNpZ25l
ZCBjaGlsZGxpc3RJbmRleDsKKyAgICB9OworCisgICAgTXV0YXRpb25UeXBlRmxhZyBtX3R5cGVG
bGFnOworICAgIFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKKyAgICBib29sIG1faW5Eb2N1bWVudDsK
KyAgICBBdG9taWNTdHJpbmcgbV9hdHRyTmFtZTsKKyAgICBPd25QdHI8Q2hpbGRsaXN0RGF0YT4g
bV9jaGlsZGxpc3REYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZGQ5NGVkODdh
MWYxOWM3MTM3M2EwMWRjN2JhYWNiYjg5YmY3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29y
ZSB7CisgICAgaW50ZXJmYWNlIE11dGF0aW9uUmVjb3JkIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyAgICAgIHR5cGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBO
b2RlICAgICAgICAgICB0YXJnZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
ICAgICAgICBpbkRvY3VtZW50OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxpc3Qn
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICBhZGRlZENvdW50Owor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgICAgICAgcmVtb3ZlZE5vZGVzOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgY2hpbGRsaXN0SW5kZXg7
CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0dHJOYW1lOworICAgIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uVGFyZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmJhNzJkMmUzZmJmN2M4ZDUxYzUw
NmM3OTE5MTgwNTRlMDgyOGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uVGFyZ2V0LmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIK
KyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0
YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1
Y3QgTXV0YXRpb25Db250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1
bWVudD4gZCwgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3Vt
ZW50KGQpCisgICAgICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRy
PERvY3VtZW50PiBkb2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVu
ZXI7Cit9OworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAgICBy
ZXR1cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhh
c2g8RG9jdW1lbnQqPjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxp
c3RlbmVyLT5oYXNoKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11
dGF0aW9uQ29udGV4dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGEtPmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAq
Yi0+bGlzdGVuZXI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlv
bkNvbnRleHQqLCBNdXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+
IENvbnRleHRWZWN0b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVj
dG9yTWFwJiBjb250ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENv
bnRleHRWZWN0b3JNYXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVl
PE93blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwg
YWN0aXZlQ29udGV4dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3Zv
aWQgc3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250
ZXh0cygpLmlzRW1wdHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250
ZXh0ID0gYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25Q
dHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCku
dGFrZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVF
dmVudChjb250ZXh0LT5kb2N1bWVudC5nZXQoKSwgdi5yZWxlYXNlKCkpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgZW5zdXJlTXV0YXRpb25RdWV1ZWQoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24p
Cit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOwor
ICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0KCkpOworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFy
Z2V0KCktPmRvY3VtZW50KCkpOworICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQg
PSBhZG9wdFB0cihuZXcgTXV0YXRpb25Db250ZXh0KG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1l
bnQoKSwgcHJwTGlzdGVuZXIpKTsKKworICAgIHBhaXI8Q29udGV4dFZlY3Rvck1hcDo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IGNvbnRleHRWZWN0b3JNYXAoKS5hZGQoY29udGV4dC5nZXQoKSwg
MCk7CisgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSBuZXcgTXV0YXRpb25SZWNvcmRWZWN0b3I7CisgICAgICAgIGFjdGl2ZU11dGF0aW9uQ29u
dGV4dHMoKS5hcHBlbmQoY29udGV4dC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBNdXRhdGlvblJl
Y29yZFZlY3RvciogdiA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICh2LT5pc0VtcHR5
KCkgfHwgdi0+bGFzdCgpICE9IG11dGF0aW9uKQorICAgICAgICB2LT5hcHBlbmQobXV0YXRpb24p
OworfQorCitNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KCkKK3sKK30KKwordm9pZCBN
dXRhdGlvblRhcmdldDo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0
aW9uTGlzdGVuZXI+IHBycExpc3RlbmVyLCB1aW50OF90IHR5cGVNYXNrKQoreworICAgIFJlZ2lz
dGVyZWRNdXRhdGlvbkxpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihwcnBMaXN0ZW5lciwgdHlw
ZU1hc2spOworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFyZ2V0
RGF0YSgpOworICAgIHNpemVfdCBpbmRleCA9IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVyZWRM
aXN0ZW5lcik7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0ZW5l
cnMuYXBwZW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBkLT5saXN0
ZW5lcnNbaW5kZXhdLnR5cGVzIHw9IHR5cGVNYXNrOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0
Ojp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVy
KQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOwor
ICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5lcnNb
aV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMucmVt
b3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29y
ZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNTRVJUKHBycE11dGF0aW9uKTsKKworICAgIE11dGF0
aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8fCBk
LT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TXV0
YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGQtPmxpc3Rl
bmVyc1tpXS50eXBlcyAmIG11dGF0aW9uLT50eXBlRmxhZygpKQorICAgICAgICAgICAgZW5zdXJl
TXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJzW2ldLmxpc3RlbmVyLCBtdXRhdGlvbik7CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdl
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBiMWM0ZGE0NDRiNzFmZDhkNzUyYWJkNTMxOGEzNTYxMTQ2NGMzZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldF9oCisjZGVmaW5lIE11dGF0aW9u
VGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0ZW5lcjsKK2NsYXNzIE11dGF0aW9uUmVjb3JkOwor
Y2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworCitjbGFzcyBNdXRhdGlvblRhcmdldCB7CitwdWJs
aWM6CisgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRp
b25MaXN0ZW5lcj4sIHVpbnQ4X3QgdHlwZU1hc2spOworICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0
YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKik7CisKKyAgICB2b2lkIGVucXVldWVNdXRh
dGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5NdXRhdGlvblRhcmdldCgpOworCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEq
IG11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0
YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworfTsKKwordm9pZCBzcGluTXV0YXRp
b25RdWV1ZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNdXRhdGlv
blRhcmdldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDBiZTEwYzMwZDJlMGEzYjk0NDkwMGRiNWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldERhdGFfaAorI2RlZmluZSBNdXRhdGlvblRhcmdl
dERhdGFfaAorCisjaW5jbHVkZSAiUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcj4gTXV0YXRpb25MaXN0ZW5lclZlY3RvcjsKK3N0cnVjdCBNdXRhdGlvblRhcmdldERhdGEg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTXV0YXRpb25UYXJnZXREYXRhKCkg
eyB9CisgICAgfk11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgfQorCisgICAgTXV0YXRpb25MaXN0ZW5l
clZlY3RvciBsaXN0ZW5lcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBNdXRhdGlvblRhcmdldERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0
NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVn
aXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3Qg
dHlwZU1hc2spCisgICAgICAgIDogbGlzdGVuZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFz
aykgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAq
b3RoZXIubGlzdGVuZXI7CisgICAgfQorCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxp
c3RlbmVyOworICAgIHVpbnQ4X3QgdHlwZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCmluZGV4IDZjYTViMzdkMjFiOTYyYTFkYjJiMGEwNmU2M2U5MDZiYjY3
ZDNmMmQuLmZiN2ViMGNkOGIxZjg1YTE5MmE5MGQ3MWUxOTA2ZTQ2ZDcyZTdkMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJNZWRpYVF1
ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCkBAIC0xODgzLDQgKzE4ODQsOSBAQCBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJraXRT
dG9yYWdlSW5mbygpIGNvbnN0CiB9CiAjZW5kaWYKIAordm9pZCBET01XaW5kb3c6OnNwaW5NdXRh
dGlvblF1ZXVlKCkKK3sKKyAgICA6OldlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEyYWQ4
MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNlNjBkYzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2NDk4ZmNh
ZGYyM2VhMjdiNzczYjc0N2E0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDE0LDYg
KzQxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBlcmZv
cm1hbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1ZXVl
KCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDYyZjFjMzAzNjZhMWZiN2UxNDc1NWVlMTU1NGE4YTNj
MGZlYzExOTYuLjYyMjcxNTcwMjM5M2E4OTcwNDNlMWEzYzM4NDIyZGY0ZTI4ZTNjYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTgwMyw2ICs4MDMsMTEgQEAgbW9kdWxlIHdpbmRv
dyB7CiAgICAgICAgIC8vIHdpbmRvdy50b1N0cmluZygpIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxp
bmcgaW4gVjgKICAgICAgICAgW1Y4RG9Ob3RDaGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVja0RvbWFp
blNlY3VyaXR5LCBDdXN0b20sIERvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKICNlbmRp
ZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKKyAgICAgICAgLy8gRklYTUUoYWRhbWspOiBETyBO
T1QgU1VCTUlUCisgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZXhwb3NlZCB0byBKUyB1bnRp
bCBlbWJlZGRlcnMgYXJlIG1vZGlmaWVkIHRvIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUoKQorICAg
ICAgICAvLyBhdCB0aGUgZW5kIG9mIGVhY2ggdGFzay4KKyAgICAgICAgdm9pZCBzcGluTXV0YXRp
b25RdWV1ZSgpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105685</attachid>
            <date>2011-08-30 13:33:13 -0700</date>
            <delta_ts>2011-08-30 18:18:55 -0700</delta_ts>
            <desc>Merged to r94094</desc>
            <filename>bug-66079-20110830133312.patch</filename>
            <type>text/plain</type>
            <size>111634</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDBlODMwMjU2ZjU5MDZkNWVkYjk5
ZTU4ZmM5ODM4YTRkODFjMzNlLi5hNGM4MjZkYTc3ZDAzNDgyMDZmMzRjYWUzZDg5NTU4ZTFiZmNh
M2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIHI5NDA4NCBhbmQgcjk0MDg4IGFuZCByOTM5MDku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODVmZTkxMjJmMjQwZjA0Mzc1MmZjNTdkYzE1ZWY4OGQwNjAwMjZk
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitUZXN0IHRoYXQgTXV0YXRpb25MaXN0
ZW5lcnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIG11dGF0aW9u
c1sxXS5hZGRlZENvdW50IGlzIGFkZGVkQ291bnRzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5jaGls
ZGxpc3RJbmRleCBpcyBjaGlsZGxpc3RJbmRpY2VzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5pbkRv
Y3VtZW50IGlzIGluRG9jdW1lbnRGbGFnc1sxXQorUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWRDb3Vu
dCBpcyBhZGRlZENvdW50c1syXQorUEFTUyBtdXRhdGlvbnNbMl0uY2hpbGRsaXN0SW5kZXggaXMg
Y2hpbGRsaXN0SW5kaWNlc1syXQorUEFTUyBtdXRhdGlvbnNbMl0uaW5Eb2N1bWVudCBpcyBpbkRv
Y3VtZW50RmxhZ3NbMl0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlv
bnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0ucmVt
b3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWROb2Rlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRs
aXN0SW5kZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uaW5Eb2N1
bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBtdXRhdGlvbnNb
MF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQg
aXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHRleHROb2Rlc1swXQorUEFTUyBt
dXRhdGlvbnNbMF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVu
ZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENv
dW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0SW5k
aWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3Nb
MF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBsaXN0ZW5lckNhbGxlZCBpcyBm
YWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmNGNmMTk2MGY1MGE2NWJjNTQ1NDgyMDhkNzJlODc5NTNkM2I3M2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCkBAIC0wLDAg
KzEsMTQ0IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
ICA8ZGl2IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3Jr
IGFzIGV4cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAg
dmFyIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBhZGRlZENvdW50czsKKyAg
ICAgICAgdmFyIHJlbW92ZWROb2RlczsKKyAgICAgICAgdmFyIGNoaWxkbGlzdEluZGljZXM7Cisg
ICAgICAgIHZhciBtb2RpZmllZEF0dHJzOworICAgICAgICB2YXIgdGV4dE5vZGVzOworICAgICAg
ICB2YXIgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnM7CisgICAgICAgIHZhciBpbkRvY3VtZW50Rmxh
Z3M7CisKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAgICAgc3VzcGVu
ZExpc3RlbmluZygpOworICAgICAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsK
KyAgICAgICAgICAgIHZhciByZW1vdmVkSW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGluZGV4
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRlZENvdW50cy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10uYWRkZWRD
b3VudCcsICdhZGRlZENvdW50c1snICsgKGluc2VydGVkSW5kZXgrKykgKyAnXScpOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3ZlZE5vZGVzLmxlbmd0
aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5vZGVzWycgKyAocmVt
b3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGRsaXN0SW5kaWNlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10uY2hpbGRsaXN0SW5kZXgnLCAnY2hp
bGRsaXN0SW5kaWNlc1snICsgKGluZGV4SW5kZXgrKykgKyAnXScpOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBpICsgJ10uYXR0ck5hbWUn
LCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4dE5vZGVzWycgKyAodGV4
dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS5pbkRvY3VtZW50JywgJ2luRG9jdW1lbnRG
bGFnc1snICsgaSArICddJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZGVkQ291
bnRzID0gW107CisgICAgICAgICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIGNo
aWxkbGlzdEluZGljZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsKKyAg
ICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0g
W107CisgICAgICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHN1c3BlbmRMaXN0ZW5pbmcoKSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJr
aXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICBm
dW5jdGlvbiByZXN1bWVMaXN0ZW5pbmcoKSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRB
ZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCBkb2N1bWVudExpc3RlbmVyT3B0aW9ucyk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIC8v
IFRlc3QgaW5zZXJ0aW9ucywgImJ1YmJsaW5nIiwgYW5kIGRlLWR1cGluZy4KKyAgICAgICAgZG9j
dW1lbnRMaXN0ZW5lck9wdGlvbnMgPSB7Y2hpbGRsaXN0OiB0cnVlfTsKKyAgICAgICAgZG9jdW1l
bnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9w
dGlvbnMpOworICAgICAgICB2YXIgYSA9IHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYS50ZXh0Q29udGVudCA9ICdoZWxsbywgd29y
bGQnOworICAgICAgICB2YXIgYiA9IHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYWRkZWRDb3VudHMgPSBbMSwgMSwgMV07CisgICAg
ICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMCwgMCwgMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFn
cyA9IFt0cnVlLCB0cnVlLCB0cnVlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAg
ICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVy
Q2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNh
bGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoYik7CisgICAgICAgIGFkZGVkQ291bnRzID0g
WzBdOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07CisgICAgICAgIGNoaWxkbGlzdEluZGlj
ZXMgPSBbMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlXTsKKyAgICAgICAgc3Bp
bk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBz
aG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygp
OworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgYXR0
cmlidXRlIG11dGF0aW9uLgorICAgICAgICBzYW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVu
ZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAgbW9kaWZpZWRBdHRycyA9
IFsnZGF0YS1mb28nXTsKKyAgICAgICAgc2FuZGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywg
J215ZGF0YScpOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNw
aW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmco
KTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNo
YXJhY3RlcmRhdGEgbXV0YXRpb24uCisgICAgICAgIGEud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0g
W2EuZmlyc3RDaGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29k
YnllISc7CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlXTsKKyAgICAgICAgc3Bpbk11
dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91
bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOwor
ICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgZGlzY29u
bmVjdGVkIERvY3VtZW50RnJhZ21lbnQKKyAgICAgICAgdmFyIGZyYWcgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0
aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBmcmFnLndlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgdmFyIGQgPSBmcmFn
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGFk
ZGVkQ291bnRzID0gWzFdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzBdOworICAgICAg
ICBpbkRvY3VtZW50RmxhZ3MgPSBbZmFsc2VdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgp
OworICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlz
dGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3Rl
bmVyQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgc2FuZGJveC53ZWJraXRSZW1vdmVNdXRhdGlv
bkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpKTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAg
ICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZUZhbHNlKCdsaXN0ZW5l
ckNhbGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKworICAgICAgICB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwY2FjMjRkOGUwOTI1MDI5NGYwNTU1ODVlYmEyNTI1Mjg1YTBiMTlm
Li43NjRjNGQ3ZmJmYWJjZTU3Y2UyMGMyZjY0MTZlNGQ4OWRjZGNkMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTgwIEBACisyMDExLTA4LTMwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFt3b3JrIGluIHByb2dyZXNzXSBJbXBsZW1lbnQgTXV0YXRpb25MaXN0
ZW5lci9NdXRhdGlvblRhcmdldCwgYSByZXBsYWNlbWVudCBmb3IgRE9NIE11dGF0aW9uIEV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYwNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFs
bHkgaW1wbGVtZW50cyBhbiBleHBlcmltZW50YWwsIHZlbmRvci1wcmVmaXhlZCBBUEkgd2l0aCB0
aGUKKyAgICAgICAgaG9wZSBvZiBldmVudHVhbGx5IHJlcGxhY2luZyBNdXRhdGlvbkV2ZW50cy4g
VGhlIEFQSSBpcyBiYXNlZCBpbgorICAgICAgICBsYXJnZSBwYXJ0IG9uIGEgcHJvcG9zYWwgYnkg
Sm9uYXMgU2lja2luZyBpbiBhIG1lc3NhZ2UgdG8gcHVibGljLXdlYmFwcHM6CisKKyAgICAgICAg
aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1
bFNlcC8wMzY5Lmh0bWwKKworICAgICAgICBUaGF0IHRocmVhZCBpcyB2ZXJ5IGxvbmcsIGJ1dCBo
YXMgaGVscGZ1bGx5IGJlZW4gc3VtbWFyaXplZCBieQorICAgICAgICBSYWZhZWwgV2VpbnN0ZWlu
IGluIGEgcmVjZW50IG1lc3NhZ2U6CisKKyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo
aXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1bFNlcC8wNzc5Lmh0bWwKKworICAgICAg
ICBOb3RlIHRoYXQgdGhpcyBwYXRjaCBpcyBpbiBubyB3YXkgbWVhbnQgdG8gYmUgYSBjb21wbGV0
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gVGhlIGJpZ2dlc3QgbWlzc2luZyBmZWF0dXJlIGlz
IHRoZSBhY3R1YWwgZGlzcGF0Y2hpbmcKKyAgICAgICAgb2YgTXV0YXRpb25SZWNvcmQgYXJyYXlz
IHRvIE11dGF0aW9uTGlzdGVuZXJzOiB0aGUgaW5jbHVkZWQgbGF5b3V0CisgICAgICAgIHRlc3Qg
aW5zdGVhZCBjYWxscyBhICJzcGluTXV0YXRpb25RdWV1ZSIgZnVuY3Rpb24gdG8gdHJpZ2dlcgor
ICAgICAgICBub3RpZmljYXRpb25zLiBUaGlzIGlzIG5vdCBhY3R1YWxseSBtZWFudCB0byBiZSBl
eHBvc2VkIHRvIEpTLAorICAgICAgICB0aG91Z2g6IG15IGhvcGUgaXMgdG8gaW5zdGVhZCBjYWxs
IHNwaW5NdXRhdGlvblF1ZXVlIGZyb20KKyAgICAgICAgQysrLCBlaXRoZXIgZnJvbSBzb21ld2hl
cmUgaW4gV2ViQ29yZSBvciAobW9yZSBsaWtlbHkpIGluCisgICAgICAgIHRoZSBlbWJlZGRlci4g
SSBoYXZlIGEgc2VwYXJhdGUgY2hhbmdlIHdoaWNoIGltcGxlbWVudHMgdGhlCisgICAgICAgIGxh
dHRlciBpbiBDaHJvbWl1bS4KKworICAgICAgICBUaGUgb3RoZXIgbWFpbiB0aGluZyBtaXNzaW5n
IGZyb20gdGhpcyBwYXRjaCBpcyB0aGF0IE11dGF0aW9uUmVjb3JkcworICAgICAgICBhcmUgbm90
IGRpc3BhdGNoZWQgaW4gYWxsIHRoZSBwcm9wZXIgcGxhY2VzLCBlLmcuLCB0aGUgaGFuZGxpbmcg
b2YKKyAgICAgICAgaW5uZXJIVE1MIGlzIG5vdCBhcyB3ZSBob3BlIGl0IHRvIGJlLiBUaGlzIGlz
IHNpbXBseSBhIG1hdHRlciBvZgorICAgICAgICB3YW50aW5nIHRvIHB1dCB0aGlzIHBhdGNoIHVw
IHRvIGdldCBmZWVkYmFjazogaXQgc2hvdWxkbid0IGJlCisgICAgICAgIG11Y2ggd29yayB0byBh
ZGQgTXV0YXRpb25SZWNvcmQgZGlzcGF0Y2hpbmcgaW4gYWxsIHRoZSBwcm9wZXIKKyAgICAgICAg
cGxhY2VzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwK
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6Omlzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6
c2V0V3JhcHBlcik6CisgICAgICAgIEpTTXV0YXRpb25MaXN0ZW5lciBpcyB2ZXJ5IHNpbWlsYXIg
dG8gSlNFdmVudExpc3RlbmVyLAorICAgICAgICB3aXRoIGEgZmV3IHNpbXBsaWZpY2F0aW9ucy4g
IEl0cyByZWFzb24gZm9yIGV4aXN0aW5nCisgICAgICAgIGlzIHRoYXQgTm9kZS53ZWJraXRBZGRN
dXRhdGlvbkxpc3RlbmVyIG5lZWRzIHRvIGJlaGF2ZQorICAgICAgICBsaWtlIGFkZEV2ZW50TGlz
dGVuZXIsIGluIHRoYXQgZHVwbGljYXRlIGFkZGl0aW9ucyBhcmUKKyAgICAgICAgaWdub3JlZC4g
VGhpcyByZXF1aXJlcyB0aGUgb3BlcmF0b3I9PSBtZXRob2QuIFdlIGFsc28KKyAgICAgICAgd2Fu
dCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgc2FtZSBNdXRhdGlvblJlY29yZAorICAgICAgICBt
b3JlIHRoYW4gb25jZSB0byBhIGdpdmVuIGxpc3RlbmVyLCBhbmQgZm9yIHRoaXMKKyAgICAgICAg
d2UgdXNlIGEgSGFzaE1hcCwgdGh1cyB0aGUgfGhhc2h8IG1ldGhvZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlTXV0YXRp
b25MaXN0ZW5lckNhbGwpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZXRJ
bnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFj
ayk6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTmF0aXZl
VG9KU1ZhbHVlKToKKyAgICAgICAgU2luY2UgTXV0YXRpb25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBh
cmUgY3VzdG9tLCBzbworICAgICAgICBtdXN0IGJlIG11dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9u
IGFuZCByZW1vdmFsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlv
bkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVu
ZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlv
bkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmguCisgICAgICAgIChXZWJDb3JlOjpWOE11
dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVy
OjpnZXRMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxp
c3RlbmVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0
ZW5lck1hbmFnZXI6OmZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25M
aXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0
aW9uTGlzdGVuZXJNYW5hZ2VyOjpkb0ZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICBU
aGUgVjggZXF1aXZhbGVudHMgb2YgdGhlIEpTTXV0YXRpb25MaXN0ZW5lciBhYm92ZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oOgorICAg
ICAgICBHZW5lcmFsaXplZCBpbnZva2VDYWxsYmFjayB0byBtYWtlIGl0IHN1aXQgdGhlIHB1cnBv
c2VzIG9mCisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQuCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgRGlzcGF0Y2ggImNoYXJhY3RlcmRh
dGEiIG11dGF0aW9ucy4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgRGlzcGF0Y2ggImNoaWxk
bGlzdCIgbXV0YXRpb25zLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptdXRhdGlvblRhcmdl
dERhdGEpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6ZW5z
dXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bXV0YXRpb25UYXJnZXREYXRh
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5pZGw6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAg
ICAgICAgRGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdl
dERhdGEpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25MaXN0ZW5lcjo6fk11dGF0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL011dGF0
aW9uUmVjb3JkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVGbGFn
VG9OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjppbnNlcnRlZE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
OjpuZXdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6dHlwZUZsYWcp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5pZGw6IEFkZGVkLgorICAgICAgICBNdXRh
dGlvblJlY29yZHMgYXJlIGFuYWxvZ291cyB0byBFdmVudHM6IHRoZXkgaG9sZCBkYXRhCisgICAg
ICAgIGFib3V0IGEgc2luZ2xlIG11dGF0aW9uLgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25Db250ZXh0OjpNdXRhdGlv
bkNvbnRleHRQdHJIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4
dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dFZlY3Rvck1hcCk6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVNdXRhdGlvbkNvbnRleHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZU11dGF0aW9uUXVldWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFy
Z2V0Ojp+TXV0YXRpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJnZXQ6
OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
YXJnZXQ6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25UYXJnZXQ6OmVucXVldWVNdXRhdGlvbik6CisgICAgICAgICogZG9tL011dGF0aW9u
VGFyZ2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVu
UHJvcGVydHlOYW1lLmguCisgICAgICAgIE11dGF0aW9uVGFyZ2V0IGlzIGFuYWxvZ291cyB0byBF
dmVudFRhcmdldCwgYW5kIGlzIGEgbWl4aW4gZm9yCisgICAgICAgIERvY3VtZW50LCBEb2N1bWVu
dEZyYWdtZW50LCBhbmQgRWxlbWVudC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXREYXRh
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmguCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6Ok11dGF0aW9u
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6On5NdXRh
dGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3Bl
cnR5TmFtZS5oLgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXI6
OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNwaW5NdXRhdGlvblF1ZXVlKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmlk
bDoKKyAgICAgICAgTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgdG8gRE9NV2luZG93IGFyZW4ndCBy
ZWFsbHkgcGFydCBvZiB0aGUgY2hhbmdlLAorICAgICAgICBhbmQgYXJlIHNpbXBseSBhIHNoaW0g
dG8gbWFrZSBpdCBlYXN5IHRvIGRlYWwgd2l0aCBtdXRhdGlvbnMgd2hpbGUgd2UKKyAgICAgICAg
ZmlndXJlIG91dCB0aGUgdGltZS10by1ydW4gaXNzdWVzLgorCiAyMDExLTA4LTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIHNo
b3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBhbiBlbXB0eSBjb29raWUgc3RvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCA2MDJmODdjYzc1YmY3Yzg2Y2M3YWQ1NDg5NmY0N2ZlMTA0
YmY1ZDU3Li4yNDU5MjkxMzVkOWVhM2QwM2JkZTc1NWMzMmVhNjU4NWViNzdiNzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yNDUsNiArMjQ1LDggQEAKICNpbmNsdWRlICJKU01l
dGFkYXRhQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTTW91c2VFdmVudC5jcHAiCiAjaW5jbHVk
ZSAiSlNNdXRhdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVuZXIuY3Bw
IgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuY3BwIgogI2luY2x1ZGUgIkpTTmFtZWROb2Rl
TWFwLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MDY2NThmOTNkOGNlYWE0ODBkOGZiN2NjZmQyNWRhY2Q1NTI4MjVlLi40ZWU3MjAyNTU4NmYxN2E1
NmI4N2M0NzE2OGFlMDMwOGI1MjdkNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTMxNyw2ICszMTcsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBNZXRhZGF0YUNhbGxiYWNr
IFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRhdGlvbkV2ZW50IFwKKyAgICBNdXRhdGlvbkxp
c3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBcCiAgICAgTmFtZWROb2RlTWFwIFwKICAgICBO
YXZpZ2F0b3IgXAogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yIFwKQEAgLTU3NCw3ICs1NzYs
NyBAQCBET01fQ0xBU1NFUyA9IFwKIAogLlBIT05ZIDogYWxsCiAKLUpTX0RPTV9IRUFERVJTPSQo
ZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBK
U0V2ZW50VGFyZ2V0LmgsJChET01fQ0xBU1NFUzolPUpTJS5oKSkKK0pTX0RPTV9IRUFERVJTPSQo
ZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBK
U0V2ZW50VGFyZ2V0LmggSlNNdXRhdGlvbkxpc3RlbmVyLmgsJChET01fQ0xBU1NFUzolPUpTJS5o
KSkKIAogV0VCX0RPTV9IRUFERVJTIDo9CiBpZmVxICgkKGZpbmRzdHJpbmcgQlVJTERJTkdfV1gs
JChGRUFUVVJFX0RFRklORVMpKSwgQlVJTERJTkdfV1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCmluZGV4IDE2MjQwZGMzMDQ5MWQyN2ZiZDk1ODNlOTliMTkwZDA2NzExYmRk
NmUuLjc5ZGM1YzhiYzA2MWYxYzc0ZDc2ZTU4NjViZjkyZDBiZjExYmUxYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0yMzEsNiArMjMxLDcgQEAKICAgICAgICMg
Q3VzdG9tIGJpbmRpbmdzIGluIGJpbmRpbmdzL3Y4L2N1c3RvbSBleGlzdCBmb3IgdGhlc2UuCiAg
ICAgICAnLi4vZG9tL0V2ZW50TGlzdGVuZXIuaWRsJywKICAgICAgICcuLi9kb20vRXZlbnRUYXJn
ZXQuaWRsJywKKyAgICAgICcuLi9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAogICAgICAgJy4u
L2h0bWwvVm9pZENhbGxiYWNrLmlkbCcsCiAKICAgICAgICMgQmluZGluZ3Mgd2l0aCBjdXN0b20g
T2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZkNGNiOGQ2
MTYxNWRmNTQ3YzE1ODdhMWExMThhMTMzMmMzNzE5ZDQuLjIxNWI4ZDgwYjhhYzRiZjZhMGNhNWJi
NTMzZGZkOTViMDY1NmYxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExODIsNiArMTE4Miw4IEBA
CiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAgICAgICAgICAnZG9tL01v
dXNlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5pZGwnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAgICAgICAgICAnZG9tL011
dGF0aW9uUmVjb3JkLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9Ob2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVGaWx0ZXIu
aWRsJywKQEAgLTIwODQsNiArMjA4Niw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhJ
c29sYXRlZENvbnRleHQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRM
aXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVu
ZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4TlBPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNw
cCcsCkBAIC01MzAwLDYgKzUzMDUsMTIgQEAKICAgICAgICAgICAgICdkb20vTW91c2VSZWxhdGVk
RXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25U
YXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuaCcsCisgICAgICAg
ICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKICAgICAgICAgICAgICdkb20vTmFtZU5v
ZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL05hbWVOb2RlTGlzdC5oJywKICAgICAgICAg
ICAgICdkb20vTmFtZWROb2RlTWFwLmNwcCcsCkBAIC01MzQxLDYgKzUzNTIsNyBAQAogICAgICAg
ICAgICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURv
Y3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAnLAorICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oJywK
ICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCcsCiAgICAg
ICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vU2Nv
cGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1MGM3YTBmZWJiOWVjMGI1M2QwMGMzMzY4M2QyYjQ0YzQx
NzM5MmIxLi5kMWE5ZjFkNmQyMTRjM2M5NmNmNDAzZDg3ZGJkMzZmMTA1MTNmODI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
NDIyLDkgKzU0MjIsMTcgQEAKIAkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0
cmljc01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1RTlCNjc3MTA2OTdFMTMw
MEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RTlCNjc2MTA2OTdFMTMwMEM3QkIxQSAvKiBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4
MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmggKi87IH07CisJCUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFFOSAvKiBK
U011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNw
cCAqLzsgfTsKKwkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTM5
MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi87IH07CisJCUM2NzJBMkQz
MTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAv
KiBNdXRhdGlvblRhcmdldERhdGEuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNl
bGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxl
Y3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OwogCQlDNkY0MTA0NzEzMEM2RTg5MDAzOTNERTQgLyog
RW50cnlCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovOyB9OworCQlD
NkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDAxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLzsgfTsKKwkJQzZGNjcxNTQxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdl
dC5jcHAgKi87IH07CisJCUM2RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcx
NDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzZGNjcxNUMxM0UzNUVCMjAwREUzQjlD
IC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QTEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmNwcCAqLzsgfTsKKwkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovOyB9
OwogCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0IxMEQ5OUJB
RTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAqLzsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJB
RTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5p
bWF0b3IuaCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyMTcyLDkgKzEyMTgwLDIyIEBACiAJCUM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAv
KiBHbHlwaE1ldHJpY3NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5
cGhNZXRyaWNzTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1RTlCNjc2MTA2
OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRh
dGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9u
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NzJBMkQyMTNGMzRDNEEw
MDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTXV0YXRpb25UYXJnZXREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2UuY3Bw
OyBwYXRoID0gZmlsZWFwaS9FbnRyeUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
bkxpc3RlbmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlD
IC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE11dGF0aW9uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZG
NjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25SZWNvcmQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJn
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJn
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTXV0YXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcx
NEIxM0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAv
KiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5
OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzIwNiw2ICsxMzIyNyw3IEBACiAJCQkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRBIC8q
IEZpbGVBUEkgKi8sCiAJCQkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8sCiAJ
CQkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLywKKwkJCQlDNjcxREE0
NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJMzM1MDNDOUMxMDE3OUE5QTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMUFDMjI2MDIwREI2OUVBNzAwODlCNjY5
IC8qIE9mZmxpbmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMg
Ki8sCkBAIC0xNTQ1MSw2ICsxNTQ3Myw3IEBACiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0MzA1
IC8qIEV2ZW50cyAqLywKIAkJCQk4NUM1NkQwMzBBQThCQUE3MDBEOTU3NTUgLyogSFRNTCAqLywK
IAkJCQk4NUU3MTEzRDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCisJCQkJQzY3MURB
NUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTg1MzhGMDU3MEFENzIyQjkw
MDZBODFEMSAvKiBSYW5nZXMgKi8sCiAJCQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8qIFN0
eWxlU2hlZXRzICovLAogCQkJCTg1QTBGOThFMEFDNzE2RjQwMDE2MUZEQyAvKiBTVkcgKi8sCkBA
IC0xODU2NSw2ICsxODU4OCw4IEBACiAJCQkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpT
RXhjZXB0aW9uQmFzZS5oICovLAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAv
KiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKKwkJCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLywKKwkJCQlDNkY2NzE1QjEzRTM1RUIyMDBE
RTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAogCQkJCTE0
Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCkBA
IC0xOTIyNCw2ICsxOTI0OSwyMiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAw
OwogCQl9OworCQlDNjcxREE0NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUM2NzFEQTM4MTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJCQlDNjcxREEzOTEzRTM3MTQ5
MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBNdXRh
dGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUM2NzFEQTVEMTNFMzcx
QjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTk5ODEsNiArMjAwMjIs
MTQgQEAKIAkJCQk4NTAzMUIzMzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAg
Ki8sCiAJCQkJODUwMzFCMzQwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAqLywK
IAkJCQk5M0VFQzFGMzA5QzI4Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8sCisJ
CQkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLywKKwkJ
CQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8sCisJ
CQkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJ
CQlDNkY2NzE0MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCQlD
NkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovLAorCQkJCUM2
RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZG
NjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEy
RDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovLAogCQkJCUJDRjM0
QTM2MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2
MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLywKQEAgLTIwMDQ1LDYgKzIwMDk0LDcg
QEAKIAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2Vy
LmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVn
aXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQlBNzZFNUY3RTEzNUUwRENGMDBBNjk4
MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oICovLAogCQkJCTQ5OThBRUM0MTNGOUQwRUEw
MDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovLAogCQkJCTQ5OThB
RUM1MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwg
Ki8sCkBAIC0yMjEwNCw2ICsyMjE1NCw4IEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRB
IC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURB
MkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMx
RkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNv
cmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05h
bWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5
IC8qIEpTTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5
MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjQ3NSw2ICsyMjUyNyw4IEBACiAJCQkJOTMzMDlERkMwOTlFNjQ5MjAwNTZFNTgxIC8qIE1vdmVT
ZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4
NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEEw
QTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2
RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8q
IE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI1MCw2ICsyNjMw
NCwxMCBAQAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1OURFNzkwNDEzRjE2QzdGMDAwN0ZDREYgLyogSmF2YU1l
dGhvZEpTQy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3
MTVDMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2RjI1MkMxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDIzQTEyNTEzRjVG
QTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTJhNjUwNzM4
MmJlYzQ3NGQ0NjJjODNjMTI1NTIzOGUxMzg3ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDEz
OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25M
aXN0ZW5lci5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJKU05v
ZGUuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNNdXRhdGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIoSlNP
YmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKQorICAgIDogbV93cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCks
IHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKK3sKKyAgICBp
ZiAod3JhcHBlcikKKyAgICAgICAgbV9qc0Z1bmN0aW9uLnNldE1heUJlTnVsbCgqbV9pc29sYXRl
ZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVCghZnVuY3Rpb24pOworCit9CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6fkpTTXV0
YXRpb25MaXN0ZW5lcigpCit7Cit9CisKK3ZvaWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNz
T3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRy
PE11dGF0aW9uUmVjb3JkVmVjdG9yPiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisgICAgQVNT
RVJUKG11dGF0aW9ucyk7CisgICAgQVNTRVJUKCFtdXRhdGlvbnMtPmlzRW1wdHkoKSk7CisKKyAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisKKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IG1fanNGdW5jdGlvbi5n
ZXQoKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7
CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRoZSB3aW5kb3cgbXVzdCBzdGlsbCBiZSBhY3Rp
dmUgaW4gaXRzIGZyYW1lLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTkyMT4uCisgICAgLy8gRklYTUU6IEEgYmV0dGVyIGZpeCBmb3IgdGhpcyBtYXkgYmUg
dG8gY2hhbmdlIERPTVdpbmRvdzo6ZnJhbWUoKSB0byBub3QgcmV0dXJuIGEgZnJhbWUgdGhlIGRl
dGFjaGVkIHdpbmRvdyB1c2VkIHRvIGJlIGluLgorICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkg
IT0gd2luZG93LT5pbXBsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSXMgdGhp
cyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPworICAgIFNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CisgICAgSlNWYWx1ZSBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworCisgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVu
dEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkg
eworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0gSlNWYWx1ZSgpOworICAgICAgICBjYWxs
VHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICB9CisKKyAgICBp
ZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIFJlZlB0cjxNdXRhdGlvbkxp
c3RlbmVyPiBwcm90ZWN0KHRoaXMpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11
dGF0aW9uTGlzdDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNp
emUoKTsgKytpKQorICAgICAgICAgICAgbXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdChpKS5nZXQoKSkpOworCisgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25MaXN0KSk7CisKKyAgICAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3Qg
OiBnbG9iYWxPYmplY3QpOworCisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3Rh
cnQoKTsKKyAgICAgICAgaWYgKGhhbmRsZUV2ZW50RnVuY3Rpb24pCisgICAgICAgICAgICBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBqc0Z1bmN0aW9uLCBhcmdzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBGSVhNRShhZGFtayk6IEZpZ3VyZSBvdXQgd2hhdCB0aGUgdGFyZ2V0IHNob3VsZCBi
ZTsgcHJvYmFibHkgdGhlCisgICAgICAgICAgICAvLyBEb2N1bWVudCBvciBET01XaW5kb3c/Cisg
ICAgICAgICAgICBKU1ZhbHVlIGN1cnJlbnRUYXJnZXQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbXV0YXRpb25zLT5hdCgwKS0+dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3Vy
cmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0
Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisKK2Jvb2wg
SlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIGxp
c3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlvbkxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3RlbmVyKTsK
KyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9qc0Z1bmN0
aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQoreworICAgIHJl
dHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1bmN0aW9u
LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZhMTZjOWYz
Nzc1ZmMzMmE5OWE2ZWU3YzkyZDc1OGI3YjJkZTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBKU011
dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVk
ZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIEpT
RE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgTXV0
YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNNdXRhdGlv
bkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3cmFwcGVy
LCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlvbkxpc3Rl
bmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxpc3Rl
bmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBET01XcmFw
cGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29ybGQu
Z2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBt
X3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFwcGVyLnNl
dChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11dGF0
aW9uUmVjb3JkVmVjdG9yPik7CisKK3ByaXZhdGU6CisgICAgSlNNdXRhdGlvbkxpc3RlbmVyKEpT
Qzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpOworCisgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxK
U0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpK
U09iamVjdD4gbV93cmFwcGVyOworCisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29s
YXRlZFdvcmxkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNN
dXRhdGlvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGVhYTVmODgwMDU5ZjkzNDJmMmQ5NThiZDk4ODI4
YTFmNmVlMGJkNS4uYzMyOThlYmIzOTgwNzYxOTYwM2MzODc0ZWE0MGNjMmJmZjZhYzRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTE5MSw2ICsxOTEsNTAgQEAgRU5ECiAgICAgcmV0dXJuIEBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJJbXBsOwogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbAoreworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5nID0g
KCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkdHlwZU1h
c2tIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIi
OworICAgIG15ICRwcmVmaXhlZEZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVu
Y3Rpb25OYW1lKTsKKworICAgICRpbXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7
CisgICAgJGltcGxJbmNsdWRlc3siSlNNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBt
eSBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCA9ICgpOworCisgICAgaWYgKCRmdW5jdGlv
bk5hbWUgZXEgImFkZCIpIHsKKyAgICAgICAgcHVzaChAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVy
SW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUganNUeXBlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwor
ICAgIGlmICghanNUeXBlcy5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBhc09i
amVjdChqc1R5cGVzKTsKKyAgICB1aW50OF90IHR5cGVNYXNrID0gMDsKKyAgICBKU1ZhbHVlIGpz
Q2hpbGRsaXN0ID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNo
aWxkbGlzdCIpKTsKKyAgICBpZiAoanNDaGlsZGxpc3QuaXNCb29sZWFuKCkgJiYganNDaGlsZGxp
c3QuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hp
bGRsaXN0RmxhZzsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRyaWJ1
dGUuaXNCb29sZWFuKCkgJiYganNBdHRyaWJ1dGUuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBl
TWFzayB8PSBNdXRhdGlvblJlY29yZDo6QXR0cmlidXRlRmxhZzsKKyAgICBKU1ZhbHVlIGpzQ2hh
cmFjdGVyZGF0YSA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJj
aGFyYWN0ZXJkYXRhIikpOworICAgIGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkgJiYg
anNDaGFyYWN0ZXJkYXRhLmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRp
b25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOworRU5ECisgICAgfQorCisgICAgcHVzaChAR2Vu
ZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUgbGlzdGVuZXIg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpbXAtPiR7
cHJlZml4ZWRGdW5jdGlvbk5hbWV9TXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVuZXI6
OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGN1cnJlbnRXb3JsZChleGVj
KSkke3Bhc3NSZWZQdHJIYW5kbGluZ30ke3R5cGVNYXNrSGFuZGxpbmd9KTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworRU5ECisgICAgcmV0dXJuIEBHZW5lcmF0
ZU11dGF0aW9uTGlzdGVuZXJJbXBsOworfQorCisKICMgUGFyYW1zOiAnaWRsRG9jdW1lbnQnIHN0
cnVjdAogc3ViIEdlbmVyYXRlTW9kdWxlCiB7CkBAIC0yMDI2LDYgKzIwNzAsMTAgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgImFkZCIpKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3Zl
RXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgInJlbW92ZSIpKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0
QWRkTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoImFkZCIpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0UmVtb3Zl
TXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoInJlbW92ZSIpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAkYXJnc0luZGV4ID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQxOGY3
OTFmYzcwZDdmNzFkNjliOGU4OGYyM2YzNmQ2YTIwLi4wYTZhMjM3NzY3NDQ5NjQ4YTc0NDkwOWIx
MTlhNWI3NTU0YTUwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDg0LDYgKzQ4NCwxMiBAQCBzdWIgR2V0SW50ZXJu
YWxGaWVsZHMKICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJldmVudExpc3Rl
bmVyQ2FjaGVJbmRleCIpOwogICAgIH0KIAorICAgIGlmICgkbmFtZSBlcSAiRG9jdW1lbnQiIHx8
CisgICAgICAgICRuYW1lIGVxICJEb2N1bWVudEZyYWdtZW50IiB8fAorICAgICAgICBJc1N1YlR5
cGUoJGRhdGFOb2RlLCAiRWxlbWVudCIpKSB7CisgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFs
RmllbGRzLCAibXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgiKTsKKyAgICB9CisKICAgICBpZiAo
JG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVs
ZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAgICAgfQpAQCAtMTE0MCw2ICsxMTQ2
LDUzIEBAIEVORAogRU5ECiB9CiAKK3N1YiBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFj
aworeworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9IHNoaWZ0OworICAgIG15ICRsb29rdXBUeXBlID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIp
ID8gIk9yQ3JlYXRlIiA6ICJPbmx5IjsKKyAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5nID0gKCRm
dW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkaGlkZGVuRGVw
ZW5kZW5jeUFjdGlvbiA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICJjcmVhdGUiIDogInJl
bW92ZSI7CisgICAgbXkgJHR5cGVNYXNrQXJnID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8g
IiwgdHlwZU1hc2siIDogIiI7CisgICAgbXkgJHByZWZpeGVkRnVuY3Rpb25OYW1lID0gIndlYmtp
dCIgLiB1Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworCisgICAgJGltcGxJbmNsdWRlc3siTXV0YXRp
b25SZWNvcmQuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJWOE11dGF0aW9uTGlzdGVuZXIu
aCJ9ID0gMTsKKworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiAke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0aW9uTGlzdGVuZXJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7
aW1wbENsYXNzTmFtZX0uJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyKCkiKTsK
KyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6Omdl
dE11dGF0aW9uTGlzdGVuZXIoYXJnc1swXSwgTGlzdGVuZXJGaW5kJHtsb29rdXBUeXBlfSk7Cisg
ICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK0VORAor
ICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKKyAgICB1aW50OF90IHR5cGVNYXNrID0gMDsKKyAgICBpZiAoIWlz
VW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFyZ3NbMV0tPklzT2JqZWN0KCkpIHsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMV0pOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoaWxkbGlz
dCA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY2hpbGRsaXN0IikpOworICAgICAgICBp
ZiAoIXY4Q2hpbGRsaXN0LklzRW1wdHkoKSAmJiB2OENoaWxkbGlzdC0+Qm9vbGVhblZhbHVlKCkp
CisgICAgICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hpbGRsaXN0RmxhZzsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhBdHRyaWJ1dGUgPSBvYmplY3QtPkdldCh2
ODo6U3RyaW5nOjpOZXcoImF0dHJpYnV0ZSIpKTsKKyAgICAgICAgaWYgKCF2OEF0dHJpYnV0ZS5J
c0VtcHR5KCkgJiYgdjhBdHRyaWJ1dGUtPkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlw
ZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7CisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHY4Q2hhcmFjdGVyZGF0YSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5l
dygiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICAgICAgaWYgKCF2OENoYXJhY3RlcmRhdGEuSXNFbXB0
eSgpICYmIHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkpCisgICAgICAgICAgICB0eXBl
TWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZsYWc7CisgICAgfQorRU5ECisg
ICAgfQorICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAgICBWOCR7aW1wbENs
YXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpLT4ke3ByZWZpeGVkRnVuY3Rpb25OYW1l
fU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIke3Bhc3NSZWZQdHJIYW5kbGluZ30ke3R5cGVNYXNr
QXJnfSk7CisgICAgJHtoaWRkZW5EZXBlbmRlbmN5QWN0aW9ufUhpZGRlbkRlcGVuZGVuY3koYXJn
cy5Ib2xkZXIoKSwgYXJnc1swXSwgVjgke2ltcGxDbGFzc05hbWV9OjptdXRhdGlvbkxpc3RlbmVy
Q2FjaGVJbmRleCk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworRU5ECit9CisK
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KIHsKICAgICBteSAkbnVtUGFy
YW1ldGVycyA9IHNoaWZ0OwpAQCAtMTI0NSw2ICsxMjk4LDE0IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uQ2FsbGJhY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICgkbmFtZSBlcSAi
d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxp
c3RlbmVyQ2FsbGJhY2soJGltcGxDbGFzc05hbWUsICJhZGQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0gZWxzaWYgKCRuYW1lIGVxICJ3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyIikgewor
ICAgICAgICBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFjaygkaW1wbENsYXNzTmFtZSwg
InJlbW92ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKQEAgLTMxNjAsNyArMzIyMSw4IEBA
IG15ICVub25fd3JhcHBlcl90eXBlcyA9ICgKICAgICAnSURCS2V5JyA9PiAxLAogICAgICdPcHRp
b25zT2JqZWN0JyA9PiAxLAogICAgICdEYXRlJyA9PiAxLAotICAgICdNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyJyA9PiAxCisgICAgJ01lZGlhUXVlcnlMaXN0TGlzdGVuZXInID0+IDEsCisgICAgJ011
dGF0aW9uTGlzdGVuZXInID0+IDEKICk7CiAKIApAQCAtMzI2MSw2ICszMzIzLDExIEBAIHN1YiBO
YXRpdmVUb0pTVmFsdWUKICAgICAgICAgcmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6
OlZhbHVlPihzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcio+KCR7dmFsdWV9KS0+
Z2V0TGlzdGVuZXJPYmplY3QoaW1wLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSI7CiAgICAgfQogCisgICAgaWYgKCR0eXBlIGVx
ICJNdXRhdGlvbkxpc3RlbmVyIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOE11dGF0aW9u
TGlzdGVuZXIuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8
djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIqPigke3ZhbHVlfSktPmdl
dExpc3RlbmVyT2JqZWN0KCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIjsK
KyAgICB9CisKICAgICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAg
ICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuICIkdmFs
dWUtPmRlc2VyaWFsaXplKCkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKaW5kZXggMDg2YTNhMjE5NjFkYzI4MDlhMjA3Y2ZiYWU3ZjUyZDA3ZTNkZjgxYy4u
ODYwZjAxM2M3MDU1NzY4Y2NiMWUxNzJkZGVkYzRjYWJlNmVkZmZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBACiAjaW5j
bHVkZSAiVjhMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlY4TWVkaWFTdHJlYW0uaCIKICNpbmNsdWRl
ICJWOE1lc3NhZ2VDaGFubmVsLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisj
aW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlY4TmFtZWRO
b2RlTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29u
ZGl0aW9uLmgiCkBAIC00ODEsNiArNDgzLDE5IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
VjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhCiAj
ZW5kaWYKIH0KIAorUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOERPTVdyYXBwZXI6Omdl
dE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIExpc3RlbmVyTG9v
a3VwVHlwZSBsb29rdXApCit7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9
IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobG9va3VwID09IExpc3RlbmVyRmluZE9ubHkpCisg
ICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcih2YWx1
ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxQcm90b3R5cGUgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7
CisgICAgaWYgKGdsb2JhbE9iamVjdFByb3RvdHlwZUlzRE9NV2luZG93KGdsb2JhbFByb3RvdHlw
ZSkpCisgICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVh
dGVXcmFwcGVyKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKwogI2lmIEVOQUJMRShYUEFUSCkK
IC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVzCiBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBWOERP
TVdyYXBwZXI6OmdldFhQYXRoTlNSZXNvbHZlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IFY4UHJveHkqIHByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
aAppbmRleCBlYjIyMDUxNzJiM2M5NGIwOGFlNjdmNTU0YjIwYWVlMjg4MTQ5ZjkwLi45ZmYwNzVk
YmI5NDkwMTgwZTFmMTQ2YzVjMTc1MWRhOTdhODRmNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgRE9NV2luZG93OwogICAgIGNsYXNzIEV2ZW50VGFyZ2V0OwogICAgIGNs
YXNzIEZyYW1lOworICAgIGNsYXNzIE11dGF0aW9uTGlzdGVuZXI7CiAgICAgY2xhc3MgTm9kZTsK
ICAgICBjbGFzcyBWOFByb3h5OwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CkBAIC04OSw2ICs5
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0Kik7CiAKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcih2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29r
dXBUeXBlIGxvb2t1cCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGdldE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIExpc3RlbmVyTG9v
a3VwVHlwZSk7CiAKICNpZiBFTkFCTEUoWFBBVEgpCiAgICAgICAgIC8vIFhQYXRoLXJlbGF0ZWQg
dXRpbGl0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWUuaAppbmRleCBkZWJhNGE1MWQ3NzgwNzkwOTMzMjY3YjkyZDFmNjQwMmEyNzRmMDNm
Li5kM2FiYjAxZmRjOGJlZWIzN2YwMTlhZWJmY2JkODc0Yjg5ZThkOWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTM5LDYg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYob2JqZWN0UHJvdG90eXBlKSBcCiAg
ICAgVihsaXN0ZW5lcikgXAogICAgIFYoYXR0cmlidXRlTGlzdGVuZXIpIFwKKyAgICBWKG11dGF0
aW9uTGlzdGVuZXIpIFwKICAgICBWKHNjcmlwdFN0YXRlKSBcCiAgICAgVihkZXZ0b29sc0luamVj
dGVkU2NyaXB0KSBcCiAgICAgVihzbGVlcEZ1bmN0aW9uKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmQwMmYy
MGEwODQ4MmQwNTk0OGM2ZDY5YTBhY2Q0ZWM0MGUyOWExCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsx
LDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
OE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJWOEN1c3RvbVZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIlY4R0NDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIgorI2luY2x1
ZGUgIlY4TXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hGdW5jdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOE11dGF0aW9u
TGlzdGVuZXI6OlY4TXV0YXRpb25MaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVu
ZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIDogbV9saXN0
ZW5lcih2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGxpc3RlbmVyKSkKKyAgICAsIG1f
d29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkKK3sKKyAgICBtX2xpc3RlbmVyLk1ha2VXZWFrKHRo
aXMsICZ3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKTsKK30KKworVjhNdXRhdGlvbkxpc3Rl
bmVyOjp+VjhNdXRhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICBpZiAoIW1fbGlzdGVuZXIuSXNFbXB0
eSgpKSB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Y2xlYXJXcmFwcGVyKGxpc3RlbmVyKTsKKyAgICB9Cisg
ICAgZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVy
Ojp3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4s
IHZvaWQqIHBhcmFtZXRlcikKK3sKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVyKj4ocGFyYW1ldGVyKTsKKyAgICBsaXN0ZW5l
ci0+ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVy
OjpkaXNwb3NlTGlzdGVuZXJPYmplY3QoKQoreworICAgIGlmICghbV9saXN0ZW5lci5Jc0VtcHR5
KCkpIHsKKyAgICAgICAgbV9saXN0ZW5lci5EaXNwb3NlKCk7CisgICAgICAgIG1fbGlzdGVuZXIu
Q2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPE11dGF0aW9uUmVj
b3JkVmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRyPE11dGF0aW9uUmVjb3JkVmVj
dG9yPiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisKKyAgICAvLyBEb24ndCByZWVudGVyIFY4
IGlmIGV4ZWN1dGlvbiB3YXMgdGVybWluYXRlZCBpbiB0aGlzIGluc3RhbmNlIG9mIFY4LgorICAg
IGlmIChjb250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VSVCghbXV0YXRpb25zLT5pc0VtcHR5
KCkpOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChjb250ZXh0LCBtX3dvcmxkQ29u
dGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworICAgIHY4OjpMb2NhbDx2
ODo6QXJyYXk+IGpzTXV0YXRpb25zID0gdjg6OkFycmF5OjpOZXcobXV0YXRpb25zLT5zaXplKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKKyAg
ICAgICAganNNdXRhdGlvbnMtPlNldCh2ODo6SW50ZWdlcjo6TmV3KGkpLCB0b1Y4KG11dGF0aW9u
cy0+YXQoaSkuZ2V0KCkpKTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
CisgICAgICAgIGpzTXV0YXRpb25zCisgICAgfTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgYm9vbCBpZ25vcmVkUmV0dXJu
VmFsdWUgPSBmYWxzZTsKKyAgICBpbnZva2VDYWxsYmFjayhsaXN0ZW5lciwgMSwgYXJndiwgaWdu
b3JlZFJldHVyblZhbHVlLCBjb250ZXh0KTsKK30KKwordW5zaWduZWQgVjhNdXRhdGlvbkxpc3Rl
bmVyOjpoYXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8VjhNdXRhdGlvbkxpc3RlbmVy
Kj46Okhhc2g6Omhhc2godGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGM5MmU4NDJlYTU2M2QxNmU5MzkzZThiMjE5NWZhYzNjN2U4YTYxNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFY4TXV0
YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBWOE11dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgTXV0YXRpb25M
aXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5l
cj4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250
ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFY4TXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgd29ybGRDb250ZXh0KSk7CisgICAgfQor
ICAgIHZpcnR1YWwgflY4TXV0YXRpb25MaXN0ZW5lcigpOworCisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11dGF0aW9uUmVj
b3JkVmVjdG9yPik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25M
aXN0ZW5lciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisgICAgdmlydHVhbCB1
bnNpZ25lZCBoYXNoKCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0TGlzdGVuZXJP
YmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3
KG1fbGlzdGVuZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUm
KTsKKyAgICBzdGF0aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bvc2VMaXN0ZW5lck9iamVj
dCgpOworCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9saXN0ZW5lcjsKKyAgICBX
b3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRhMWJiNTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMyMjcxNDk4OTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJN
YW5hZ2VyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
cl9oCisjZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorCisjaW5jbHVkZSAiVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKwor
I2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZvciBWOE11dGF0aW9uTGlzdGVu
ZXIgb2JqZWN0cyB0aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMgb2Ygdjg6Ok9iamVjdCB0byBz
cGVlZCB1cCBsb29rdXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmluZFdyYXBwZXIo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNv
bnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBkb0ZpbmRXcmFwcGVyKHY4OjpM
b2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4
OjpWYWx1ZT4pOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFwcGVyKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gbGlzdGVuZXJPYmplY3QpCisgICAgeworICAgICAgICBsaXN0ZW5lck9iamVjdC0+
RGVsZXRlSGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIo
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBNdXRhdGlvbkxpc3RlbmVyKiBkb0Zp
bmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICBB
U1NFUlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3Bl
IHNjb3BlOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciA9IG9iamVjdC0+
R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7
CisgICAgICAgIGlmIChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlzdGVuZXIqPih2ODo6RXh0ZXJu
YWw6OlVud3JhcChsaXN0ZW5lcikpOworICAgIH0KK307CisKK2lubGluZSBQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdy
YXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJUKHY4OjpDb250
ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0aW9uTGlzdGVuZXIqIHdyYXBw
ZXIgPSBkb0ZpbmRXcmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHdyYXBwZXJQdHIg
PSBWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdvcmxkQ29udGV4dEhhbmRsZShV
c2VDdXJyZW50V29ybGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikKKyAgICAgICAgb2JqZWN0LT5T
ZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25MaXN0ZW5lcigpLCB2
ODo6RXh0ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOworCisgICAgcmV0dXJuIHdyYXBw
ZXJQdHIucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VXRpbGl0aWVzLmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMxYTNmYjg3NDIyMDAxMDdiMGUy
NDRiOGU1Li44NmU0YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMyOGIzNTIyNDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC02Niw2ICs2Niw3IEBA
IFY4TG9jYWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8gQSB2YWx1ZSBjYW4gYmUgYWRk
ZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRl
cGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5h
bEZpZWxkQ291bnQoKSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNh
Y2hlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwogICAgIGlmIChjYWNo
ZS0+SXNOdWxsKCkgfHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY2FjaGUgPSB2
ODo6QXJyYXk6Ok5ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggMTFmMzA5YjY5OTRhMTA4
OTAwMmExMTJiNWZmMDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRlYmM3MmRkZTE1ZGE2MWVhMzRk
NDgxMDJjMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02MywxNCArNjMsMTQgQEAgdm9p
ZCBWOEN1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgIGludm9rZUNhbGxiYWNr
KG1fY2FsbGJhY2ssIDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5nZXQoKSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hl
cjsKICAgICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAgICB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIGlmIChjYWxsYmFjay0+SXNG
dW5jdGlvbigpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPjo6TmV3KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3QoY2FsbGJhY2sp
KTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpO
ZXcodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CiAgICAgfSBlbHNl
IGlmIChjYWxsYmFjay0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBoYW5kbGVFdmVudEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImhhbmRsZUV2ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbi0+SXNG
dW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgyMWM2NTM1NzU3YzM0ZDVhMmNj
M2MxMDE1NWM4NTk1NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkxNmQ1MGZjNGQ5ZWQyYTAyYjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21Wb2lkQ2FsbGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogfTsKIAogLy8g
UmV0dXJucyBmYWxzZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRo
cmV3IGV4Y2VwdGlvbikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwg
Ym9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7Citib29sIGludm9rZUNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBi
b29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmlu
ZGV4IDc0MDFjMjgwNWYyOTgwZjQ4MTMwYmEwMDc0NWU2NzIxMmFiMjg4ZmUuLmJiNDYwNGIyMzY2
NzkyMmExMmMzYWJhZDc1YTRmOWZkZWY3YmJmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5jcHAKQEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCIK
IAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2lu
Y2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKQEAgLTE5OCw2ICsyMDAsMTAgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlm
aWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRvY3VtZW50
KCksIHRoaXMpOwogI2VuZGlmCisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9
IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQodGhpcyk7CisgICAgaWYgKHBh
cmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgdG9F
bGVtZW50KHBhcmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgb3du
ZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOwogfQogCiB2b2lkIENoYXJh
Y3RlckRhdGE6OmNoZWNrQ2hhckRhdGFPcGVyYXRpb24odW5zaWduZWQgb2Zmc2V0LCBFeGNlcHRp
b25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAzZWE0OTkz
NjkzNTc0OWIxMzE5MmI3NjM0MWQ1MDliMTUzOGU0YzBjLi44OWJlMDc3NTJkMjUwYTFkODc4ZmM0
NzBhNTczNGU3YmM0MzNjYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDb250
YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0zNSwxMSArMzcsMTMgQEAKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUm9vdElu
bGluZUJveC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMDk1LDYgKzEwOTks
MjAgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlKiBjaGls
ZCkKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9j
dW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAorICAgIGlmIChjLT5wYXJlbnROb2RlKCkpIHsK
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGluc2VydGVkTm9kZXM7CisgICAgICAgIGlu
c2VydGVkTm9kZXMuYXBwZW5kKGMpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAg
ICAgIGZvciAoTm9kZSogbiA9IGMtPnByZXZpb3VzU2libGluZygpOyBuOyBuID0gbi0+cHJldmlv
dXNTaWJsaW5nKCkpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5n
ZWQoYy0+cGFyZW50Tm9kZSgpLCAxIC8qYWRkZWRDb3VudCovLCAwIC8qcmVtb3ZlZE5vZGVzKi8s
IGluZGV4KTsKKyAgICAgICAgaWYgKGMtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQor
ICAgICAgICAgICAgdG9FbGVtZW50KGMtPnBhcmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbiht
dXRhdGlvbik7CisgICAgICAgIGVsc2UgaWYgKGMtPnBhcmVudE5vZGUoKS0+bm9kZVR5cGUoKSA9
PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
RG9jdW1lbnRGcmFnbWVudCo+KGMtPnBhcmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbihtdXRh
dGlvbik7CisgICAgICAgIGMtPm93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0
aW9uKTsKKyAgICB9CisKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNM
aXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5PREVJTlNFUlRFRF9MSVNURU5FUikpCiAgICAgICAg
IGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CiAKQEAgLTEx
MTYsNiArMTEzNCwyMCBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhO
b2RlKiBjaGlsZCkKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAorICAgIGlmIChjLT5wYXJlbnRO
b2RlKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsKKyAg
ICAgICAgcmVtb3ZlZE5vZGVzLmFwcGVuZChjKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjLT5wcmV2aW91c1NpYmxpbmcoKTsgbjsgbiA9IG4t
PnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgUmVmUHRy
PE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxp
c3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMCAvKmFkZGVkQ291bnQqLywgU3RhdGljTm9kZUxp
c3Q6OmFkb3B0KHJlbW92ZWROb2RlcyksIGluZGV4KTsKKyAgICAgICAgaWYgKGMtPnBhcmVudE5v
ZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgdG9FbGVtZW50KGMtPnBhcmVudE5v
ZGUoKSktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgICAgIGVsc2UgaWYgKGMtPnBh
cmVudE5vZGUoKS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKQor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGMtPnBhcmVudE5vZGUo
KSktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgICAgIGMtPm93bmVyRG9jdW1lbnQo
KS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICB9CisKICAgICAvLyBkaXNwYXRjaCBw
cmUtcmVtb3ZhbCBtdXRhdGlvbiBldmVudHMKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRv
Y3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5PREVSRU1PVkVEX0xJU1RFTkVS
KSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5vZGUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTMyOTg1MmQwZTBiZDAxNGJhY2ExMTkxMzg5
MGI3OWZmMGRmZWI1ZC4uYmM5YjUyY2ExOGZiZmZkMjNjZTBjMzcyMzQzOWIzYTVmMjk1MmE5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgog
I2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEu
aCIKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNy
ZW1lbnRlci5oIgogI2luY2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCkBAIC01MDkxLDQg
KzUwOTIsMTEgQEAgRG9jdW1lbnRMb2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogICAg
IHJldHVybiBsb2FkZXI7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnQ6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0RGF0YSkK
KyAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRpb25UYXJn
ZXREYXRhKTsKKyAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdj
MDc1MGRhZjgwM2JjMmY1NWUzYzY0YTNiNDVlNC4uZDExNGE5ZmUzYmRhZTIzNzY3ZmRjNmU3YzM2
YWE0YWMxM2FkMmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91
dFR5cGVzLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJQYWdlVmlz
aWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTEwMyw2ICsxMDQsNyBAQCBjbGFzcyBNZWRpYUNh
blN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlN
YXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKK2NsYXNzIE11dGF0
aW9uVGFyZ2V0RGF0YTsKIGNsYXNzIE5vZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CiBj
bGFzcyBQYWdlOwpAQCAtMjA2LDcgKzIwOCw3IEBAIGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3Rl
bmNlIHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHksIERlZmVyUmVjYWxjU3R5bGUgfTsKIAotY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJl
ZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CitjbGFzcyBEb2N1bWVudCA6
IHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMg
TXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewpAQCAtMTEwMSw2
ICsxMTAzLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1f
eG1sVmVyc2lvbiA9IFN0cmluZygpOyB9CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0
YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0
KCk7IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJn
ZXREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyOwogCkBAIC0xNDA5LDYgKzE0MTQsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICBSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKKworICAgIE93blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25U
YXJnZXREYXRhOwogfTsKIAogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5
IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBp
bmxpbmUgdGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDVjNjgzOGVjNWY1ZjA0MzUx
MThhODVmNmQxNGYyZWEzMDkwMWQwMzYuLjE3ZDk0MzMwYzNlZDRkN2UwMzU0YjA5OTA5ZTY4N2Yw
ZWExNDY3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjQ1LDYgKzI0NSwxMSBAQCBt
b2R1bGUgY29yZSB7CiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlv
bkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBl
cyk7CisgICAgICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlv
bkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JK
RUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5k
bGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlz
dGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5l
ciBvbmJsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggMjNk
OGMyMDQzZTM4YThkYjE4ZjJmY2RlY2RmNDAyZDM1YjFkYmM4Ni4uMmFiMzc5MjhkYTUwZDg1NGNk
MDU5ZmIyYTUxM2E3OWNmYWFiM2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEu
aCIKICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtOTAsNCArOTEsMTEgQEAgYm9vbCBEb2N1bWVudEZy
YWdtZW50OjpwYXJzZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIEYKICNlbmRpZgogfQogCitNdXRhdGlvblRhcmdldERhdGEqIERvY3VtZW50RnJhZ21l
bnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgaWYgKCFtX211dGF0aW9uVGFy
Z2V0RGF0YSkKKyAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0
YXRpb25UYXJnZXREYXRhKTsKKyAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDZiZjUyZjFh
Nzg0YTEyMWM5YTNiZDA4YzgwOGM4MjM2MmEwNGZmMzAuLjZlZmQ3NzAzNGE1NDY2YjgzYmM5ZDRk
MGI5Y2EwMjRmMjA5ZTk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApA
QCAtMjYsMTAgKzI2LDE0IEBACiAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVk
ZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJn
ZXQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIE11
dGF0aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250
YWluZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC00Miwx
MCArNDYsMTUgQEAgcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBNdXRh
dGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRpb25U
YXJnZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2Rl
KGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUp
IGNvbnN0OworCisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdl
dERhdGE7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5pZGwKaW5kZXggODgyYjYyZGIzOWViN2YyZTA1MDQ3ODIwNDkyYjdlOTM2MWE4ZWRlZC4u
Yjc1Yjg1ZmJkNmQyNTIwZmQ0Y2I2ZjBjN2E2OGYwZjFiYzc4NjRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjUsNiArMjUsMTEgQEAgbW9kdWxlIGNvcmUg
ewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1
ZXJ5U2VsZWN0b3JBbGwoaW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8
ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsK
KyAgICAgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlz
dGVuZXIgbGlzdGVuZXIpOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDcxNjhlMTJiYjRiZDg0NjgxYjE1ZjhkNTE3NzE2YmIwMzNkMDg5ZWIuLmE3NjU3Zjk3
MDQxNjM3N2I4YjgwNDg4ZmE5M2NhYjUzZDYzZGYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0Lmgi
CkBAIC02OTksNiArNzAwLDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlz
U3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisg
ICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGxvY2FsTmFtZSk7CisgICAgZW5xdWV1ZU11dGF0aW9u
KG11dGF0aW9uKTsKKyAgICBvd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlv
bik7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzMy
LDYgKzczNywxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5jaHJv
bml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBSZWZQ
dHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJp
YnV0ZUNoYW5nZWQodGhpcywgbmFtZS5sb2NhbE5hbWUoKSk7CisgICAgZW5xdWV1ZU11dGF0aW9u
KG11dGF0aW9uKTsKKyAgICBvd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlv
bik7CiB9CiAKIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAg
LTIwNTIsNCArMjA2MSwxNCBAQCBQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlvbkxpc3Q+IEVsZW1l
bnQ6OndlYmtpdEdldEFuaW1hdGlvbnMoKSBjb25zdAogICAgIHJldHVybiBhbmltQ29udHJvbGxl
ci0+YW5pbWF0aW9uc0ZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwogfQogCitNdXRhdGlvblRhcmdl
dERhdGEqIEVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tdXRhdGlvblRhcmdldERhdGEoKSA6IDA7Cit9CisKK011
dGF0aW9uVGFyZ2V0RGF0YSogRWxlbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDE5MjNi
MDZiMGIwODI1YjE2ZWIwMTZiOGU3NDgxMzI2ZWNiZThjOWIuLmUwYzk4MTJkNTc0ZDIxNzg4ZGZk
NzVlYjdmN2JlOTBmMjdiZTZiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVk
ZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRl
ICJTY3JvbGxUeXBlcy5oIgogCkBAIC00OSw3ICs1MCw3IEBAIGVudW0gU3BlbGxjaGVja0F0dHJp
YnV0ZVN0YXRlIHsKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlRGVmYXVsdAogfTsKIAotY2xhc3Mg
RWxlbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIEVsZW1lbnQgOiBwdWJsaWMg
Q29udGFpbmVyTm9kZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAgICAgdmlydHVhbCB+RWxlbWVudCgpOwpAQCAtMzgxLDYgKzM4Miw5IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25U
YXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0
aW9uVGFyZ2V0RGF0YSgpOworCiAgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoKSBjYWxscyB0aGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMuCiAg
ICAgLy8gVGhleSBhcmUgc2VwYXJhdGVkIHRvIGFsbG93IGEgZGlmZmVyZW50IGZsb3cgb2YgY29u
dHJvbCBpbiBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkuCiAgICAgdm9pZCByZWNh
bGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCmluZGV4IDllYmIwMmE1OTJmNzE4MzI2YzE2ZTAyZjE5ODFiNDFkOWM4ODkw
ZWMuLjcyNzcxOGE2ZTU2NjMzZGI3MzNmOGJkNzBlYmY0MTlmZmE5Yjk2ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTE0MCw2ICsxNDAsMTEgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAK
ICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElW
RV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxp
c3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtp
dFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7Cisj
ZW5kaWYKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0Vf
T0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAg
ICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDFjYWNjZDQ5NGYxMGYyYTZjMzA2ZTYwYmUxMzQ0YTc1
NDY1ZTI5NmYuLmFlZGQ1NmE5NDIxMmMxMDAyZGJjZDk0ZWEzOGM3ZWRiNzU0MTU1ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJDbGFzc0xpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtMzksNiArNDAs
MTUgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldENvbXB1dGVkU3R5bGUoKTsKIAorICAgIE11
dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlv
blRhcmdldERhdGEuZ2V0KCk7IH0KKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0
aW9uVGFyZ2V0RGF0YSgpCisgICAgeworICAgICAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXREYXRh
KQorICAgICAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRp
b25UYXJnZXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgp
OworICAgIH0KKworCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5j
ZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwogCkBAIC01NSw2ICs2NSw4IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQ7CiAjZW5kaWYKK3ByaXZhdGU6CisgICAgT3duUHRyPE11dGF0aW9u
VGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERhdGE7CiB9OwogCiBpbmxpbmUgSW50U2l6ZSBk
ZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlz
dGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQ4ZDg4NDEwNDUxZDI4NjM1N2RlZTBhNTVkMTMzZDQ2Njk2
YTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVu
ZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUg
TXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJl
Y29yZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK3R5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZFZlY3RvcjsKKworY2xhc3MgTXV0
YXRpb25MaXN0ZW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uTGlzdGVuZXI+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NdXRhdGlvbkxpc3RlbmVyKCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8TXV0
YXRpb25SZWNvcmRWZWN0b3I+KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgTXV0YXRpb25MaXN0ZW5lciYpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKSA9
IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uTGlzdGVuZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhZDAxZjhkM2I2NmZmMTlkM2QzODFiMjZkNzRmZWNiN2RjNmY3YWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5p
ZGwKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBQdXJlSW50ZXJmYWNlLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBdIE11dGF0aW9u
TGlzdGVuZXIgeworICAgICAgICAvLyB2b2lkIGhhbmRsZUV2ZW50KGluIE11dGF0aW9uUmVjb3Jk
W10gbXV0YXRpb25zKQorICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIEFycmF5IG11dGF0aW9u
cyk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA4M2M1YTM4NmNkMWIwNzJmZDU4YzkwODhiZjY4YTQyYzBjZTI1ODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCisK
KyNpbmNsdWRlICJOb2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEVtcHR5Tm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVMaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eU5vZGVMaXN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUq
IGl0ZW0odW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUqIGl0
ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCB7IHJldHVybiAwOyB9CisKK3By
aXZhdGU6CisgICAgRW1wdHlOb2RlTGlzdCgpIHsgfQorfTsKKworfQorCitQYXNzUmVmUHRyPE11
dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCwgdW5zaWduZWQgYWRkZWRDb3VudCwgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gcmVtb3ZlZCwgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXgpCit7CisgICAgUmVmUHRyPE11
dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGls
ZGxpc3RGbGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhID0gYWRv
cHRQdHIobmV3IENoaWxkbGlzdERhdGEpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEt
PmFkZGVkQ291bnQgPSBhZGRlZENvdW50OworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEt
PnJlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRhdGlvbi0+bV9jaGlsZGxpc3RE
YXRhLT5yZW1vdmVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPnJl
bW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX2No
aWxkbGlzdERhdGEtPmNoaWxkbGlzdEluZGV4ID0gY2hpbGRsaXN0SW5kZXg7CisgICAgcmV0dXJu
IG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0
YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJn
ZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUpCit7CisgICAgUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChBdHRyaWJ1dGVG
bGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9hdHRyTmFtZSA9IGF0dHJOYW1lOworICAg
IHJldHVybiBtdXRhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2Rl
PiB0YXJnZXQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGFy
YWN0ZXJkYXRhRmxhZywgdGFyZ2V0KSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRp
b25SZWNvcmQ6OnR5cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBjaGlsZGxpc3QsICgiY2hpbGRsaXN0IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBhdHRyaWJ1dGUsICgiYXR0cmlidXRlIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBjaGFyYWN0ZXJkYXRhLCAoImNoYXJhY3RlcmRhdGEiKSk7CisK
KyAgICBzd2l0Y2ggKG1fdHlwZUZsYWcpIHsKKyAgICBjYXNlIE11dGF0aW9uUmVjb3JkOjpDaGls
ZGxpc3RGbGFnOgorICAgICAgICByZXR1cm4gY2hpbGRsaXN0OworICAgIGNhc2UgTXV0YXRpb25S
ZWNvcmQ6OkF0dHJpYnV0ZUZsYWc6CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7CisgICAgY2Fz
ZSBNdXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZsYWc6CisgICAgICAgIHJldHVybiBjaGFy
YWN0ZXJkYXRhOworICAgIH0KKyAgICBBU1NFUlQoZmFsc2UpOworICAgIHJldHVybiBlbXB0eUF0
b207Cit9CisKK011dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFn
IHR5cGVGbGFnLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdHlwZUZsYWcodHlw
ZUZsYWcpCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCisgICAgLCBtX2luRG9jdW1lbnQobV90YXJn
ZXQtPmluRG9jdW1lbnQoKSkKK3sKK30KKworTXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29y
ZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
UmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmExMDhkNTMxYWY5NzI4ZjM3ZjlhYmUxYThiNjgwYTYwNjEw
N2QxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29y
ZC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0
YXRpb25SZWNvcmRfaAorCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNdXRhdGlvblJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uUmVjb3JkPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUNoaWxk
bGlzdENoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIHVuc2lnbmVkIGFkZGVkQ291bnQs
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWQsIHVuc2lnbmVkIGNoaWxkbGlzdEluZGV4KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hh
bmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFt
ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZVRleHREYXRh
Q2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5NdXRhdGlv
blJlY29yZCgpOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisgICAgTm9kZSog
dGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KKyAgICBib29sIGluRG9jdW1lbnQo
KSB7IHJldHVybiBtX2luRG9jdW1lbnQ7IH0KKworICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxp
c3QnCisgICAgdW5zaWduZWQgYWRkZWRDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9j
aGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5hZGRlZENvdW50IDogMDsKKyAgICB9Cisg
ICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGls
ZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5yZW1vdmVkTm9kZXMuZ2V0KCkgOiAwOworICAg
IH0KKyAgICB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5jaGlsZGxpc3RJbmRleCA6IDA7Cisg
ICAgfQorCisgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGF0dHJOYW1lKCkgeyByZXR1cm4gbV9hdHRyTmFtZTsgfQorCisgICAgLy8gTm90IHBh
cnQgb2YgdGhlIElETCwgYnV0IHVzZWQgaW50ZXJuYWxseSBmb3IgZmFzdCB0eXBlLWJhc2VkIG9w
ZXJhdGlvbnMuCisgICAgZW51bSBNdXRhdGlvblR5cGVGbGFnIHsKKyAgICAgICAgQ2hpbGRsaXN0
RmxhZyA9ICgxIDw8IDApLAorICAgICAgICBBdHRyaWJ1dGVGbGFnID0gKDEgPDwgMSksCisgICAg
ICAgIENoYXJhY3RlcmRhdGFGbGFnID0gKDEgPDwgMikKKyAgICB9OworICAgIE11dGF0aW9uVHlw
ZUZsYWcgdHlwZUZsYWcoKSB7IHJldHVybiBtX3R5cGVGbGFnOyB9CisKK3ByaXZhdGU6CisgICAg
TXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlRmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQp
OworCisgICAgc3RydWN0IENoaWxkbGlzdERhdGEgeworICAgICAgICB1bnNpZ25lZCBhZGRlZENv
dW50OworICAgICAgICBSZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWROb2RlczsKKyAgICAgICAgdW5z
aWduZWQgY2hpbGRsaXN0SW5kZXg7CisgICAgfTsKKworICAgIE11dGF0aW9uVHlwZUZsYWcgbV90
eXBlRmxhZzsKKyAgICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgYm9vbCBtX2luRG9jdW1l
bnQ7CisgICAgQXRvbWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgT3duUHRyPENoaWxkbGlzdERh
dGE+IG1fY2hpbGRsaXN0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWRkOTRl
ZDg3YTFmMTljNzEzNzNhMDFkYzdiYWFjYmI4OWJmNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IGNvcmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTm9kZSAgICAgICAgICAgdGFyZ2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiAgICAgICAgaW5Eb2N1bWVudDsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRs
aXN0JworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgYWRkZWRDb3Vu
dDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0ICAgICAgIHJlbW92ZWROb2Rl
czsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgIGNoaWxkbGlzdElu
ZGV4OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdhdHRyaWJ1dGUnCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBhdHRyTmFtZTsKKyAgICB9OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JiYTcyZDJlM2ZiZjdjOGQ1
MWM1MDZjNzkxOTE4MDU0ZTA4MjhmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblRhcmdldC5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3Jk
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJl
ZE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKwor
c3RydWN0IE11dGF0aW9uQ29udGV4dCB7CisgICAgTXV0YXRpb25Db250ZXh0KFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IGQsIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbykKKyAgICAgICAgOiBk
b2N1bWVudChkKQorICAgICAgICAsIGxpc3RlbmVyKG8pCisgICAgeworICAgIH0KKworICAgIFJl
ZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQ7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxp
c3RlbmVyOworfTsKKworc3RydWN0IE11dGF0aW9uQ29udGV4dFB0ckhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IE11dGF0aW9uQ29udGV4dCoga2V5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEludEhhc2g8dWludDY0X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihQ
dHJIYXNoPERvY3VtZW50Kj46Omhhc2goa2V5LT5kb2N1bWVudC5nZXQoKSkpIDw8IDMyIHwga2V5
LT5saXN0ZW5lci0+aGFzaCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBNdXRhdGlvbkNvbnRleHQqIGEsIGNvbnN0IE11dGF0aW9uQ29udGV4dCogYikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhLT5kb2N1bWVudCA9PSBiLT5kb2N1bWVudCAmJiAqYS0+bGlzdGVuZXIg
PT0gKmItPmxpc3RlbmVyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8TXV0
YXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNvcmRWZWN0b3IqLCBNdXRhdGlvbkNvbnRleHRQdHJI
YXNoPiBDb250ZXh0VmVjdG9yTWFwOworCit9IC8vIG5hbWVzcGFjZQorCitzdGF0aWMgQ29udGV4
dFZlY3Rvck1hcCYgY29udGV4dFZlY3Rvck1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb250ZXh0VmVjdG9yTWFwLCBtLCAoKSk7CisgICAgcmV0dXJuIG07Cit9CisKK3N0YXRpYyBE
ZXF1ZTxPd25QdHI8TXV0YXRpb25Db250ZXh0PiA+JiBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERlcXVlPE93blB0cjxNdXRhdGlvbkNvbnRleHQ+
ID4sIGFjdGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOworfQor
Cit2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAgICB3aGlsZSAoIWFjdGl2ZU11dGF0aW9u
Q29udGV4dHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPE11dGF0aW9uQ29udGV4dD4g
Y29udGV4dCA9IGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKS50YWtlRmlyc3QoKTsKKyAgICAgICAg
T3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiB2ID0gYWRvcHRQdHIoY29udGV4dFZlY3Rvck1h
cCgpLnRha2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBjb250ZXh0LT5saXN0ZW5lci0+aGFu
ZGxlRXZlbnQoY29udGV4dC0+ZG9jdW1lbnQuZ2V0KCksIHYucmVsZWFzZSgpKTsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIGVuc3VyZU11dGF0aW9uUXVldWVkKFBhc3NSZWZQdHI8TXV0YXRpb25M
aXN0ZW5lcj4gcHJwTGlzdGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0
aW9uKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlv
bjsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpKTsKKyAgICBBU1NFUlQobXV0YXRpb24t
PnRhcmdldCgpLT5kb2N1bWVudCgpKTsKKyAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250
ZXh0ID0gYWRvcHRQdHIobmV3IE11dGF0aW9uQ29udGV4dChtdXRhdGlvbi0+dGFyZ2V0KCktPmRv
Y3VtZW50KCksIHBycExpc3RlbmVyKSk7CisKKyAgICBwYWlyPENvbnRleHRWZWN0b3JNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBjb250ZXh0VmVjdG9yTWFwKCkuYWRkKGNvbnRleHQuZ2V0
KCksIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gbmV3IE11dGF0aW9uUmVjb3JkVmVjdG9yOworICAgICAgICBhY3RpdmVNdXRhdGlv
bkNvbnRleHRzKCkuYXBwZW5kKGNvbnRleHQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgTXV0YXRp
b25SZWNvcmRWZWN0b3IqIHYgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAodi0+aXNF
bXB0eSgpIHx8IHYtPmxhc3QoKSAhPSBtdXRhdGlvbikKKyAgICAgICAgdi0+YXBwZW5kKG11dGF0
aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRhcmdldCgpCit7Cit9CisKK3Zv
aWQgTXV0YXRpb25UYXJnZXQ6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxN
dXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgdWludDhfdCB0eXBlTWFzaykKK3sKKyAgICBS
ZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIocHJwTGlzdGVuZXIs
IHR5cGVNYXNrKTsKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBlbnN1cmVNdXRhdGlvblRh
cmdldERhdGEoKTsKKyAgICBzaXplX3QgaW5kZXggPSBkLT5saXN0ZW5lcnMuZmluZChyZWdpc3Rl
cmVkTGlzdGVuZXIpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgZC0+bGlz
dGVuZXJzLmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworICAgIGVsc2UKKyAgICAgICAgZC0+
bGlzdGVuZXJzW2luZGV4XS50eXBlcyB8PSB0eXBlTWFzazsKK30KKwordm9pZCBNdXRhdGlvblRh
cmdldDo6d2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKiBsaXN0
ZW5lcikKK3sKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEo
KTsKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgqZC0+bGlzdGVu
ZXJzW2ldLmxpc3RlbmVyID09ICpsaXN0ZW5lcikgeworICAgICAgICAgICAgZC0+bGlzdGVuZXJz
LnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBNdXRhdGlvblRhcmdldDo6ZW5xdWV1ZU11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IHBycE11dGF0aW9uKQoreworICAgIEFTU0VSVChwcnBNdXRhdGlvbik7CisKKyAgICBN
dXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQg
fHwgZC0+bGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRy
PE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkLT5s
aXN0ZW5lcnNbaV0udHlwZXMgJiBtdXRhdGlvbi0+dHlwZUZsYWcoKSkKKyAgICAgICAgICAgIGVu
c3VyZU11dGF0aW9uUXVldWVkKGQtPmxpc3RlbmVyc1tpXS5saXN0ZW5lciwgbXV0YXRpb24pOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25U
YXJnZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjFjNGRhNDQ0YjcxZmQ4ZDc1MmFiZDUzMThhMzU2MTE0NjRj
M2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25UYXJnZXRfaAorI2RlZmluZSBNdXRh
dGlvblRhcmdldF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXI7CitjbGFzcyBNdXRhdGlvblJlY29y
ZDsKK2NsYXNzIE11dGF0aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgTXV0YXRpb25UYXJnZXQgewor
cHVibGljOgorICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+LCB1aW50OF90IHR5cGVNYXNrKTsKKyAgICB2b2lkIHdlYmtpdFJlbW92
ZU11dGF0aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5lciopOworCisgICAgdm9pZCBlbnF1ZXVl
TXV0YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOworCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB+TXV0YXRpb25UYXJnZXQoKTsKKworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXRE
YXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSA9IDA7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdl
dERhdGEqIGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKK307CisKK3ZvaWQgc3Bpbk11
dGF0aW9uUXVldWUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTXV0
YXRpb25UYXJnZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFy
Z2V0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwYmUxMGMzMGQyZTBhM2I5NDQ5MDBkYjVlNGEyOGRmMTZiYWZhYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTXV0YXRpb25UYXJnZXREYXRhX2gKKyNkZWZpbmUgTXV0YXRpb25U
YXJnZXREYXRhX2gKKworI2luY2x1ZGUgIlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXI+IE11dGF0aW9uTGlzdGVuZXJWZWN0b3I7CitzdHJ1Y3QgTXV0YXRpb25UYXJnZXRE
YXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNdXRhdGlvblRhcmdldERhdGEpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE11dGF0aW9uVGFyZ2V0RGF0
YSgpIHsgfQorICAgIH5NdXRhdGlvblRhcmdldERhdGEoKSB7IH0KKworICAgIE11dGF0aW9uTGlz
dGVuZXJWZWN0b3IgbGlzdGVuZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gTXV0YXRpb25UYXJnZXREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jl
Z2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZlZWM4MTRjYzg5OGQ2Y2U3
NGQxNDYwYzExZTM3ZmI3Njg5MzE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgUmVnaXN0ZXJlZE11dGF0aW9u
TGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciB7CisgICAgUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsLCB1aW50
OF90IHR5cGVNYXNrKQorICAgICAgICA6IGxpc3RlbmVyKGwpCisgICAgICAgICwgdHlwZXModHlw
ZU1hc2spIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqbGlzdGVuZXIg
PT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA0M2MyMzc1YzYxZmMzOWU0MzcxMDdjZTFhYjg1NDQ1
ZDE4NTBiN2Q2Li5hOTExZmNkZjU5OWRkN2JmODNhMjZhMGEyMDM3OGE5ZDk2OGQ2ODAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiTWVk
aWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtMTg4Myw0ICsxODg0LDkgQEAgU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Vi
a2l0U3RvcmFnZUluZm8oKSBjb25zdAogfQogI2VuZGlmCiAKK3ZvaWQgRE9NV2luZG93OjpzcGlu
TXV0YXRpb25RdWV1ZSgpCit7CisgICAgOjpXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBh
MmFkODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZkLi5kYzliMDFkYzVjY2FjNjQ5
OGZjYWRmMjNlYTI3Yjc3M2I3NDdhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTQx
NCw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBlcmZvcm1hbmNlKiBw
ZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBzcGluTXV0YXRpb25R
dWV1ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2luZG93KEZyYW1lKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBjMjM4NGQxNWE1ZDdhOTVkNGNmNDBjZDU2OTNk
ZmQxN2E3YjZkOTgyLi4yMzQyYWRmNWRiZWJmMzlmNmQ1NDcwMDUwY2NmM2I1NzVmYjhmYmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC04MDUsNiArODA1LDExIEBAIG1vZHVsZSB3
aW5kb3cgewogICAgICAgICAvLyB3aW5kb3cudG9TdHJpbmcoKSByZXF1aXJlcyBzcGVjaWFsIGhh
bmRsaW5nIGluIFY4CiAgICAgICAgIFtWOERvTm90Q2hlY2tTaWduYXR1cmUsIERvTm90Q2hlY2tE
b21haW5TZWN1cml0eSwgQ3VzdG9tLCBEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7CiAj
ZW5kaWYgLy8gZGVmaW5lZChWOF9CSU5ESU5HKQorCisgICAgICAgIC8vIEZJWE1FKGFkYW1rKTog
RE8gTk9UIFNVQk1JVAorICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGV4cG9zZWQgdG8gSlMg
dW50aWwgZW1iZWRkZXJzIGFyZSBtb2RpZmllZCB0byBjYWxsIHNwaW5NdXRhdGlvblF1ZXVlKCkK
KyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiBlYWNoIHRhc2suCisgICAgICAgIHZvaWQgc3Bpbk11
dGF0aW9uUXVldWUoKTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105727</attachid>
            <date>2011-08-30 18:18:59 -0700</date>
            <delta_ts>2011-08-31 15:50:48 -0700</delta_ts>
            <desc>Coalesce childlist notifications for innerHTML etc</desc>
            <filename>bug-66079-20110830181858.patch</filename>
            <type>text/plain</type>
            <size>120642</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDBlODMwMjU2ZjU5MDZkNWVkYjk5
ZTU4ZmM5ODM4YTRkODFjMzNlLi5hNGM4MjZkYTc3ZDAzNDgyMDZmMzRjYWUzZDg5NTU4ZTFiZmNh
M2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIHI5NDA4NCBhbmQgcjk0MDg4IGFuZCByOTM5MDku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODVmZTkxMjJmMjQwZjA0Mzc1MmZjNTdkYzE1ZWY4OGQwNjAwMjZk
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitUZXN0IHRoYXQgTXV0YXRpb25MaXN0
ZW5lcnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmluRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIG11dGF0aW9u
c1sxXS5hZGRlZENvdW50IGlzIGFkZGVkQ291bnRzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5jaGls
ZGxpc3RJbmRleCBpcyBjaGlsZGxpc3RJbmRpY2VzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5pbkRv
Y3VtZW50IGlzIGluRG9jdW1lbnRGbGFnc1sxXQorUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWRDb3Vu
dCBpcyBhZGRlZENvdW50c1syXQorUEFTUyBtdXRhdGlvbnNbMl0uY2hpbGRsaXN0SW5kZXggaXMg
Y2hpbGRsaXN0SW5kaWNlc1syXQorUEFTUyBtdXRhdGlvbnNbMl0uaW5Eb2N1bWVudCBpcyBpbkRv
Y3VtZW50RmxhZ3NbMl0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlv
bnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0ucmVt
b3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWROb2Rlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRs
aXN0SW5kZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uaW5Eb2N1
bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBtdXRhdGlvbnNb
MF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQg
aXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHRleHROb2Rlc1swXQorUEFTUyBt
dXRhdGlvbnNbMF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVu
ZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENv
dW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0SW5k
aWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0uaW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3Nb
MF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBsaXN0ZW5lckNhbGxlZCBpcyBm
YWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmNGNmMTk2MGY1MGE2NWJjNTQ1NDgyMDhkNzJlODc5NTNkM2I3M2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sCkBAIC0wLDAg
KzEsMTQ0IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
ICA8ZGl2IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3Jr
IGFzIGV4cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAg
dmFyIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBhZGRlZENvdW50czsKKyAg
ICAgICAgdmFyIHJlbW92ZWROb2RlczsKKyAgICAgICAgdmFyIGNoaWxkbGlzdEluZGljZXM7Cisg
ICAgICAgIHZhciBtb2RpZmllZEF0dHJzOworICAgICAgICB2YXIgdGV4dE5vZGVzOworICAgICAg
ICB2YXIgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnM7CisgICAgICAgIHZhciBpbkRvY3VtZW50Rmxh
Z3M7CisKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAgICAgc3VzcGVu
ZExpc3RlbmluZygpOworICAgICAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsK
KyAgICAgICAgICAgIHZhciByZW1vdmVkSW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGluZGV4
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRlZENvdW50cy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10uYWRkZWRD
b3VudCcsICdhZGRlZENvdW50c1snICsgKGluc2VydGVkSW5kZXgrKykgKyAnXScpOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3ZlZE5vZGVzLmxlbmd0
aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycg
KyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5vZGVzWycgKyAocmVt
b3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBpZiAoY2hpbGRsaXN0SW5kaWNlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10uY2hpbGRsaXN0SW5kZXgnLCAnY2hp
bGRsaXN0SW5kaWNlc1snICsgKGluZGV4SW5kZXgrKykgKyAnXScpOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBpICsgJ10uYXR0ck5hbWUn
LCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4dE5vZGVzWycgKyAodGV4
dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS5pbkRvY3VtZW50JywgJ2luRG9jdW1lbnRG
bGFnc1snICsgaSArICddJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZGVkQ291
bnRzID0gW107CisgICAgICAgICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIGNo
aWxkbGlzdEluZGljZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsKKyAg
ICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0g
W107CisgICAgICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHN1c3BlbmRMaXN0ZW5pbmcoKSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJr
aXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICBm
dW5jdGlvbiByZXN1bWVMaXN0ZW5pbmcoKSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRB
ZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCBkb2N1bWVudExpc3RlbmVyT3B0aW9ucyk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIC8v
IFRlc3QgaW5zZXJ0aW9ucywgImJ1YmJsaW5nIiwgYW5kIGRlLWR1cGluZy4KKyAgICAgICAgZG9j
dW1lbnRMaXN0ZW5lck9wdGlvbnMgPSB7Y2hpbGRsaXN0OiB0cnVlfTsKKyAgICAgICAgZG9jdW1l
bnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9w
dGlvbnMpOworICAgICAgICB2YXIgYSA9IHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYS50ZXh0Q29udGVudCA9ICdoZWxsbywgd29y
bGQnOworICAgICAgICB2YXIgYiA9IHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYWRkZWRDb3VudHMgPSBbMSwgMSwgMV07CisgICAg
ICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMCwgMCwgMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFn
cyA9IFt0cnVlLCB0cnVlLCB0cnVlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAg
ICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVy
Q2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNh
bGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoYik7CisgICAgICAgIGFkZGVkQ291bnRzID0g
WzBdOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07CisgICAgICAgIGNoaWxkbGlzdEluZGlj
ZXMgPSBbMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlXTsKKyAgICAgICAgc3Bp
bk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBz
aG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygp
OworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgYXR0
cmlidXRlIG11dGF0aW9uLgorICAgICAgICBzYW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVu
ZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAgbW9kaWZpZWRBdHRycyA9
IFsnZGF0YS1mb28nXTsKKyAgICAgICAgc2FuZGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywg
J215ZGF0YScpOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNw
aW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmco
KTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNo
YXJhY3RlcmRhdGEgbXV0YXRpb24uCisgICAgICAgIGEud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0g
W2EuZmlyc3RDaGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29k
YnllISc7CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlXTsKKyAgICAgICAgc3Bpbk11
dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91
bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3RlbmluZygpOwor
ICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3QgZGlzY29u
bmVjdGVkIERvY3VtZW50RnJhZ21lbnQKKyAgICAgICAgdmFyIGZyYWcgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIGRvY3VtZW50LndlYmtpdFJlbW92ZU11dGF0
aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBmcmFnLndlYmtpdEFkZE11dGF0aW9uTGlz
dGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgdmFyIGQgPSBmcmFn
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGFk
ZGVkQ291bnRzID0gWzFdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzBdOworICAgICAg
ICBpbkRvY3VtZW50RmxhZ3MgPSBbZmFsc2VdOworICAgICAgICBzcGluTXV0YXRpb25RdWV1ZSgp
OworICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlz
dGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgIGxpc3Rl
bmVyQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgc2FuZGJveC53ZWJraXRSZW1vdmVNdXRhdGlv
bkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpKTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAg
ICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZUZhbHNlKCdsaXN0ZW5l
ckNhbGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKworICAgICAgICB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwY2FjMjRkOGUwOTI1MDI5NGYwNTU1ODVlYmEyNTI1Mjg1YTBiMTlm
Li43NjRjNGQ3ZmJmYWJjZTU3Y2UyMGMyZjY0MTZlNGQ4OWRjZGNkMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTgwIEBACisyMDExLTA4LTMwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFt3b3JrIGluIHByb2dyZXNzXSBJbXBsZW1lbnQgTXV0YXRpb25MaXN0
ZW5lci9NdXRhdGlvblRhcmdldCwgYSByZXBsYWNlbWVudCBmb3IgRE9NIE11dGF0aW9uIEV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYwNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFs
bHkgaW1wbGVtZW50cyBhbiBleHBlcmltZW50YWwsIHZlbmRvci1wcmVmaXhlZCBBUEkgd2l0aCB0
aGUKKyAgICAgICAgaG9wZSBvZiBldmVudHVhbGx5IHJlcGxhY2luZyBNdXRhdGlvbkV2ZW50cy4g
VGhlIEFQSSBpcyBiYXNlZCBpbgorICAgICAgICBsYXJnZSBwYXJ0IG9uIGEgcHJvcG9zYWwgYnkg
Sm9uYXMgU2lja2luZyBpbiBhIG1lc3NhZ2UgdG8gcHVibGljLXdlYmFwcHM6CisKKyAgICAgICAg
aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1
bFNlcC8wMzY5Lmh0bWwKKworICAgICAgICBUaGF0IHRocmVhZCBpcyB2ZXJ5IGxvbmcsIGJ1dCBo
YXMgaGVscGZ1bGx5IGJlZW4gc3VtbWFyaXplZCBieQorICAgICAgICBSYWZhZWwgV2VpbnN0ZWlu
IGluIGEgcmVjZW50IG1lc3NhZ2U6CisKKyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo
aXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1bFNlcC8wNzc5Lmh0bWwKKworICAgICAg
ICBOb3RlIHRoYXQgdGhpcyBwYXRjaCBpcyBpbiBubyB3YXkgbWVhbnQgdG8gYmUgYSBjb21wbGV0
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gVGhlIGJpZ2dlc3QgbWlzc2luZyBmZWF0dXJlIGlz
IHRoZSBhY3R1YWwgZGlzcGF0Y2hpbmcKKyAgICAgICAgb2YgTXV0YXRpb25SZWNvcmQgYXJyYXlz
IHRvIE11dGF0aW9uTGlzdGVuZXJzOiB0aGUgaW5jbHVkZWQgbGF5b3V0CisgICAgICAgIHRlc3Qg
aW5zdGVhZCBjYWxscyBhICJzcGluTXV0YXRpb25RdWV1ZSIgZnVuY3Rpb24gdG8gdHJpZ2dlcgor
ICAgICAgICBub3RpZmljYXRpb25zLiBUaGlzIGlzIG5vdCBhY3R1YWxseSBtZWFudCB0byBiZSBl
eHBvc2VkIHRvIEpTLAorICAgICAgICB0aG91Z2g6IG15IGhvcGUgaXMgdG8gaW5zdGVhZCBjYWxs
IHNwaW5NdXRhdGlvblF1ZXVlIGZyb20KKyAgICAgICAgQysrLCBlaXRoZXIgZnJvbSBzb21ld2hl
cmUgaW4gV2ViQ29yZSBvciAobW9yZSBsaWtlbHkpIGluCisgICAgICAgIHRoZSBlbWJlZGRlci4g
SSBoYXZlIGEgc2VwYXJhdGUgY2hhbmdlIHdoaWNoIGltcGxlbWVudHMgdGhlCisgICAgICAgIGxh
dHRlciBpbiBDaHJvbWl1bS4KKworICAgICAgICBUaGUgb3RoZXIgbWFpbiB0aGluZyBtaXNzaW5n
IGZyb20gdGhpcyBwYXRjaCBpcyB0aGF0IE11dGF0aW9uUmVjb3JkcworICAgICAgICBhcmUgbm90
IGRpc3BhdGNoZWQgaW4gYWxsIHRoZSBwcm9wZXIgcGxhY2VzLCBlLmcuLCB0aGUgaGFuZGxpbmcg
b2YKKyAgICAgICAgaW5uZXJIVE1MIGlzIG5vdCBhcyB3ZSBob3BlIGl0IHRvIGJlLiBUaGlzIGlz
IHNpbXBseSBhIG1hdHRlciBvZgorICAgICAgICB3YW50aW5nIHRvIHB1dCB0aGlzIHBhdGNoIHVw
IHRvIGdldCBmZWVkYmFjazogaXQgc2hvdWxkbid0IGJlCisgICAgICAgIG11Y2ggd29yayB0byBh
ZGQgTXV0YXRpb25SZWNvcmQgZGlzcGF0Y2hpbmcgaW4gYWxsIHRoZSBwcm9wZXIKKyAgICAgICAg
cGxhY2VzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwK
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6Omlzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6
c2V0V3JhcHBlcik6CisgICAgICAgIEpTTXV0YXRpb25MaXN0ZW5lciBpcyB2ZXJ5IHNpbWlsYXIg
dG8gSlNFdmVudExpc3RlbmVyLAorICAgICAgICB3aXRoIGEgZmV3IHNpbXBsaWZpY2F0aW9ucy4g
IEl0cyByZWFzb24gZm9yIGV4aXN0aW5nCisgICAgICAgIGlzIHRoYXQgTm9kZS53ZWJraXRBZGRN
dXRhdGlvbkxpc3RlbmVyIG5lZWRzIHRvIGJlaGF2ZQorICAgICAgICBsaWtlIGFkZEV2ZW50TGlz
dGVuZXIsIGluIHRoYXQgZHVwbGljYXRlIGFkZGl0aW9ucyBhcmUKKyAgICAgICAgaWdub3JlZC4g
VGhpcyByZXF1aXJlcyB0aGUgb3BlcmF0b3I9PSBtZXRob2QuIFdlIGFsc28KKyAgICAgICAgd2Fu
dCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgc2FtZSBNdXRhdGlvblJlY29yZAorICAgICAgICBt
b3JlIHRoYW4gb25jZSB0byBhIGdpdmVuIGxpc3RlbmVyLCBhbmQgZm9yIHRoaXMKKyAgICAgICAg
d2UgdXNlIGEgSGFzaE1hcCwgdGh1cyB0aGUgfGhhc2h8IG1ldGhvZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlTXV0YXRp
b25MaXN0ZW5lckNhbGwpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZXRJ
bnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFj
ayk6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTmF0aXZl
VG9KU1ZhbHVlKToKKyAgICAgICAgU2luY2UgTXV0YXRpb25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBh
cmUgY3VzdG9tLCBzbworICAgICAgICBtdXN0IGJlIG11dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9u
IGFuZCByZW1vdmFsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlv
bkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVu
ZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlv
bkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmguCisgICAgICAgIChXZWJDb3JlOjpWOE11
dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVy
OjpnZXRMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxp
c3RlbmVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0
ZW5lck1hbmFnZXI6OmZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25M
aXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0
aW9uTGlzdGVuZXJNYW5hZ2VyOjpkb0ZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICBU
aGUgVjggZXF1aXZhbGVudHMgb2YgdGhlIEpTTXV0YXRpb25MaXN0ZW5lciBhYm92ZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oOgorICAg
ICAgICBHZW5lcmFsaXplZCBpbnZva2VDYWxsYmFjayB0byBtYWtlIGl0IHN1aXQgdGhlIHB1cnBv
c2VzIG9mCisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQuCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgRGlzcGF0Y2ggImNoYXJhY3RlcmRh
dGEiIG11dGF0aW9ucy4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgRGlzcGF0Y2ggImNoaWxk
bGlzdCIgbXV0YXRpb25zLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptdXRhdGlvblRhcmdl
dERhdGEpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6ZW5z
dXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bXV0YXRpb25UYXJnZXREYXRh
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5pZGw6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAg
ICAgICAgRGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdl
dERhdGEpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25MaXN0ZW5lcjo6fk11dGF0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL011dGF0
aW9uUmVjb3JkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVGbGFn
VG9OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjppbnNlcnRlZE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
OjpuZXdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6dHlwZUZsYWcp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5pZGw6IEFkZGVkLgorICAgICAgICBNdXRh
dGlvblJlY29yZHMgYXJlIGFuYWxvZ291cyB0byBFdmVudHM6IHRoZXkgaG9sZCBkYXRhCisgICAg
ICAgIGFib3V0IGEgc2luZ2xlIG11dGF0aW9uLgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25Db250ZXh0OjpNdXRhdGlv
bkNvbnRleHRQdHJIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4
dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dFZlY3Rvck1hcCk6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVNdXRhdGlvbkNvbnRleHRz
KToKKyAgICAgICAgKFdlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZU11dGF0aW9uUXVldWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFy
Z2V0Ojp+TXV0YXRpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJnZXQ6
OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
YXJnZXQ6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25UYXJnZXQ6OmVucXVldWVNdXRhdGlvbik6CisgICAgICAgICogZG9tL011dGF0aW9u
VGFyZ2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVu
UHJvcGVydHlOYW1lLmguCisgICAgICAgIE11dGF0aW9uVGFyZ2V0IGlzIGFuYWxvZ291cyB0byBF
dmVudFRhcmdldCwgYW5kIGlzIGEgbWl4aW4gZm9yCisgICAgICAgIERvY3VtZW50LCBEb2N1bWVu
dEZyYWdtZW50LCBhbmQgRWxlbWVudC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXREYXRh
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmguCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6Ok11dGF0aW9u
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6On5NdXRh
dGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3Bl
cnR5TmFtZS5oLgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXI6
OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNwaW5NdXRhdGlvblF1ZXVlKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmlk
bDoKKyAgICAgICAgTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgdG8gRE9NV2luZG93IGFyZW4ndCBy
ZWFsbHkgcGFydCBvZiB0aGUgY2hhbmdlLAorICAgICAgICBhbmQgYXJlIHNpbXBseSBhIHNoaW0g
dG8gbWFrZSBpdCBlYXN5IHRvIGRlYWwgd2l0aCBtdXRhdGlvbnMgd2hpbGUgd2UKKyAgICAgICAg
ZmlndXJlIG91dCB0aGUgdGltZS10by1ydW4gaXNzdWVzLgorCiAyMDExLTA4LTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIHNo
b3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBhbiBlbXB0eSBjb29raWUgc3RvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCA2MDJmODdjYzc1YmY3Yzg2Y2M3YWQ1NDg5NmY0N2ZlMTA0
YmY1ZDU3Li4yNDU5MjkxMzVkOWVhM2QwM2JkZTc1NWMzMmVhNjU4NWViNzdiNzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yNDUsNiArMjQ1LDggQEAKICNpbmNsdWRlICJKU01l
dGFkYXRhQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTTW91c2VFdmVudC5jcHAiCiAjaW5jbHVk
ZSAiSlNNdXRhdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVuZXIuY3Bw
IgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuY3BwIgogI2luY2x1ZGUgIkpTTmFtZWROb2Rl
TWFwLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MDY2NThmOTNkOGNlYWE0ODBkOGZiN2NjZmQyNWRhY2Q1NTI4MjVlLi40ZWU3MjAyNTU4NmYxN2E1
NmI4N2M0NzE2OGFlMDMwOGI1MjdkNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTMxNyw2ICszMTcsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBNZXRhZGF0YUNhbGxiYWNr
IFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRhdGlvbkV2ZW50IFwKKyAgICBNdXRhdGlvbkxp
c3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBcCiAgICAgTmFtZWROb2RlTWFwIFwKICAgICBO
YXZpZ2F0b3IgXAogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yIFwKQEAgLTU3NCw3ICs1NzYs
NyBAQCBET01fQ0xBU1NFUyA9IFwKIAogLlBIT05ZIDogYWxsCiAKLUpTX0RPTV9IRUFERVJTPSQo
ZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBK
U0V2ZW50VGFyZ2V0LmgsJChET01fQ0xBU1NFUzolPUpTJS5oKSkKK0pTX0RPTV9IRUFERVJTPSQo
ZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVuZXIuaCBK
U0V2ZW50VGFyZ2V0LmggSlNNdXRhdGlvbkxpc3RlbmVyLmgsJChET01fQ0xBU1NFUzolPUpTJS5o
KSkKIAogV0VCX0RPTV9IRUFERVJTIDo9CiBpZmVxICgkKGZpbmRzdHJpbmcgQlVJTERJTkdfV1gs
JChGRUFUVVJFX0RFRklORVMpKSwgQlVJTERJTkdfV1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCmluZGV4IDE2MjQwZGMzMDQ5MWQyN2ZiZDk1ODNlOTliMTkwZDA2NzExYmRk
NmUuLjc5ZGM1YzhiYzA2MWYxYzc0ZDc2ZTU4NjViZjkyZDBiZjExYmUxYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0yMzEsNiArMjMxLDcgQEAKICAgICAgICMg
Q3VzdG9tIGJpbmRpbmdzIGluIGJpbmRpbmdzL3Y4L2N1c3RvbSBleGlzdCBmb3IgdGhlc2UuCiAg
ICAgICAnLi4vZG9tL0V2ZW50TGlzdGVuZXIuaWRsJywKICAgICAgICcuLi9kb20vRXZlbnRUYXJn
ZXQuaWRsJywKKyAgICAgICcuLi9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAogICAgICAgJy4u
L2h0bWwvVm9pZENhbGxiYWNrLmlkbCcsCiAKICAgICAgICMgQmluZGluZ3Mgd2l0aCBjdXN0b20g
T2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZkNGNiOGQ2
MTYxNWRmNTQ3YzE1ODdhMWExMThhMTMzMmMzNzE5ZDQuLjIxNWI4ZDgwYjhhYzRiZjZhMGNhNWJi
NTMzZGZkOTViMDY1NmYxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExODIsNiArMTE4Miw4IEBA
CiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAgICAgICAgICAnZG9tL01v
dXNlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5pZGwnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAgICAgICAgICAnZG9tL011
dGF0aW9uUmVjb3JkLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9Ob2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVGaWx0ZXIu
aWRsJywKQEAgLTIwODQsNiArMjA4Niw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhJ
c29sYXRlZENvbnRleHQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRM
aXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVu
ZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4TlBPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNw
cCcsCkBAIC01MzAwLDYgKzUzMDUsMTIgQEAKICAgICAgICAgICAgICdkb20vTW91c2VSZWxhdGVk
RXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25U
YXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuaCcsCisgICAgICAg
ICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKICAgICAgICAgICAgICdkb20vTmFtZU5v
ZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL05hbWVOb2RlTGlzdC5oJywKICAgICAgICAg
ICAgICdkb20vTmFtZWROb2RlTWFwLmNwcCcsCkBAIC01MzQxLDYgKzUzNTIsNyBAQAogICAgICAg
ICAgICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURv
Y3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAnLAorICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oJywK
ICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCcsCiAgICAg
ICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vU2Nv
cGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1MGM3YTBmZWJiOWVjMGI1M2QwMGMzMzY4M2QyYjQ0YzQx
NzM5MmIxLi5kMWE5ZjFkNmQyMTRjM2M5NmNmNDAzZDg3ZGJkMzZmMTA1MTNmODI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
NDIyLDkgKzU0MjIsMTcgQEAKIAkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0
cmljc01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1RTlCNjc3MTA2OTdFMTMw
MEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RTlCNjc2MTA2OTdFMTMwMEM3QkIxQSAvKiBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4
MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmggKi87IH07CisJCUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFFOSAvKiBK
U011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNw
cCAqLzsgfTsKKwkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTM5
MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi87IH07CisJCUM2NzJBMkQz
MTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAv
KiBNdXRhdGlvblRhcmdldERhdGEuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNl
bGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxl
Y3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OwogCQlDNkY0MTA0NzEzMEM2RTg5MDAzOTNERTQgLyog
RW50cnlCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovOyB9OworCQlD
NkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDAxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLzsgfTsKKwkJQzZGNjcxNTQxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdl
dC5jcHAgKi87IH07CisJCUM2RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcx
NDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzZGNjcxNUMxM0UzNUVCMjAwREUzQjlD
IC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QTEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmNwcCAqLzsgfTsKKwkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRp
b25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovOyB9
OwogCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0IxMEQ5OUJB
RTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAqLzsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJB
RTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5p
bWF0b3IuaCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyMTcyLDkgKzEyMTgwLDIyIEBACiAJCUM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAv
KiBHbHlwaE1ldHJpY3NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5
cGhNZXRyaWNzTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1RTlCNjc2MTA2
OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRh
dGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9u
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NzJBMkQyMTNGMzRDNEEw
MDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTXV0YXRpb25UYXJnZXREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2UuY3Bw
OyBwYXRoID0gZmlsZWFwaS9FbnRyeUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
bkxpc3RlbmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlD
IC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE11dGF0aW9uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZG
NjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25SZWNvcmQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJn
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJn
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTXV0YXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcx
NEIxM0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAv
KiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5
OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzIwNiw2ICsxMzIyNyw3IEBACiAJCQkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRBIC8q
IEZpbGVBUEkgKi8sCiAJCQkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8sCiAJ
CQkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLywKKwkJCQlDNjcxREE0
NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJMzM1MDNDOUMxMDE3OUE5QTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMUFDMjI2MDIwREI2OUVBNzAwODlCNjY5
IC8qIE9mZmxpbmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMg
Ki8sCkBAIC0xNTQ1MSw2ICsxNTQ3Myw3IEBACiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0MzA1
IC8qIEV2ZW50cyAqLywKIAkJCQk4NUM1NkQwMzBBQThCQUE3MDBEOTU3NTUgLyogSFRNTCAqLywK
IAkJCQk4NUU3MTEzRDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCisJCQkJQzY3MURB
NUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTg1MzhGMDU3MEFENzIyQjkw
MDZBODFEMSAvKiBSYW5nZXMgKi8sCiAJCQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8qIFN0
eWxlU2hlZXRzICovLAogCQkJCTg1QTBGOThFMEFDNzE2RjQwMDE2MUZEQyAvKiBTVkcgKi8sCkBA
IC0xODU2NSw2ICsxODU4OCw4IEBACiAJCQkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpT
RXhjZXB0aW9uQmFzZS5oICovLAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAv
KiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKKwkJCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLywKKwkJCQlDNkY2NzE1QjEzRTM1RUIyMDBE
RTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAogCQkJCTE0
Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCkBA
IC0xOTIyNCw2ICsxOTI0OSwyMiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAw
OwogCQl9OworCQlDNjcxREE0NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUM2NzFEQTM4MTNFMzcxNDkw
MDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJCQlDNjcxREEzOTEzRTM3MTQ5
MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBNdXRh
dGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUM2NzFEQTVEMTNFMzcx
QjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTk5ODEsNiArMjAwMjIs
MTQgQEAKIAkJCQk4NTAzMUIzMzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAg
Ki8sCiAJCQkJODUwMzFCMzQwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAqLywK
IAkJCQk5M0VFQzFGMzA5QzI4Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8sCisJ
CQkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLywKKwkJ
CQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8sCisJ
CQkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJ
CQlDNkY2NzE0MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCQlD
NkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovLAorCQkJCUM2
RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZG
NjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEy
RDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovLAogCQkJCUJDRjM0
QTM2MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2
MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLywKQEAgLTIwMDQ1LDYgKzIwMDk0LDcg
QEAKIAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2Vy
LmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVn
aXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQlBNzZFNUY3RTEzNUUwRENGMDBBNjk4
MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oICovLAogCQkJCTQ5OThBRUM0MTNGOUQwRUEw
MDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovLAogCQkJCTQ5OThB
RUM1MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwg
Ki8sCkBAIC0yMjEwNCw2ICsyMjE1NCw4IEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRB
IC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURB
MkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMx
RkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNv
cmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05h
bWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5
IC8qIEpTTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5
MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjQ3NSw2ICsyMjUyNyw4IEBACiAJCQkJOTMzMDlERkMwOTlFNjQ5MjAwNTZFNTgxIC8qIE1vdmVT
ZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4
NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEEw
QTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2
RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8q
IE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI1MCw2ICsyNjMw
NCwxMCBAQAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1OURFNzkwNDEzRjE2QzdGMDAwN0ZDREYgLyogSmF2YU1l
dGhvZEpTQy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMg
LyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3
MTVDMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2RjI1MkMxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDIzQTEyNTEzRjVG
QTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTJhNjUwNzM4
MmJlYzQ3NGQ0NjJjODNjMTI1NTIzOGUxMzg3ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDEz
OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25M
aXN0ZW5lci5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJKU05v
ZGUuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNNdXRhdGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIoSlNP
YmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKQorICAgIDogbV93cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCks
IHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKK3sKKyAgICBp
ZiAod3JhcHBlcikKKyAgICAgICAgbV9qc0Z1bmN0aW9uLnNldE1heUJlTnVsbCgqbV9pc29sYXRl
ZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVCghZnVuY3Rpb24pOworCit9CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6fkpTTXV0
YXRpb25MaXN0ZW5lcigpCit7Cit9CisKK3ZvaWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNz
T3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRy
PE11dGF0aW9uUmVjb3JkVmVjdG9yPiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisgICAgQVNT
RVJUKG11dGF0aW9ucyk7CisgICAgQVNTRVJUKCFtdXRhdGlvbnMtPmlzRW1wdHkoKSk7CisKKyAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisKKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IG1fanNGdW5jdGlvbi5n
ZXQoKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7
CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRoZSB3aW5kb3cgbXVzdCBzdGlsbCBiZSBhY3Rp
dmUgaW4gaXRzIGZyYW1lLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTkyMT4uCisgICAgLy8gRklYTUU6IEEgYmV0dGVyIGZpeCBmb3IgdGhpcyBtYXkgYmUg
dG8gY2hhbmdlIERPTVdpbmRvdzo6ZnJhbWUoKSB0byBub3QgcmV0dXJuIGEgZnJhbWUgdGhlIGRl
dGFjaGVkIHdpbmRvdyB1c2VkIHRvIGJlIGluLgorICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkg
IT0gd2luZG93LT5pbXBsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSXMgdGhp
cyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPworICAgIFNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CisgICAgSlNWYWx1ZSBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworCisgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVu
dEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkg
eworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0gSlNWYWx1ZSgpOworICAgICAgICBjYWxs
VHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICB9CisKKyAgICBp
ZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIFJlZlB0cjxNdXRhdGlvbkxp
c3RlbmVyPiBwcm90ZWN0KHRoaXMpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11
dGF0aW9uTGlzdDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNp
emUoKTsgKytpKQorICAgICAgICAgICAgbXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdChpKS5nZXQoKSkpOworCisgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25MaXN0KSk7CisKKyAgICAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3Qg
OiBnbG9iYWxPYmplY3QpOworCisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3Rh
cnQoKTsKKyAgICAgICAgaWYgKGhhbmRsZUV2ZW50RnVuY3Rpb24pCisgICAgICAgICAgICBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBqc0Z1bmN0aW9uLCBhcmdzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBGSVhNRShhZGFtayk6IEZpZ3VyZSBvdXQgd2hhdCB0aGUgdGFyZ2V0IHNob3VsZCBi
ZTsgcHJvYmFibHkgdGhlCisgICAgICAgICAgICAvLyBEb2N1bWVudCBvciBET01XaW5kb3c/Cisg
ICAgICAgICAgICBKU1ZhbHVlIGN1cnJlbnRUYXJnZXQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbXV0YXRpb25zLT5hdCgwKS0+dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3Vy
cmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0
Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisKK2Jvb2wg
SlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIGxp
c3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlvbkxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3RlbmVyKTsK
KyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9qc0Z1bmN0
aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQoreworICAgIHJl
dHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1bmN0aW9u
LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZhMTZjOWYz
Nzc1ZmMzMmE5OWE2ZWU3YzkyZDc1OGI3YjJkZTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBKU011
dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVk
ZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmllci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIEpT
RE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgTXV0
YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNNdXRhdGlv
bkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3cmFwcGVy
LCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlvbkxpc3Rl
bmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxpc3Rl
bmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBET01XcmFw
cGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29ybGQu
Z2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBt
X3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFwcGVyLnNl
dChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11dGF0
aW9uUmVjb3JkVmVjdG9yPik7CisKK3ByaXZhdGU6CisgICAgSlNNdXRhdGlvbkxpc3RlbmVyKEpT
Qzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpOworCisgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxK
U0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpK
U09iamVjdD4gbV93cmFwcGVyOworCisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29s
YXRlZFdvcmxkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNN
dXRhdGlvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGVhYTVmODgwMDU5ZjkzNDJmMmQ5NThiZDk4ODI4
YTFmNmVlMGJkNS4uYzMyOThlYmIzOTgwNzYxOTYwM2MzODc0ZWE0MGNjMmJmZjZhYzRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTE5MSw2ICsxOTEsNTAgQEAgRU5ECiAgICAgcmV0dXJuIEBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJJbXBsOwogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbAoreworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5nID0g
KCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkdHlwZU1h
c2tIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIi
OworICAgIG15ICRwcmVmaXhlZEZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVu
Y3Rpb25OYW1lKTsKKworICAgICRpbXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7
CisgICAgJGltcGxJbmNsdWRlc3siSlNNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBt
eSBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCA9ICgpOworCisgICAgaWYgKCRmdW5jdGlv
bk5hbWUgZXEgImFkZCIpIHsKKyAgICAgICAgcHVzaChAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVy
SW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUganNUeXBlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwor
ICAgIGlmICghanNUeXBlcy5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBhc09i
amVjdChqc1R5cGVzKTsKKyAgICB1aW50OF90IHR5cGVNYXNrID0gMDsKKyAgICBKU1ZhbHVlIGpz
Q2hpbGRsaXN0ID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNo
aWxkbGlzdCIpKTsKKyAgICBpZiAoanNDaGlsZGxpc3QuaXNCb29sZWFuKCkgJiYganNDaGlsZGxp
c3QuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hp
bGRsaXN0RmxhZzsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRyaWJ1
dGUuaXNCb29sZWFuKCkgJiYganNBdHRyaWJ1dGUuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBl
TWFzayB8PSBNdXRhdGlvblJlY29yZDo6QXR0cmlidXRlRmxhZzsKKyAgICBKU1ZhbHVlIGpzQ2hh
cmFjdGVyZGF0YSA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJj
aGFyYWN0ZXJkYXRhIikpOworICAgIGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkgJiYg
anNDaGFyYWN0ZXJkYXRhLmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRp
b25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOworRU5ECisgICAgfQorCisgICAgcHVzaChAR2Vu
ZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUgbGlzdGVuZXIg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpbXAtPiR7
cHJlZml4ZWRGdW5jdGlvbk5hbWV9TXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVuZXI6
OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGN1cnJlbnRXb3JsZChleGVj
KSkke3Bhc3NSZWZQdHJIYW5kbGluZ30ke3R5cGVNYXNrSGFuZGxpbmd9KTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworRU5ECisgICAgcmV0dXJuIEBHZW5lcmF0
ZU11dGF0aW9uTGlzdGVuZXJJbXBsOworfQorCisKICMgUGFyYW1zOiAnaWRsRG9jdW1lbnQnIHN0
cnVjdAogc3ViIEdlbmVyYXRlTW9kdWxlCiB7CkBAIC0yMDI2LDYgKzIwNzAsMTAgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgImFkZCIpKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3Zl
RXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgInJlbW92ZSIpKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0
QWRkTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoImFkZCIpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0UmVtb3Zl
TXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoInJlbW92ZSIpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAkYXJnc0luZGV4ID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQxOGY3
OTFmYzcwZDdmNzFkNjliOGU4OGYyM2YzNmQ2YTIwLi5hNDc2NGQ5ODc2ZDI3NTdmMmY0NmU1NTY0
MDkyYWIyMDI1YWQ3ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDg0LDYgKzQ4NCwxMiBAQCBzdWIgR2V0SW50ZXJu
YWxGaWVsZHMKICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJldmVudExpc3Rl
bmVyQ2FjaGVJbmRleCIpOwogICAgIH0KIAorICAgIGlmIChJc1N1YlR5cGUoJGRhdGFOb2RlLCAi
RWxlbWVudCIpIHx8CisgICAgICAgIElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpIHx8
CisgICAgICAgICRuYW1lIGVxICJEb2N1bWVudEZyYWdtZW50IikgeworICAgICAgICBwdXNoKEBj
dXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7CisgICAg
fQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1c3Rv
bUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0KQEAg
LTExNDAsNiArMTE0Niw1MyBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlvbkxp
c3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15
ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQdHJI
YW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7CisgICAg
bXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAi
Y3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25OYW1l
IGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0aW9u
TmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBsSW5j
bHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhNdXRh
dGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZlbnRM
aXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhE
T01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7bG9v
a3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7
CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVj
dCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlzdCIp
KTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3QtPkJv
b2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNo
aWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0g
b2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICgh
djhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkKKyAg
ICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOworICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdldCh2
ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFyYWN0
ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQorICAg
ICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOwor
ICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Cisg
ICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVmaXhl
ZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFuZGxp
bmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRkZW5E
ZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6bXV0
YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9
CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7CiAg
ICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyNDUsNiArMTI5OCwxNCBAQCBzdWIg
R2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdlbmVy
YXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRpb25M
aXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soJGlt
cGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0zMTYw
LDcgKzMyMjEsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScgPT4g
MSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAnTWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJyA9
PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNjEsNiArMzMy
MywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIq
Pigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAorICAg
IGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRl
c3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1ZX0g
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVyKj4o
JHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2
ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAgICAg
IHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFlN2Y1
MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAsNiAr
NjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25M
aXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNpbmNs
dWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4
Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gVjhE
T01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0ZW5l
ckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Zmlu
ZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJvdG90
eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+R2V0
UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRvdyhn
bG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdl
cjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZiBF
TkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRoTlNS
ZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4ODE0
OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVudFRh
cmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwogICAg
IGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0
OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRh
cmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2
ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUs
IExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
dXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+
LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAvLyBY
UGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5MmQx
ZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDliNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5h
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFt
ZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVjdFBy
b3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBc
CisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAgIFYo
ZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94eS5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkK
KyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0ZW5l
cikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0ZW5l
ci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisKK1Y4
TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFtX2xp
c3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0KCk7
CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0ZW5l
cik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4TXV0
YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3RlbmVy
KiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRlcik7
CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4TXV0
YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fbGlz
dGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAgICAg
ICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0
cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRh
dGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8gRG9u
J3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0YW5j
ZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11dGF0
aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKwor
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29udGV4
dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKyAg
ICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11dGF0
aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+c2l6
ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhpKSwg
dG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJvb2wg
aWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVuZXIs
IDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4TXV0
YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9u
TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2MTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9u
TGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJfaAor
I2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djguaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDogcHVi
bGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNv
bnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29udGV4
dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0
cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsgfQor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6
Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhNdXRh
dGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRD
b250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJDYWxs
YmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNwb3Nl
TGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fbGlz
dGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3MTQ5
ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRh
dGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRpb25M
aXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKKwor
I2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxp
c3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3IgVjhN
dXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9mIHY4
OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+
IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUtPklz
T2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9GaW5k
V3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFwcGVy
KHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBlcih2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbGlz
dGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRh
dGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRpb25M
aXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlzdGVu
ZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRhdGlv
bkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3RlbmVy
Kj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxpbmUg
UGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpm
aW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIEFT
U0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVj
dCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlvbkxp
c3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFwcGVy
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3JsZENv
bnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisgICAg
ICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9u
TGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKworICAg
IHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEzZmI4
NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhiMzUy
MjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAt
NjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEgdmFs
dWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9pZCBj
cmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJUKG9i
amVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9jYWw8
djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4KTsK
ICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4IDEx
ZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJjNzJk
ZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMsMTQg
KzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAgICBp
bnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNrKHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJhY2so
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNoIGV4
Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBpZiAo
Y2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0gdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpD
YXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFjaykp
OwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2ZW50
RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFjNjUz
NTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZkNTBm
YzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0
ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3cm9u
ZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZl
Li5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJDaGFy
YWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9u
RXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRC
cmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6
ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2Rp
ZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJlY29y
ZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMp
OworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRp
b24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKIH0K
IAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
aW5kZXggM2VhNDk5MzY5MzU3NDliMTMxOTJiNzYzNDFkNTA5YjE1MzhlNGMwYy4uY2RjZDI2NTdl
MzI2MTEwZWExOGY1ZTJiMjUwZWNmNzZkOGU2MjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVCdXR0
b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUg
IkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAjaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29y
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2lu
Y2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAt
MTQxLDYgKzE0NSw4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgaWYgKHJlZkNoaWxk
LT5wcmV2aW91c1NpYmxpbmcoKSA9PSBuZXdDaGlsZCB8fCByZWZDaGlsZCA9PSBuZXdDaGlsZCkg
Ly8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIENoaWxkbGlzdENo
YW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOworCiAgICAgUmVmUHRyPE5vZGU+IG5l
eHQgPSByZWZDaGlsZDsKICAgICBSZWZQdHI8Tm9kZT4gcmVmQ2hpbGRQcmV2aW91c1NpYmxpbmcg
PSByZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25z
dF9pdGVyYXRvciBpdCA9IHRhcmdldHMuYmVnaW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsgKytp
dCkgewpAQCAtMjcyLDYgKzI3OCw4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29w
ZSBtdXRhdGlvbih0aGlzKTsKKwogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gb2xkQ2hpbGQtPnBy
ZXZpb3VzU2libGluZygpOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gb2xkQ2hpbGQtPm5leHRT
aWJsaW5nKCk7CiAKQEAgLTQwMCw2ICs0MDgsOCBAQCBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hp
bGRyZW4oQ29udGFpbmVyTm9kZSogY29udGFpbmVyKQogICAgIE5vZGVWZWN0b3IgY2hpbGRyZW47
CiAgICAgY29sbGVjdE5vZGVzKGNvbnRhaW5lciwgY2hpbGRyZW4pOwogCisgICAgQ2hpbGRsaXN0
Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29udGFpbmVyKTsKKwogICAgIGZvciAoTm9k
ZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGls
ZHJlbi5lbmQoKTsgaXQrKykgewogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKICAg
ICAgICAgLy8gZmlyZSByZW1vdmVkIGZyb20gZG9jdW1lbnQgbXV0YXRpb24gZXZlbnRzLgpAQCAt
NjExLDYgKzYyMSw4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgaWYgKHRhcmdldHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIENoaWxkbGlzdENoYW5nZWRN
dXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOworCiAgICAgLy8gTm93IGFjdHVhbGx5IGFkZCB0
aGUgY2hpbGQocmVuKQogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gbGFzdENoaWxkKCk7CiAgICAg
Zm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhcmdldHMuYmVnaW4oKTsgaXQg
IT0gdGFyZ2V0cy5lbmQoKTsgKytpdCkgewpAQCAtMTA5NSw2ICsxMTA3LDExIEBAIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRy
PE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQt
PmRvY3VtZW50KCk7CiAKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIENoaWxk
bGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGMtPnBhcmVudE5vZGUoKSk7CisgICAg
ICAgIG11dGF0aW9uLmNoaWxkQWRkZWQoYy5nZXQoKSk7CisgICAgfQorCiAgICAgaWYgKGMtPnBh
cmVudE5vZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RF
SU5TRVJURURfTElTVEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZUluc2VydGVkRXZlbnQsIHRydWUs
IGMtPnBhcmVudE5vZGUoKSkpOwogCkBAIC0xMTE2LDYgKzExMzMsMTEgQEAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+
IGMgPSBjaGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3Vt
ZW50KCk7CiAKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIENoaWxkbGlzdENo
YW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGMtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIG11
dGF0aW9uLndpbGxSZW1vdmVDaGlsZChjKTsKKyAgICB9CisKICAgICAvLyBkaXNwYXRjaCBwcmUt
cmVtb3ZhbCBtdXRhdGlvbiBldmVudHMKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRvY3Vt
ZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5PREVSRU1PVkVEX0xJU1RFTkVSKSkK
ICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRXZlbnQsIHRydWUsIGMtPnBhcmVudE5vZGUoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTMyOTg1MmQwZTBiZDAxNGJhY2ExMTkxMzg5MGI3
OWZmMGRmZWI1ZC4uYmM5YjUyY2ExOGZiZmZkMjNjZTBjMzcyMzQzOWIzYTVmMjk1MmE5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2lu
Y2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIK
ICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlci5oIgogI2luY2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCkBAIC01MDkxLDQgKzUw
OTIsMTEgQEAgRG9jdW1lbnRMb2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogICAgIHJl
dHVybiBsb2FkZXI7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnQ6OmVuc3VyZU11
dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0RGF0YSkKKyAg
ICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRpb25UYXJnZXRE
YXRhKTsKKyAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2U4NDYxMjZlYTdjMDc1
MGRhZjgwM2JjMmY1NWUzYzY0YTNiNDVlNC4uZDExNGE5ZmUzYmRhZTIzNzY3ZmRjNmU3YzM2YWE0
YWMxM2FkMmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFR5
cGVzLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJp
bGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTEwMyw2ICsxMDQsNyBAQCBjbGFzcyBNZWRpYUNhblN0
YXJ0TGlzdGVuZXI7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlNYXRj
aGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKK2NsYXNzIE11dGF0aW9u
VGFyZ2V0RGF0YTsKIGNsYXNzIE5vZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CiBjbGFz
cyBQYWdlOwpAQCAtMjA2LDcgKzIwOCw3IEBAIGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNl
IHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHksIERlZmVyUmVjYWxjU3R5bGUgfTsKIAotY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNj
b3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CitjbGFzcyBEb2N1bWVudCA6IHB1
YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgTXV0
YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewpAQCAtMTEwMSw2ICsx
MTAzLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1s
VmVyc2lvbiA9IFN0cmluZygpOyB9CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSog
bXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7
IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXRE
YXRhKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3Jp
dGVDb3VudEluY3JlbWVudGVyOwogCkBAIC0xNDA5LDYgKzE0MTQsOCBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeTsKKworICAgIE93blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJn
ZXREYXRhOwogfTsKIAogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJl
cXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxp
bmUgdGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDVjNjgzOGVjNWY1ZjA0MzUxMThh
ODVmNmQxNGYyZWEzMDkwMWQwMzYuLjE3ZDk0MzMwYzNlZDRkN2UwMzU0YjA5OTA5ZTY4N2YwZWEx
NDY3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjQ1LDYgKzI0NSwxMSBAQCBtb2R1
bGUgY29yZSB7CiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8
fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxp
c3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBlcyk7
CisgICAgICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxp
c3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVy
IERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVu
ZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBv
bmJsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggMjNkOGMy
MDQzZTM4YThkYjE4ZjJmY2RlY2RmNDAyZDM1YjFkYmM4Ni4uMmFiMzc5MjhkYTUwZDg1NGNkMDU5
ZmIyYTUxM2E3OWNmYWFiM2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIK
ICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtOTAsNCArOTEsMTEgQEAgYm9vbCBEb2N1bWVudEZyYWdt
ZW50OjpwYXJzZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIEYKICNlbmRpZgogfQogCitNdXRhdGlvblRhcmdldERhdGEqIERvY3VtZW50RnJhZ21lbnQ6
OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0
RGF0YSkKKyAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRp
b25UYXJnZXREYXRhKTsKKyAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDZiZjUyZjFhNzg0
YTEyMWM5YTNiZDA4YzgwOGM4MjM2MmEwNGZmMzAuLjZlZmQ3NzAzNGE1NDY2YjgzYmM5ZDRkMGI5
Y2EwMjRmMjA5ZTk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAt
MjYsMTAgKzI2LDE0IEBACiAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIE11dGF0
aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWlu
ZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC00MiwxMCAr
NDYsMTUgQEAgcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBNdXRhdGlv
blRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRpb25UYXJn
ZXREYXRhLmdldCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11
dGF0aW9uVGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9k
ZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJv
b2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNv
bnN0OworCisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERh
dGE7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5pZGwKaW5kZXggODgyYjYyZGIzOWViN2YyZTA1MDQ3ODIwNDkyYjdlOTM2MWE4ZWRlZC4uYjc1
Yjg1ZmJkNmQyNTIwZmQ0Y2I2ZjBjN2E2OGYwZjFiYzc4NjRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjUsNiArMjUsMTEgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5
U2VsZWN0b3JBbGwoaW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFM
QU5HVUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlzdGVu
ZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAg
ICAgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVu
ZXIgbGlzdGVuZXIpOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDcxNjhlMTJiYjRiZDg0NjgxYjE1ZjhkNTE3NzE2YmIwMzNkMDg5ZWIuLmE3NjU3Zjk3MDQx
NjM3N2I4YjgwNDg4ZmE5M2NhYjUzZDYzZGYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCkBA
IC02OTksNiArNzAwLDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3lu
Y2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAg
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVB
dHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGxvY2FsTmFtZSk7CisgICAgZW5xdWV1ZU11dGF0aW9uKG11
dGF0aW9uKTsKKyAgICBvd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzMyLDYg
KzczNywxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5jaHJvbml6
aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0
ZUNoYW5nZWQodGhpcywgbmFtZS5sb2NhbE5hbWUoKSk7CisgICAgZW5xdWV1ZU11dGF0aW9uKG11
dGF0aW9uKTsKKyAgICBvd25lckRvY3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7
CiB9CiAKIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTIw
NTIsNCArMjA2MSwxNCBAQCBQYXNzUmVmUHRyPFdlYktpdEFuaW1hdGlvbkxpc3Q+IEVsZW1lbnQ6
OndlYmtpdEdldEFuaW1hdGlvbnMoKSBjb25zdAogICAgIHJldHVybiBhbmltQ29udHJvbGxlci0+
YW5pbWF0aW9uc0ZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwogfQogCitNdXRhdGlvblRhcmdldERh
dGEqIEVsZW1lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuIGhhc1JhcmVE
YXRhKCkgPyByYXJlRGF0YSgpLT5tdXRhdGlvblRhcmdldERhdGEoKSA6IDA7Cit9CisKK011dGF0
aW9uVGFyZ2V0RGF0YSogRWxlbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDE5MjNiMDZi
MGIwODI1YjE2ZWIwMTZiOGU3NDgxMzI2ZWNiZThjOWIuLmUwYzk4MTJkNTc0ZDIxNzg4ZGZkNzVl
YjdmN2JlOTBmMjdiZTZiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAi
TXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJT
Y3JvbGxUeXBlcy5oIgogCkBAIC00OSw3ICs1MCw3IEBAIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0
ZVN0YXRlIHsKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlRGVmYXVsdAogfTsKIAotY2xhc3MgRWxl
bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIEVsZW1lbnQgOiBwdWJsaWMgQ29u
dGFpbmVyTm9kZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAgICAgdmlydHVhbCB+RWxlbWVudCgpOwpAQCAtMzgxLDYgKzM4Miw5IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSog
YmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERl
bHRhID0gMCk7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJn
ZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0aW9u
VGFyZ2V0RGF0YSgpOworCiAgICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG9mIEVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoKSBjYWxscyB0aGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMuCiAgICAg
Ly8gVGhleSBhcmUgc2VwYXJhdGVkIHRvIGFsbG93IGEgZGlmZmVyZW50IGZsb3cgb2YgY29udHJv
bCBpbiBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkuCiAgICAgdm9pZCByZWNhbGNT
dHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaWRsCmluZGV4IDllYmIwMmE1OTJmNzE4MzI2YzE2ZTAyZjE5ODFiNDFkOWM4ODkwZWMu
LjcyNzcxOGE2ZTU2NjMzZGI3MzNmOGJkNzBlYmY0MTlmZmE5Yjk2ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwKQEAgLTE0MCw2ICsxNDAsMTEgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNp
ZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9D
CisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3Rl
bmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJl
bW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5k
aWYKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JK
RUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0
dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oCmluZGV4IDFjYWNjZDQ5NGYxMGYyYTZjMzA2ZTYwYmUxMzQ0YTc1NDY1
ZTI5NmYuLmFlZGQ1NmE5NDIxMmMxMDAyZGJjZDk0ZWEzOGM3ZWRiNzU0MTU1ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJD
bGFzc0xpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIk5v
ZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtMzksNiArNDAsMTUg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldENvbXB1dGVkU3R5bGUoKTsKIAorICAgIE11dGF0
aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRh
cmdldERhdGEuZ2V0KCk7IH0KKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0aW9u
VGFyZ2V0RGF0YSgpCisgICAgeworICAgICAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXREYXRhKQor
ICAgICAgICAgICAgbV9tdXRhdGlvblRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgTXV0YXRpb25U
YXJnZXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgpOwor
ICAgIH0KKworCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5jZVVw
ZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRzRm9j
dXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwogCkBAIC01NSw2ICs2NSw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnQ7CiAjZW5kaWYKK3ByaXZhdGU6CisgICAgT3duUHRyPE11dGF0aW9uVGFy
Z2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERhdGE7CiB9OwogCiBpbmxpbmUgSW50U2l6ZSBkZWZh
dWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVu
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYWQ4ZDg4NDEwNDUxZDI4NjM1N2RlZTBhNTVkMTMzZDQ2Njk2YTAx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvbkxpc3RlbmVyX2gKKyNkZWZpbmUgTXV0
YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29y
ZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0
cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZFZlY3RvcjsKKworY2xhc3MgTXV0YXRp
b25MaXN0ZW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uTGlzdGVuZXI+IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5NdXRhdGlvbkxpc3RlbmVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8TXV0YXRp
b25SZWNvcmRWZWN0b3I+KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TXV0YXRpb25MaXN0ZW5lciYpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKSA9IDA7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uTGlzdGVuZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVhZDAxZjhkM2I2NmZmMTlkM2QzODFiMjZkNzRmZWNiN2RjNmY3YWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBQ
dXJlSW50ZXJmYWNlLAorICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBdIE11dGF0aW9uTGlz
dGVuZXIgeworICAgICAgICAvLyB2b2lkIGhhbmRsZUV2ZW50KGluIE11dGF0aW9uUmVjb3JkW10g
bXV0YXRpb25zKQorICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIEFycmF5IG11dGF0aW9ucyk7
CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29y
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMwZDQwOGJkNTc1YzQ4ODcwMjMzNTE5NjMwZTA4NmIyYTY0NjNjMmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCkBAIC0wLDAgKzEsMjYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVk
ZSAiU3RhdGljTm9kZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
eworCitjbGFzcyBFbXB0eU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlTGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlOb2RlTGlzdCk7CisgICAgfQorCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBp
dGVtKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVt
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcml2
YXRlOgorICAgIEVtcHR5Tm9kZUxpc3QoKSB7IH0KK307CisKK30KKworUGFzc1JlZlB0cjxNdXRh
dGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1Jl
ZlB0cjxOb2RlPiB0YXJnZXQsIHVuc2lnbmVkIGFkZGVkQ291bnQsIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IHJlbW92ZWQsIHVuc2lnbmVkIGNoaWxkbGlzdEluZGV4KQoreworICAgIFJlZlB0cjxNdXRh
dGlvblJlY29yZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoQ2hpbGRs
aXN0RmxhZywgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0YSA9IGFkb3B0
UHRyKG5ldyBDaGlsZGxpc3REYXRhKTsKKyAgICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhLT5h
ZGRlZENvdW50ID0gYWRkZWRDb3VudDsKKyAgICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhLT5y
ZW1vdmVkTm9kZXMgPSByZW1vdmVkOworICAgIGlmICghbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0
YS0+cmVtb3ZlZE5vZGVzKQorICAgICAgICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhLT5yZW1v
dmVkTm9kZXMgPSBFbXB0eU5vZGVMaXN0OjpjcmVhdGUoKTsKKyAgICBtdXRhdGlvbi0+bV9jaGls
ZGxpc3REYXRhLT5jaGlsZGxpc3RJbmRleCA9IGNoaWxkbGlzdEluZGV4OworICAgIHJldHVybiBt
dXRhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0
aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0
LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJOYW1lKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJl
Y29yZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoQXR0cmlidXRlRmxh
ZywgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1fYXR0ck5hbWUgPSBhdHRyTmFtZTsKKyAgICBy
ZXR1cm4gbXV0YXRpb24ucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3Jk
PiBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4g
dGFyZ2V0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoQ2hhcmFj
dGVyZGF0YUZsYWcsIHRhcmdldCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE11dGF0aW9u
UmVjb3JkOjp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
Y2hpbGRsaXN0LCAoImNoaWxkbGlzdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgYXR0cmlidXRlLCAoImF0dHJpYnV0ZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgY2hhcmFjdGVyZGF0YSwgKCJjaGFyYWN0ZXJkYXRhIikpOworCisg
ICAgc3dpdGNoIChtX3R5cGVGbGFnKSB7CisgICAgY2FzZSBNdXRhdGlvblJlY29yZDo6Q2hpbGRs
aXN0RmxhZzoKKyAgICAgICAgcmV0dXJuIGNoaWxkbGlzdDsKKyAgICBjYXNlIE11dGF0aW9uUmVj
b3JkOjpBdHRyaWJ1dGVGbGFnOgorICAgICAgICByZXR1cm4gYXR0cmlidXRlOworICAgIGNhc2Ug
TXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOgorICAgICAgICByZXR1cm4gY2hhcmFj
dGVyZGF0YTsKKyAgICB9CisgICAgQVNTRVJUKGZhbHNlKTsKKyAgICByZXR1cm4gZW1wdHlBdG9t
OworfQorCitNdXRhdGlvblJlY29yZDo6TXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlRmxhZyB0
eXBlRmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgOiBtX3R5cGVGbGFnKHR5cGVG
bGFnKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgICwgbV9pbkRvY3VtZW50KG1fdGFyZ2V0
LT5pbkRvY3VtZW50KCkpCit7Cit9CisKK011dGF0aW9uUmVjb3JkOjp+TXV0YXRpb25SZWNvcmQo
KQoreworfQorCisKK0NoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb246OkNoaWxkbGlzdENoYW5n
ZWRBY2N1bXVsYXRpb24oUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgOiBtX3RhcmdldCh0
YXJnZXQpCisgICAgLCBtX2FkZGVkTm9kZUNvdW50KDApCisgICAgLCBtX2NoaWxkbGlzdEluZGV4
KC0xKQorICAgICwgbV9sYXN0UmVtb3ZlZCgwKQorICAgICwgbV9sYXN0QWRkZWQoMCkKK3sKK30K
KworQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6fkNoaWxkbGlzdENoYW5nZWRBY2N1bXVs
YXRpb24oKQoreworICAgIEFTU0VSVChtX3JlbW92ZWROb2Rlcy5pc0VtcHR5KCkpOworfQorCit2
b2lkIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb246OmNoaWxkQWRkZWQoTm9kZSogY2hpbGQp
Cit7CisgICAgaWYgKG1fY2hpbGRsaXN0SW5kZXggPCAwKSB7CisgICAgICAgIG1fY2hpbGRsaXN0
SW5kZXggPSAwOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5n
KCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAgIG1fY2hpbGRsaXN0
SW5kZXgrKzsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKG1fbGFzdEFkZGVkID09IGNoaWxk
LT5wcmV2aW91c1NpYmxpbmcoKSk7CisKKyAgICArK21fYWRkZWROb2RlQ291bnQ7CisgICAgbV9s
YXN0QWRkZWQgPSBjaGlsZDsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9u
Ojp3aWxsUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBjaGlsZCkKK3sKKyAgICBBU1NFUlQo
IW1fYWRkZWROb2RlQ291bnQpOworICAgIGlmIChtX2NoaWxkbGlzdEluZGV4IDwgMCkgeworICAg
ICAgICBtX2NoaWxkbGlzdEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gY2hpbGQt
PnByZXZpb3VzU2libGluZygpOyBuOyBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCkpCisgICAgICAg
ICAgICBtX2NoaWxkbGlzdEluZGV4Kys7CisKKyAgICAgICAgbV9sYXN0QWRkZWQgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChtX2xhc3RSZW1v
dmVkID09IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7CisKKyAgICBtX2xhc3RSZW1vdmVkID0g
Y2hpbGQ7CisgICAgbV9yZW1vdmVkTm9kZXMuYXBwZW5kKG1fbGFzdFJlbW92ZWQpOworfQorCit2
b2lkIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb246OmRpc3BhdGNoKCkKK3sKKyAgICBOb2Rl
KiB0YXJnZXQgPSBtX3RhcmdldC5nZXQoKTsKKyAgICBpZiAoIW1fYWRkZWROb2RlQ291bnQgJiYg
bV9yZW1vdmVkTm9kZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkbGlz
dENoYW5nZWQobV90YXJnZXQsIG1fYWRkZWROb2RlQ291bnQsIFN0YXRpY05vZGVMaXN0OjphZG9w
dChtX3JlbW92ZWROb2RlcyksIG1fY2hpbGRsaXN0SW5kZXgpOworICAgIGlmICh0YXJnZXQtPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgdG9FbGVtZW50KHRhcmdldCktPmVucXVldWVNdXRhdGlv
bihtdXRhdGlvbik7CisgICAgZWxzZSBpZiAodGFyZ2V0LT5ub2RlVHlwZSgpID09IE5vZGU6OkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREUpCisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21l
bnQqPih0YXJnZXQpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIHRhcmdldC0+b3du
ZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworfQorCisKK0NoaWxkbGlz
dENoYW5nZXNBY2N1bXVsYXRvciogQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpzX2luc3Rh
bmNlID0gMDsKKworQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpDaGlsZGxpc3RDaGFuZ2Vz
QWNjdW11bGF0b3IoKQoreworfQorCisvLyBDYW4gdGhpcyBnZXQgY2FsbGVkCitDaGlsZGxpc3RD
aGFuZ2VzQWNjdW11bGF0b3I6On5DaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKQoreworICAg
IEFTU0VSVChtX3Njb3BpbmdMZXZlbHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9hY2N1bXVs
YXRpb25zLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9y
Ojppbml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOworICAgIE93blB0cjxD
aGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I+IGluc3RhbmNlID0gYWRvcHRQdHIobmV3IENoaWxk
bGlzdENoYW5nZXNBY2N1bXVsYXRvcik7CisgICAgc19pbnN0YW5jZSA9IGluc3RhbmNlLmxlYWtQ
dHIoKTsKK30KKworCitDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IqIENoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKQoreworICAgIGlmICghc19pbnN0YW5jZSkKKyAgICAg
ICAgaW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIHNfaW5zdGFuY2U7Cit9CisKK3ZvaWQgQ2hp
bGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpjaGlsZEFkZGVkKE5vZGUqIHRhcmdldCwgTm9kZSog
Y2hpbGQpCit7CisgICAgQVNTRVJUKG1fYWNjdW11bGF0aW9ucy5jb250YWlucyh0YXJnZXQpKTsK
KyAgICBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKiByZWNvcmQgPSBtX2FjY3VtdWxhdGlv
bnMuZ2V0KHRhcmdldCk7CisgICAgaWYgKHJlY29yZCkKKyAgICAgICAgcmVjb3JkLT5jaGlsZEFk
ZGVkKGNoaWxkKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OndpbGxS
ZW1vdmVDaGlsZChOb2RlKiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQpCit7CisgICAg
QVNTRVJUKG1fYWNjdW11bGF0aW9ucy5jb250YWlucyh0YXJnZXQpKTsKKyAgICBDaGlsZGxpc3RD
aGFuZ2VkQWNjdW11bGF0aW9uKiByZWNvcmQgPSBtX2FjY3VtdWxhdGlvbnMuZ2V0KHRhcmdldCk7
CisgICAgaWYgKHJlY29yZCkKKyAgICAgICAgcmVjb3JkLT53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQp
OworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5jcmVtZW50U2NvcGlu
Z0xldmVsKE5vZGUqIHRhcmdldCkKK3sKKyAgICB1bnNpZ25lZCBzY29waW5nTGV2ZWw7CisKKyAg
ICBpZiAobV9zY29waW5nTGV2ZWxzLmNvbnRhaW5zKHRhcmdldCkpCisgICAgICAgIHNjb3BpbmdM
ZXZlbCA9IG1fc2NvcGluZ0xldmVscy5nZXQodGFyZ2V0KSArIDE7CisgICAgZWxzZSB7CisgICAg
ICAgIHNjb3BpbmdMZXZlbCA9IDE7CisgICAgICAgIGJvb2wgaGFzTGlzdGVuZXJzID0gdGFyZ2V0
LT5vd25lckRvY3VtZW50KCktPmhhc011dGF0aW9uTGlzdGVuZXJzKCk7CisKKyAgICAgICAgaWYg
KCFoYXNMaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQtPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgICAgICAgICBoYXNMaXN0ZW5lcnMgPSB0b0VsZW1lbnQodGFyZ2V0KS0+aGFz
TXV0YXRpb25MaXN0ZW5lcnMoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldC0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgIGhh
c0xpc3RlbmVycyA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPih0YXJnZXQpLT5oYXNN
dXRhdGlvbkxpc3RlbmVycygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhc0xpc3RlbmVy
cykKKyAgICAgICAgICAgIG1fYWNjdW11bGF0aW9ucy5zZXQodGFyZ2V0LCBuZXcgQ2hpbGRsaXN0
Q2hhbmdlZEFjY3VtdWxhdGlvbih0YXJnZXQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9hY2N1bXVsYXRpb25zLnNldCh0YXJnZXQsIDApOworICAgIH0KKworICAgIG1fc2NvcGluZ0xl
dmVscy5zZXQodGFyZ2V0LCBzY29waW5nTGV2ZWwpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6ZGVjcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKK3sKKyAg
ICBBU1NFUlQobV9zY29waW5nTGV2ZWxzLmNvbnRhaW5zKHRhcmdldCkpOworICAgIHVuc2lnbmVk
IHNjb3BpbmdMZXZlbCA9IG1fc2NvcGluZ0xldmVscy5nZXQodGFyZ2V0KSAtIDE7CisKKyAgICBp
ZiAoc2NvcGluZ0xldmVsID4gMCkgeworICAgICAgICBtX3Njb3BpbmdMZXZlbHMuc2V0KHRhcmdl
dCwgc2NvcGluZ0xldmVsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE93blB0cjxD
aGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uPiByZWNvcmQgPSBhZG9wdFB0cihtX2FjY3VtdWxh
dGlvbnMudGFrZSh0YXJnZXQpKTsKKyAgICBtX3Njb3BpbmdMZXZlbHMucmVtb3ZlKHRhcmdldCk7
CisKKyAgICBpZiAocmVjb3JkKQorICAgICAgICByZWNvcmQtPmRpc3BhdGNoKCk7Cit9CisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDNjNzdkMjNiZTZlYmIyZjFhNDhjZmQyOWUwMmJhMmEwM2YwMTM2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKQEAgLTAsMCAr
MSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRf
aAorCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJl
Y29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQo
UGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIHVuc2lnbmVkIGFkZGVkQ291bnQsIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IHJlbW92ZWQsIHVuc2lnbmVkIGNoaWxkbGlzdEluZGV4KTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVm
UHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5NdXRhdGlvblJlY29yZCgpOwor
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisgICAgTm9kZSogdGFyZ2V0KCkgeyBy
ZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KKyAgICBib29sIGluRG9jdW1lbnQoKSB7IHJldHVybiBt
X2luRG9jdW1lbnQ7IH0KKworICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxpc3QnCisgICAgdW5z
aWduZWQgYWRkZWRDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3REYXRh
ID8gbV9jaGlsZGxpc3REYXRhLT5hZGRlZENvdW50IDogMDsKKyAgICB9CisgICAgTm9kZUxpc3Qq
IHJlbW92ZWROb2RlcygpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3REYXRhID8g
bV9jaGlsZGxpc3REYXRhLT5yZW1vdmVkTm9kZXMuZ2V0KCkgOiAwOworICAgIH0KKyAgICB1bnNp
Z25lZCBjaGlsZGxpc3RJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3RE
YXRhID8gbV9jaGlsZGxpc3REYXRhLT5jaGlsZGxpc3RJbmRleCA6IDA7CisgICAgfQorCisgICAg
Ly8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJO
YW1lKCkgeyByZXR1cm4gbV9hdHRyTmFtZTsgfQorCisgICAgLy8gTm90IHBhcnQgb2YgdGhlIElE
TCwgYnV0IHVzZWQgaW50ZXJuYWxseSBmb3IgZmFzdCB0eXBlLWJhc2VkIG9wZXJhdGlvbnMuCisg
ICAgZW51bSBNdXRhdGlvblR5cGVGbGFnIHsKKyAgICAgICAgQ2hpbGRsaXN0RmxhZyA9ICgxIDw8
IDApLAorICAgICAgICBBdHRyaWJ1dGVGbGFnID0gKDEgPDwgMSksCisgICAgICAgIENoYXJhY3Rl
cmRhdGFGbGFnID0gKDEgPDwgMikKKyAgICB9OworICAgIE11dGF0aW9uVHlwZUZsYWcgdHlwZUZs
YWcoKSB7IHJldHVybiBtX3R5cGVGbGFnOyB9CisKK3ByaXZhdGU6CisgICAgTXV0YXRpb25SZWNv
cmQoTXV0YXRpb25UeXBlRmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgc3Ry
dWN0IENoaWxkbGlzdERhdGEgeworICAgICAgICB1bnNpZ25lZCBhZGRlZENvdW50OworICAgICAg
ICBSZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWROb2RlczsKKyAgICAgICAgdW5zaWduZWQgY2hpbGRs
aXN0SW5kZXg7CisgICAgfTsKKworICAgIE11dGF0aW9uVHlwZUZsYWcgbV90eXBlRmxhZzsKKyAg
ICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgYm9vbCBtX2luRG9jdW1lbnQ7CisgICAgQXRv
bWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgT3duUHRyPENoaWxkbGlzdERhdGE+IG1fY2hpbGRs
aXN0RGF0YTsKK307CisKKworY2xhc3MgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbiB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbik7CisK
K3B1YmxpYzoKKyAgICBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4gdGFyZ2V0KTsKKyAgICB+Q2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbigpOworCisgICAg
dm9pZCBjaGlsZEFkZGVkKE5vZGUqIGNoaWxkKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+IGNoaWxkKTsKKyAgICB2b2lkIGRpc3BhdGNoKCk7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPE5vZGU+IG1fdGFyZ2V0OworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBt
X3JlbW92ZWROb2RlczsKKyAgICB1bnNpZ25lZCBtX2FkZGVkTm9kZUNvdW50OworICAgIGludCBt
X2NoaWxkbGlzdEluZGV4OworICAgIFJlZlB0cjxOb2RlPiBtX2xhc3RSZW1vdmVkOworICAgIFJl
ZlB0cjxOb2RlPiBtX2xhc3RBZGRlZDsKK307CisKK2NsYXNzIENoaWxkbGlzdENoYW5nZXNBY2N1
bXVsYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hpbGRsaXN0Q2hhbmdlc0FjY3Vt
dWxhdG9yKTsKKworcHVibGljOgorICAgIH5DaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsK
KworICAgIHN0YXRpYyBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IqIGluc3RhbmNlKCk7CisK
KyAgICB2b2lkIGluY3JlbWVudFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpOworICAgIHZvaWQg
ZGVjcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCk7CisKKyAgICB2b2lkIGNoaWxkQWRk
ZWQoTm9kZSogdGFyZ2V0LCBOb2RlKiBjaGlsZCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQo
Tm9kZSogdGFyZ2V0LCBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkKTsKKworcHJpdmF0ZToKKyAgICBD
aGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCk7CisKKyAgICBIYXNoTWFwPE5vZGUqLCB1bnNpZ25lZD4gbV9zY29waW5nTGV2ZWxzOworICAg
IEhhc2hNYXA8Tm9kZSosIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24qPiBtX2FjY3VtdWxh
dGlvbnM7CisKKyAgICBzdGF0aWMgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yKiBzX2luc3Rh
bmNlOworfTsKKworCitjbGFzcyBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUpOworCitw
dWJsaWM6CisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUoUGFzc1JlZlB0cjxOb2Rl
PiB0YXJnZXQpIDogbV90YXJnZXQodGFyZ2V0KSB7IENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRv
cjo6aW5zdGFuY2UoKS0+aW5jcmVtZW50U2NvcGluZ0xldmVsKG1fdGFyZ2V0LmdldCgpKTsgfQor
ICAgIH5DaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSgpIHsgQ2hpbGRsaXN0Q2hhbmdlc0Fj
Y3VtdWxhdG9yOjppbnN0YW5jZSgpLT5kZWNyZW1lbnRTY29waW5nTGV2ZWwobV90YXJnZXQuZ2V0
KCkpOyB9CisKKyAgICB2b2lkIGNoaWxkQWRkZWQoTm9kZSogY2hpbGQpIHsgQ2hpbGRsaXN0Q2hh
bmdlc0FjY3VtdWxhdG9yOjppbnN0YW5jZSgpLT5jaGlsZEFkZGVkKG1fdGFyZ2V0LmdldCgpLCBj
aGlsZCk7IH0KKyAgICB2b2lkIHdpbGxSZW1vdmVDaGlsZChQYXNzUmVmUHRyPE5vZGU+IGNoaWxk
KSB7IENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+d2lsbFJlbW92ZUNo
aWxkKG1fdGFyZ2V0LmdldCgpLCBjaGlsZCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8Tm9k
ZT4gbV90YXJnZXQ7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWRkOTRlZDg3YTFm
MTljNzEzNzNhMDFkYzdiYWFjYmI4OWJmNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUg
eworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9k
ZSAgICAgICAgICAgdGFyZ2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAg
ICAgICAgaW5Eb2N1bWVudDsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0Jwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgYWRkZWRDb3VudDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0ICAgICAgIHJlbW92ZWROb2RlczsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgIGNoaWxkbGlzdEluZGV4Owor
CisgICAgICAgIC8vIEZvciB0eXBlID09ICdhdHRyaWJ1dGUnCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgICAgICBhdHRyTmFtZTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblRhcmdldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJmMTRjMWUwMGJiMTc2MTZjOWIzYWZi
MmE2YjMzNDJjYTA2ODJjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvblRhcmdldC5jcHAKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCisj
aW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJlZE11dGF0
aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworc3RydWN0
IE11dGF0aW9uQ29udGV4dCB7CisgICAgTXV0YXRpb25Db250ZXh0KFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IGQsIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbykKKyAgICAgICAgOiBkb2N1bWVu
dChkKQorICAgICAgICAsIGxpc3RlbmVyKG8pCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxE
b2N1bWVudD4gZG9jdW1lbnQ7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVy
OworfTsKKworc3RydWN0IE11dGF0aW9uQ29udGV4dFB0ckhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IE11dGF0aW9uQ29udGV4dCoga2V5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEludEhhc2g8dWludDY0X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihQdHJIYXNo
PERvY3VtZW50Kj46Omhhc2goa2V5LT5kb2N1bWVudC5nZXQoKSkpIDw8IDMyIHwga2V5LT5saXN0
ZW5lci0+aGFzaCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBNdXRh
dGlvbkNvbnRleHQqIGEsIGNvbnN0IE11dGF0aW9uQ29udGV4dCogYikKKyAgICB7CisgICAgICAg
IHJldHVybiBhLT5kb2N1bWVudCA9PSBiLT5kb2N1bWVudCAmJiAqYS0+bGlzdGVuZXIgPT0gKmIt
Pmxpc3RlbmVyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0eXBlZGVmIEhhc2hNYXA8TXV0YXRpb25D
b250ZXh0KiwgTXV0YXRpb25SZWNvcmRWZWN0b3IqLCBNdXRhdGlvbkNvbnRleHRQdHJIYXNoPiBD
b250ZXh0VmVjdG9yTWFwOworCit9IC8vIG5hbWVzcGFjZQorCitzdGF0aWMgQ29udGV4dFZlY3Rv
ck1hcCYgY29udGV4dFZlY3Rvck1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb250
ZXh0VmVjdG9yTWFwLCBtLCAoKSk7CisgICAgcmV0dXJuIG07Cit9CisKK3N0YXRpYyBEZXF1ZTxP
d25QdHI8TXV0YXRpb25Db250ZXh0PiA+JiBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKERlcXVlPE93blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4sIGFj
dGl2ZUNvbnRleHRzLCAoKSk7CisgICAgcmV0dXJuIGFjdGl2ZUNvbnRleHRzOworfQorCit2b2lk
IHNwaW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAgICB3aGlsZSAoIWFjdGl2ZU11dGF0aW9uQ29udGV4
dHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPE11dGF0aW9uQ29udGV4dD4gY29udGV4
dCA9IGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKS50YWtlRmlyc3QoKTsKKyAgICAgICAgT3duUHRy
PE11dGF0aW9uUmVjb3JkVmVjdG9yPiB2ID0gYWRvcHRQdHIoY29udGV4dFZlY3Rvck1hcCgpLnRh
a2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBjb250ZXh0LT5saXN0ZW5lci0+aGFuZGxlRXZl
bnQoY29udGV4dC0+ZG9jdW1lbnQuZ2V0KCksIHYucmVsZWFzZSgpKTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIGVuc3VyZU11dGF0aW9uUXVldWVkKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5l
cj4gcHJwTGlzdGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0aW9uKQor
eworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlvbjsKKyAg
ICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpKTsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdl
dCgpLT5kb2N1bWVudCgpKTsKKyAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0g
YWRvcHRQdHIobmV3IE11dGF0aW9uQ29udGV4dChtdXRhdGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50
KCksIHBycExpc3RlbmVyKSk7CisKKyAgICBwYWlyPENvbnRleHRWZWN0b3JNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBjb250ZXh0VmVjdG9yTWFwKCkuYWRkKGNvbnRleHQuZ2V0KCksIDAp
OworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gbmV3IE11dGF0aW9uUmVjb3JkVmVjdG9yOworICAgICAgICBhY3RpdmVNdXRhdGlvbkNvbnRl
eHRzKCkuYXBwZW5kKGNvbnRleHQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgTXV0YXRpb25SZWNv
cmRWZWN0b3IqIHYgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAodi0+aXNFbXB0eSgp
IHx8IHYtPmxhc3QoKSAhPSBtdXRhdGlvbikKKyAgICAgICAgdi0+YXBwZW5kKG11dGF0aW9uKTsK
K30KKworTXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRhcmdldCgpCit7Cit9CisKK3ZvaWQgTXV0
YXRpb25UYXJnZXQ6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgdWludDhfdCB0eXBlTWFzaykKK3sKKyAgICBSZWdpc3Rl
cmVkTXV0YXRpb25MaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIocHJwTGlzdGVuZXIsIHR5cGVN
YXNrKTsKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBlbnN1cmVNdXRhdGlvblRhcmdldERh
dGEoKTsKKyAgICBzaXplX3QgaW5kZXggPSBkLT5saXN0ZW5lcnMuZmluZChyZWdpc3RlcmVkTGlz
dGVuZXIpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgZC0+bGlzdGVuZXJz
LmFwcGVuZChyZWdpc3RlcmVkTGlzdGVuZXIpOworICAgIGVsc2UKKyAgICAgICAgZC0+bGlzdGVu
ZXJzW2luZGV4XS50eXBlcyB8PSB0eXBlTWFzazsKK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6
d2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3RlbmVyKiBsaXN0ZW5lcikK
K3sKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAg
ICBpZiAoIWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZC0+bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgqZC0+bGlzdGVuZXJzW2ld
Lmxpc3RlbmVyID09ICpsaXN0ZW5lcikgeworICAgICAgICAgICAgZC0+bGlzdGVuZXJzLnJlbW92
ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBN
dXRhdGlvblRhcmdldDo6aGFzTXV0YXRpb25MaXN0ZW5lcnMoKQoreworICAgIE11dGF0aW9uVGFy
Z2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAgIHJldHVybiBkICYmICFkLT5s
aXN0ZW5lcnMuaXNFbXB0eSgpOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0
YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNT
RVJUKHBycE11dGF0aW9uKTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJw
TXV0YXRpb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKGQtPmxpc3RlbmVyc1tpXS50eXBlcyAmIG11dGF0aW9uLT50
eXBlRmxhZygpKQorICAgICAgICAgICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJz
W2ldLmxpc3RlbmVyLCBtdXRhdGlvbik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZWM4YWY5OWUx
OGY5MTc5ZTUyZWU2MGU2MTgxYzEzOGU3YmM3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRh
dGlvblRhcmdldF9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0
ZW5lcjsKK2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOwor
CitjbGFzcyBNdXRhdGlvblRhcmdldCB7CitwdWJsaWM6CisgICAgdm9pZCB3ZWJraXRBZGRNdXRh
dGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4sIHVpbnQ4X3QgdHlwZU1h
c2spOworICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihNdXRhdGlvbkxpc3Rl
bmVyKik7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPik7CisgICAgYm9vbCBoYXNNdXRhdGlvbkxpc3RlbmVycygpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+TXV0YXRpb25UYXJnZXQoKTsKKworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJn
ZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSA9IDA7CisgICAgdmlydHVhbCBNdXRhdGlvblRh
cmdldERhdGEqIGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKK307CisKK3ZvaWQgc3Bp
bk11dGF0aW9uUXVldWUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
TXV0YXRpb25UYXJnZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
VGFyZ2V0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQwYmUxMGMzMGQyZTBhM2I5NDQ5MDBkYjVlNGEyOGRmMTZiYWZhYjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25UYXJnZXREYXRhX2gKKyNkZWZpbmUgTXV0YXRp
b25UYXJnZXREYXRhX2gKKworI2luY2x1ZGUgIlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgi
CisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVnaXN0ZXJlZE11dGF0
aW9uTGlzdGVuZXI+IE11dGF0aW9uTGlzdGVuZXJWZWN0b3I7CitzdHJ1Y3QgTXV0YXRpb25UYXJn
ZXREYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNdXRhdGlvblRhcmdldERhdGEpOwor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE11dGF0aW9uVGFyZ2V0
RGF0YSgpIHsgfQorICAgIH5NdXRhdGlvblRhcmdldERhdGEoKSB7IH0KKworICAgIE11dGF0aW9u
TGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gTXV0YXRpb25UYXJnZXREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwZThj
YmFmYWMwNWFlZmY5NWEyZDQzYjRlYjg3Y2FhYzE3MDZmOTU2Li5lNjcxMzJmNGY3YWZjNzA3ZmI4
NTU2MTRkMTI4MTE2NzE0ZjY1ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02Niw2ICs2Niw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRl
ICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKQEAgLTIxMjYsNiArMjEyNyw4IEBAIHZvaWQgTm9kZTo6c2V0VGV4dENv
bnRlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2Fz
ZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6
IHsKICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9k
ZSh0aGlzKTsKKyAgICAgICAgICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0
aW9uKGNvbnRhaW5lcik7CisKICAgICAgICAgICAgIGNvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4o
KTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29u
dGFpbmVyLT5hcHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSwgZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJf
aAorI2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRh
dGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRN
dXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVm
UHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3QgdHlwZU1hc2spCisgICAgICAgIDogbGlz
dGVuZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFzaykgeyB9CisKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAqb3RoZXIubGlzdGVuZXI7CisgICAgfQor
CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyOworICAgIHVpbnQ4X3QgdHlw
ZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRl
eCAwMDgyMzJhNzA0M2QxOGZjZDRkYjYyNWU5OWUyNjQ3MTU4MWEwZDFhLi40NGViYWNmZDc1NzEy
MDUwNzdkMjlmNDNiYjhlMmViMGQ5YjJiYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29yZEJy
ZWFrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCkBAIC0zMTgsNiArMzE5LDggQEAgc3RhdGljIGlubGluZSBib29sIGhhc09uZVRleHRD
aGlsZChDb250YWluZXJOb2RlKiBub2RlKQogCiBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5X
aXRoRnJhZ21lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIENoaWxkbGlzdENoYW5n
ZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGVsZW1lbnQpOworCiAgICAgaWYgKCFmcmFnbWVudC0+
Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMzOSw2ICszNDIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRy
ZW5XaXRoRnJhZ21lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RG9jdW1lbgog
CiBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChIVE1MRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBDaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbihlbGVtZW50KTsKICAgICBpZiAoaGFzT25l
VGV4dENoaWxkKGVsZW1lbnQpKSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFRleHQqPihlbGVtZW50
LT5maXJzdENoaWxkKCkpLT5zZXREYXRhKHRleHQsIGVjKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDQzYzIzNzVjNjFmYzM5ZTQzNzEwN2NlMWFiODU0
NDVkMTg1MGI3ZDYuLmE5MTFmY2RmNTk5ZGQ3YmY4M2EyNmEwYTIwMzc4YTlkOTY4ZDY4MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCkBAIC0xODgzLDQgKzE4ODQsOSBAQCBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3
ZWJraXRTdG9yYWdlSW5mbygpIGNvbnN0CiB9CiAjZW5kaWYKIAordm9pZCBET01XaW5kb3c6OnNw
aW5NdXRhdGlvblF1ZXVlKCkKK3sKKyAgICA6OldlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4
IGEyYWQ4MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNlNjBkYzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2
NDk4ZmNhZGYyM2VhMjdiNzczYjc0N2E0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAt
NDE0LDYgKzQxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2Uq
IHBlcmZvcm1hbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIHNwaW5NdXRhdGlv
blF1ZXVlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGMyMzg0ZDE1YTVkN2E5NWQ0Y2Y0MGNkNTY5
M2RmZDE3YTdiNmQ5ODIuLjIzNDJhZGY1ZGJlYmYzOWY2ZDU0NzAwNTBjY2YzYjU3NWZiOGZiZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTgwNSw2ICs4MDUsMTEgQEAgbW9kdWxl
IHdpbmRvdyB7CiAgICAgICAgIC8vIHdpbmRvdy50b1N0cmluZygpIHJlcXVpcmVzIHNwZWNpYWwg
aGFuZGxpbmcgaW4gVjgKICAgICAgICAgW1Y4RG9Ob3RDaGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVj
a0RvbWFpblNlY3VyaXR5LCBDdXN0b20sIERvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsK
ICNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKKyAgICAgICAgLy8gRklYTUUoYWRhbWsp
OiBETyBOT1QgU1VCTUlUCisgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZXhwb3NlZCB0byBK
UyB1bnRpbCBlbWJlZGRlcnMgYXJlIG1vZGlmaWVkIHRvIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUo
KQorICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIGVhY2ggdGFzay4KKyAgICAgICAgdm9pZCBzcGlu
TXV0YXRpb25RdWV1ZSgpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105845</attachid>
            <date>2011-08-31 15:50:52 -0700</date>
            <delta_ts>2011-09-02 14:26:00 -0700</delta_ts>
            <desc>Created MutationScope.{h,cpp}, some API updates</desc>
            <filename>bug-66079-20110831155051.patch</filename>
            <type>text/plain</type>
            <size>126962</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDBlODMwMjU2ZjU5MDZkNWVkYjk5
ZTU4ZmM5ODM4YTRkODFjMzNlLi5hNGM4MjZkYTc3ZDAzNDgyMDZmMzRjYWUzZDg5NTU4ZTFiZmNh
M2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIHI5NDA4NCBhbmQgcjk0MDg4IGFuZCByOTM5MDku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzUzNTI1ZmNiZTNiMjA0OTUzMTUyZWU0NWQyOTU0MzI1MjYzNmRl
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitUZXN0IHRoYXQgTXV0YXRpb25MaXN0
ZW5lcnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLndhc0luRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIG11dGF0
aW9uc1sxXS5hZGRlZENvdW50IGlzIGFkZGVkQ291bnRzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5j
aGlsZGxpc3RJbmRleCBpcyBjaGlsZGxpc3RJbmRpY2VzWzFdCitQQVNTIG11dGF0aW9uc1sxXS53
YXNJbkRvY3VtZW50IGlzIGluRG9jdW1lbnRGbGFnc1sxXQorUEFTUyBtdXRhdGlvbnNbMl0uYWRk
ZWRDb3VudCBpcyBhZGRlZENvdW50c1syXQorUEFTUyBtdXRhdGlvbnNbMl0uY2hpbGRsaXN0SW5k
ZXggaXMgY2hpbGRsaXN0SW5kaWNlc1syXQorUEFTUyBtdXRhdGlvbnNbMl0ud2FzSW5Eb2N1bWVu
dCBpcyBpbkRvY3VtZW50RmxhZ3NbMl0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWROb2Rlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxs
ZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFT
UyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1Mg
bGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHRleHRO
b2Rlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50Rmxh
Z3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYWRk
ZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5k
ZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVu
dCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFT
UyBsaXN0ZW5lckNhbGxlZCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL211
dGF0aW9uLWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0
ZW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlOGYyNjJkNTRjZDU1YjQ1OGZmMDY5ODBlZDBlZmM3ZWQ0
MTRmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci5odG1sCkBAIC0wLDAgKzEsMTQ0IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworICA8ZGl2IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpu
b25lIj48L2Rpdj4KKyAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBN
dXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRp
b25zID0gbnVsbDsKKyAgICAgICAgdmFyIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAg
IHZhciBhZGRlZENvdW50czsKKyAgICAgICAgdmFyIHJlbW92ZWROb2RlczsKKyAgICAgICAgdmFy
IGNoaWxkbGlzdEluZGljZXM7CisgICAgICAgIHZhciBtb2RpZmllZEF0dHJzOworICAgICAgICB2
YXIgdGV4dE5vZGVzOworICAgICAgICB2YXIgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnM7CisgICAg
ICAgIHZhciBpbkRvY3VtZW50RmxhZ3M7CisKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkg
eworICAgICAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICAgICAgbGlzdGVuZXJD
YWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgICAgIHZh
ciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVkSW5kZXggPSAwOwor
ICAgICAgICAgICAgdmFyIGluZGV4SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRl
eCA9IDA7CisgICAgICAgICAgICB2YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAo
bVtpXS50eXBlID09ICdjaGlsZGxpc3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRl
ZENvdW50cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWycgKyBpICsgJ10uYWRkZWRDb3VudCcsICdhZGRlZENvdW50c1snICsgKGluc2VydGVkSW5k
ZXgrKykgKyAnXScpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1b
aV0ucmVtb3ZlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAn
cmVtb3ZlZE5vZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRsaXN0SW5kaWNlcy5sZW5ndGgp
CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10u
Y2hpbGRsaXN0SW5kZXgnLCAnY2hpbGRsaXN0SW5kaWNlc1snICsgKGluZGV4SW5kZXgrKykgKyAn
XScpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUn
KSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25z
WycgKyBpICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQn
LCAndGV4dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS53YXNJ
bkRvY3VtZW50JywgJ2luRG9jdW1lbnRGbGFnc1snICsgaSArICddJyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGFkZGVkQ291bnRzID0gW107CisgICAgICAgICAgICByZW1vdmVkTm9k
ZXMgPSBbXTsKKyAgICAgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbXTsKKyAgICAgICAgICAg
IG1vZGlmaWVkQXR0cnMgPSBbXTsKKyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAg
ICAgICAgaW5Eb2N1bWVudEZsYWdzID0gW107CisgICAgICAgICAgICByZXN1bWVMaXN0ZW5pbmco
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN1c3BlbmRMaXN0ZW5pbmcoKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVy
KTsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiByZXN1bWVMaXN0ZW5pbmcoKSB7CisgICAg
ICAgICAgICBkb2N1bWVudC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCBkb2N1
bWVudExpc3RlbmVyT3B0aW9ucyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgICAgIC8vIFRlc3QgaW5zZXJ0aW9ucywgImJ1YmJsaW5nIiwgYW5k
IGRlLWR1cGluZy4KKyAgICAgICAgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMgPSB7Y2hpbGRsaXN0
OiB0cnVlfTsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0
ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMpOworICAgICAgICB2YXIgYSA9IHNhbmRib3gu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYS50
ZXh0Q29udGVudCA9ICdoZWxsbywgd29ybGQnOworICAgICAgICB2YXIgYiA9IHNhbmRib3guYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgYWRkZWRD
b3VudHMgPSBbMSwgMSwgMV07CisgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMCwgMCwgMV07
CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlLCB0cnVlLCB0cnVlXTsKKyAgICAgICAg
c3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAg
ICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3Rlbmlu
ZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIFRlc3Qg
cmVtb3ZhbC4KKyAgICAgICAgc2FuZGJveC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3Rl
bmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7CisgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoYik7
CisgICAgICAgIGFkZGVkQ291bnRzID0gWzBdOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07
CisgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFn
cyA9IFt0cnVlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVu
ZExpc3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7Cisg
ICAgICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNl
OworCisgICAgICAgIC8vIFRlc3QgYXR0cmlidXRlIG11dGF0aW9uLgorICAgICAgICBzYW5kYm94
LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsK
KyAgICAgICAgbW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgc2FuZGJveC5z
ZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywgJ215ZGF0YScpOworICAgICAgICBpbkRvY3VtZW50Rmxh
Z3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHN1c3Bl
bmRMaXN0ZW5pbmcoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNhbGxlZCcpOwor
ICAgICAgICByZXN1bWVMaXN0ZW5pbmcoKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxz
ZTsKKworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0YXRpb24uCisgICAgICAgIGEu
d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoYXJhY3RlcmRhdGE6IHRydWV9
KTsKKyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RDaGlsZF07CisgICAgICAgIGEuZmlyc3RD
aGlsZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9
IFt0cnVlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExp
c3RlbmluZygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAg
ICAgIHJlc3VtZUxpc3RlbmluZygpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOwor
CisgICAgICAgIC8vIFRlc3QgZGlzY29ubmVjdGVkIERvY3VtZW50RnJhZ21lbnQKKyAgICAgICAg
dmFyIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIGRv
Y3VtZW50LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBm
cmFnLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9
KTsKKyAgICAgICAgdmFyIGQgPSBmcmFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKSk7CisgICAgICAgIGFkZGVkQ291bnRzID0gWzFdOworICAgICAgICBjaGlsZGxp
c3RJbmRpY2VzID0gWzBdOworICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbZmFsc2VdOworICAg
ICAgICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgcmVzdW1lTGlz
dGVuaW5nKCk7CisgICAgICAgIGxpc3RlbmVyQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgc2Fu
ZGJveC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgZG9j
dW1lbnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIHNh
bmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpKTsKKyAgICAgICAg
c3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAg
ICBzaG91bGRCZUZhbHNlKCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICByZXN1bWVMaXN0ZW5p
bmcoKTsKKworICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgPC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2FjMjRkOGUwOTI1MDI5
NGYwNTU1ODVlYmEyNTI1Mjg1YTBiMTlmLi41Yzc0MDIzYjQyYTgwM2FhODE4ODQ1NGJkNzk3NDQ4
OGY5OWRjMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg0IEBACisyMDExLTA4LTMwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFt3b3JrIGluIHByb2dyZXNz
XSBJbXBsZW1lbnQgTXV0YXRpb25MaXN0ZW5lci9NdXRhdGlvblRhcmdldCwgYSByZXBsYWNlbWVu
dCBmb3IgRE9NIE11dGF0aW9uIEV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjYwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0aWFsbHkgaW1wbGVtZW50cyBhbiBleHBlcmltZW50YWwsIHZl
bmRvci1wcmVmaXhlZCBBUEkgd2l0aCB0aGUKKyAgICAgICAgaG9wZSBvZiBldmVudHVhbGx5IHJl
cGxhY2luZyBNdXRhdGlvbkV2ZW50cy4gVGhlIEFQSSBpcyBiYXNlZCBpbgorICAgICAgICBsYXJn
ZSBwYXJ0IG9uIGEgcHJvcG9zYWwgYnkgSm9uYXMgU2lja2luZyBpbiBhIG1lc3NhZ2UgdG8gcHVi
bGljLXdlYmFwcHM6CisKKyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJs
aWMvcHVibGljLXdlYmFwcHMvMjAxMUp1bFNlcC8wMzY5Lmh0bWwKKworICAgICAgICBUaGF0IHRo
cmVhZCBpcyB2ZXJ5IGxvbmcsIGJ1dCBoYXMgaGVscGZ1bGx5IGJlZW4gc3VtbWFyaXplZCBieQor
ICAgICAgICBSYWZhZWwgV2VpbnN0ZWluIGluIGEgcmVjZW50IG1lc3NhZ2U6CisKKyAgICAgICAg
aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1
bFNlcC8wNzc5Lmh0bWwKKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBwYXRjaCBpcyBpbiBubyB3
YXkgbWVhbnQgdG8gYmUgYSBjb21wbGV0ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gVGhlIGJp
Z2dlc3QgbWlzc2luZyBmZWF0dXJlIGlzIHRoZSBhY3R1YWwgZGlzcGF0Y2hpbmcKKyAgICAgICAg
b2YgTXV0YXRpb25SZWNvcmQgYXJyYXlzIHRvIE11dGF0aW9uTGlzdGVuZXJzOiB0aGUgaW5jbHVk
ZWQgbGF5b3V0CisgICAgICAgIHRlc3QgaW5zdGVhZCBjYWxscyBhICJzcGluTXV0YXRpb25RdWV1
ZSIgZnVuY3Rpb24gdG8gdHJpZ2dlcgorICAgICAgICBub3RpZmljYXRpb25zLiBUaGlzIGlzIG5v
dCBhY3R1YWxseSBtZWFudCB0byBiZSBleHBvc2VkIHRvIEpTLAorICAgICAgICB0aG91Z2g6IG15
IGhvcGUgaXMgdG8gaW5zdGVhZCBjYWxsIHNwaW5NdXRhdGlvblF1ZXVlIGZyb20KKyAgICAgICAg
QysrLCBlaXRoZXIgZnJvbSBzb21ld2hlcmUgaW4gV2ViQ29yZSBvciAobW9yZSBsaWtlbHkpIGlu
CisgICAgICAgIHRoZSBlbWJlZGRlci4gSSBoYXZlIGEgc2VwYXJhdGUgY2hhbmdlIHdoaWNoIGlt
cGxlbWVudHMgdGhlCisgICAgICAgIGxhdHRlciBpbiBDaHJvbWl1bS4KKworICAgICAgICBUaGUg
b3RoZXIgbWFpbiB0aGluZyBtaXNzaW5nIGZyb20gdGhpcyBwYXRjaCBpcyB0aGF0IE11dGF0aW9u
UmVjb3JkcworICAgICAgICBhcmUgbm90IGRpc3BhdGNoZWQgaW4gYWxsIHRoZSBwcm9wZXIgcGxh
Y2VzLCBlLmcuLCB0aGUgaGFuZGxpbmcgb2YKKyAgICAgICAgaW5uZXJIVE1MIGlzIG5vdCBhcyB3
ZSBob3BlIGl0IHRvIGJlLiBUaGlzIGlzIHNpbXBseSBhIG1hdHRlciBvZgorICAgICAgICB3YW50
aW5nIHRvIHB1dCB0aGlzIHBhdGNoIHVwIHRvIGdldCBmZWVkYmFjazogaXQgc2hvdWxkbid0IGJl
CisgICAgICAgIG11Y2ggd29yayB0byBhZGQgTXV0YXRpb25SZWNvcmQgZGlzcGF0Y2hpbmcgaW4g
YWxsIHRoZSBwcm9wZXIKKyAgICAgICAgcGxhY2VzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L211dGF0aW9uLWxpc3RlbmVyLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlv
bkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVu
ZXI6OkpTTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlz
dGVuZXI6On5KU011dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlv
bkxpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlz
dGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVy
OjpoYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6Omlzb2xhdGVkV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6c2V0V3JhcHBlcik6CisgICAgICAgIEpTTXV0YXRpb25M
aXN0ZW5lciBpcyB2ZXJ5IHNpbWlsYXIgdG8gSlNFdmVudExpc3RlbmVyLAorICAgICAgICB3aXRo
IGEgZmV3IHNpbXBsaWZpY2F0aW9ucy4gIEl0cyByZWFzb24gZm9yIGV4aXN0aW5nCisgICAgICAg
IGlzIHRoYXQgTm9kZS53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyIG5lZWRzIHRvIGJlaGF2ZQor
ICAgICAgICBsaWtlIGFkZEV2ZW50TGlzdGVuZXIsIGluIHRoYXQgZHVwbGljYXRlIGFkZGl0aW9u
cyBhcmUKKyAgICAgICAgaWdub3JlZC4gVGhpcyByZXF1aXJlcyB0aGUgb3BlcmF0b3I9PSBtZXRo
b2QuIFdlIGFsc28KKyAgICAgICAgd2FudCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgc2FtZSBN
dXRhdGlvblJlY29yZAorICAgICAgICBtb3JlIHRoYW4gb25jZSB0byBhIGdpdmVuIGxpc3RlbmVy
LCBhbmQgZm9yIHRoaXMKKyAgICAgICAgd2UgdXNlIGEgSGFzaE1hcCwgdGh1cyB0aGUgfGhhc2h8
IG1ldGhvZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwpOgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG06CisgICAgICAgIChHZXRJbnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChHZW5lcmF0
ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgU2luY2UgTXV0YXRp
b25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBhcmUgY3VzdG9tLCBzbworICAgICAgICBtdXN0IGJlIG11
dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9uIGFuZCByZW1vdmFsLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6Omdl
dE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0ZW5lckNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxp
c3RlbmVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
VjhNdXRhdGlvbkxpc3RlbmVyOjpnZXRMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpkb0ZpbmRXcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdy
YXBwZXIpOgorICAgICAgICBUaGUgVjggZXF1aXZhbGVudHMgb2YgdGhlIEpTTXV0YXRpb25MaXN0
ZW5lciBhYm92ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZv
aWRDYWxsYmFjay5oOgorICAgICAgICBHZW5lcmFsaXplZCBpbnZva2VDYWxsYmFjayB0byBtYWtl
IGl0IHN1aXQgdGhlIHB1cnBvc2VzIG9mCisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQuCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgRGlz
cGF0Y2ggImNoYXJhY3RlcmRhdGEiIG11dGF0aW9ucy4KKyAgICAgICAgKiBkb20vQ29udGFpbmVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAg
ICAgRGlzcGF0Y2ggImNoaWxkbGlzdCIgbXV0YXRpb25zLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXRE
YXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6
bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5pZGw6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2V0QXR0cmlidXRlKToKKyAgICAgICAgRGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9t
L0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpt
dXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpl
bnN1cmVNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25MaXN0ZW5lcjo6fk11dGF0aW9u
TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbDogQWRkZWQuCisg
ICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OnR5cGVGbGFnVG9OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkOjpNdXRhdGlvblJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
fk11dGF0aW9uUmVjb3JkKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvblJlY29yZDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
UmVjb3JkOjppbnNlcnRlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
OjpyZW1vdmVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uUmVjb3JkOjpuZXdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
blJlY29yZDo6dHlwZUZsYWcpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5pZGw6IEFk
ZGVkLgorICAgICAgICBNdXRhdGlvblJlY29yZHMgYXJlIGFuYWxvZ291cyB0byBFdmVudHM6IHRo
ZXkgaG9sZCBkYXRhCisgICAgICAgIGFib3V0IGEgc2luZ2xlIG11dGF0aW9uLgorICAgICAgICAq
IGRvbS9NdXRhdGlvblNjb3BlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZTo6Y2hpbGRBZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZTo6d2lsbFJlbW92ZUNoaWxkKToKKyAgICAgICAg
KiBkb20vTXV0YXRpb25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJn
ZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRp
b25Db250ZXh0UHRySGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRl
eHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRleHRWZWN0b3JNYXApOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0
cyk6CisgICAgICAgIChXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJD
b3JlOjplbnN1cmVNdXRhdGlvblF1ZXVlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRh
cmdldDo6fk11dGF0aW9uVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0
Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
VGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlv
blRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25UYXJnZXQgaXMgYW5hbG9nb3VzIHRv
IEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBtaXhpbiBmb3IKKyAgICAgICAgRG9jdW1lbnQsIERvY3Vt
ZW50RnJhZ21lbnQsIGFuZCBFbGVtZW50LgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldERh
dGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6Ok11dGF0
aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6On5N
dXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1
ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6CisgICAgICAgIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVu
J3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNoYW5nZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBz
aGltIHRvIG1ha2UgaXQgZWFzeSB0byBkZWFsIHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAg
ICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUtdG8tcnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0yOSAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEdW1wUmVuZGVyVHJl
ZSBzaG91bGQgYmVnaW4gZWFjaCB0ZXN0IHdpdGggYW4gZW1wdHkgY29va2llIHN0b3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNjAyZjg3Y2M3NWJmN2M4NmNjN2FkNTQ4OTZmNDdm
ZTEwNGJmNWQ1Ny4uMjQ1OTI5MTM1ZDllYTNkMDNiZGU3NTVjMzJlYTY1ODVlYjc3YjcwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ1LDYgKzI0NSw4IEBACiAjaW5jbHVkZSAi
SlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVy
LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uUmVjb3JkLmNwcCIKICNpbmNsdWRlICJKU05hbWVk
Tm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuY3BwIgogI2luY2x1ZGUgIkpTTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggZDA2NjU4ZjkzZDhjZWFhNDgwZDhmYjdjY2ZkMjVkYWNkNTUyODI1ZS4uNGVlNzIwMjU1ODZm
MTdhNTZiODdjNDcxNjhhZTAzMDhiNTI3ZDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0zMTcsNiArMzE3LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGFDYWxs
YmFjayBcCiAgICAgTW91c2VFdmVudCBcCiAgICAgTXV0YXRpb25FdmVudCBcCisgICAgTXV0YXRp
b25MaXN0ZW5lciBcCisgICAgTXV0YXRpb25SZWNvcmQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAg
ICAgTmF2aWdhdG9yIFwKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvciBcCkBAIC01NzQsNyAr
NTc2LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAKIC5QSE9OWSA6IGFsbAogCi1KU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkpCitKU19ET01fSEVBREVS
Uz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVy
LmggSlNFdmVudFRhcmdldC5oIEpTTXV0YXRpb25MaXN0ZW5lci5oLCQoRE9NX0NMQVNTRVM6JT1K
UyUuaCkpCiAKIFdFQl9ET01fSEVBREVSUyA6PQogaWZlcSAoJChmaW5kc3RyaW5nIEJVSUxESU5H
X1dYLCQoRkVBVFVSRV9ERUZJTkVTKSksIEJVSUxESU5HX1dYKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCAxNjI0MGRjMzA0OTFkMjdmYmQ5NTgzZTk5YjE5MGQwNjcx
MWJkZDZlLi43OWRjNWM4YmMwNjFmMWM3NGQ3NmU1ODY1YmY5MmQwYmYxMWJlMWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAg
ICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBiaW5kaW5ncy92OC9jdXN0b20gZXhpc3QgZm9yIHRoZXNl
LgogICAgICAgJy4uL2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAgICAnLi4vZG9tL0V2ZW50
VGFyZ2V0LmlkbCcsCisgICAgICAnLi4vZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKICAgICAg
ICcuLi9odG1sL1ZvaWRDYWxsYmFjay5pZGwnLAogCiAgICAgICAjIEJpbmRpbmdzIHdpdGggY3Vz
dG9tIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmZDRj
YjhkNjE2MTVkZjU0N2MxNTg3YTFhMTE4YTEzMzJjMzcxOWQ0Li45YmExN2EyODNmYmZmNDNjNDAz
OGEwNjAxMzc1MGMwYzZiMzM4MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTgyLDYgKzExODIs
OCBAQAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlUG9ydC5pZGwnLAogICAgICAgICAgICAgJ2Rv
bS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaWRsJywK
KyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAorICAgICAgICAgICAgJ2Rv
bS9NdXRhdGlvblJlY29yZC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaWRs
JywKICAgICAgICAgICAgICdkb20vTm9kZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlRmls
dGVyLmlkbCcsCkBAIC0yMDg0LDYgKzIwODYsOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHAnLApAQCAtNTMwMCw2ICs1MzA1LDE0IEBACiAgICAgICAgICAgICAnZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuY3BwJywKKyAg
ICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uU2NvcGUuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25TY29wZS5oJywKKyAgICAg
ICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25UYXJnZXQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKICAg
ICAgICAgICAgICdkb20vTmFtZU5vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL05hbWVO
b2RlTGlzdC5oJywKICAgICAgICAgICAgICdkb20vTmFtZWROb2RlTWFwLmNwcCcsCkBAIC01MzQx
LDYgKzUzNTQsNyBAQAogICAgICAgICAgICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5oJywKICAgICAg
ICAgICAgICdkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAnLAorICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lci5oJywKICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwJywK
ICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MGM3YTBmZWJiOWVj
MGI1M2QwMGMzMzY4M2QyYjQ0YzQxNzM5MmIxLi5kY2U1NmUzYjQ3YmQyOTU5YzhjM2Y4OTYwYjI0
NzYwNDgwMWVmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01NDIyLDkgKzU0MjIsMTkgQEAKIAkJQzVENEFBN0ExMTZCQUZC
NjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0
cmljc01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUM1RTlCNjc3MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RTlCNjc2
MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJ
QzVFQkREODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURE
RUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi87IH07CisJCUM2NzFEQTNF
MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAv
KiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLzsgfTsKKwkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5
IC8qIEpTTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3Jk
LmggKi87IH07CisJCUM2NzJBMkQzMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzJB
MkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLzsgfTsKKwkJQzY5
NkEwODMxNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY5NkEwODExNDBFRUMyMjAwMURBQTUy
IC8qIE11dGF0aW9uU2NvcGUuY3BwICovOyB9OworCQlDNjk2QTA4NDE0MEVFQzIyMDAxREFBNTIg
LyogTXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzY5NkEwODIxNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuaCAqLzsg
fTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZl
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRB
RDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9Owog
CQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUz
MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9Owog
CQlDNkY0MTA0NzEzMEM2RTg5MDAzOTNERTQgLyogRW50cnlCYXNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjQxMDQ2MTMwQzZFODkwMDM5M0RF
NCAvKiBFbnRyeUJhc2UuY3BwICovOyB9OworCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyog
TXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAq
LzsgfTsKKwkJQzZGNjcxNTQxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQ2MTNF
MzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgKi87IH07CisJCUM2RjY3MTU1MTNF
MzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQzZGNjcxNUMxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QTEz
RTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLzsgfTsKKwkJQzZGNjcx
NUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlD
IC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovOyB9OwogCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNF
NTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9y
LmNwcCAqLzsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3
RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLzsgfTsKIAkJQ0Q4MjAzMEEx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMTcyLDkgKzEyMTgyLDI0IEBA
CiAJCUM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhNZXRyaWNzTWFwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1RTlCNjc2MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBK
U011dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcx
REEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25UYXJnZXREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2OTZBMDgxMTQwRUVDMjIwMDFEQUE1
MiAvKiBNdXRhdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE11dGF0aW9uU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjk2
QTA4MjE0MEVFQzIyMDAxREFBNTIgLyogTXV0YXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEw
MDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2Uu
Y3BwOyBwYXRoID0gZmlsZWFwaS9FbnRyeUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvbkxpc3RlbmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDAxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE11dGF0aW9uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzZGNjcxNDExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25SZWNvcmQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25U
YXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25U
YXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVF
MDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTXV0YXRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZG
NjcxNEIxM0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5
QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNj
cm9sbEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cm9sbEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0Qx
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzIwNiw2ICsxMzIzMSw3IEBACiAJCQkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRB
IC8qIEZpbGVBUEkgKi8sCiAJCQkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8s
CiAJCQkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLywKKwkJCQlDNjcx
REE0NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJMzM1MDNDOUMxMDE3OUE5
QTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMUFDMjI2MDIwREI2OUVBNzAwODlC
NjY5IC8qIE9mZmxpbmUgKi8sCiAJCQkJQTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdp
bnMgKi8sCkBAIC0xNTQ1MSw2ICsxNTQ3Nyw3IEBACiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0
MzA1IC8qIEV2ZW50cyAqLywKIAkJCQk4NUM1NkQwMzBBQThCQUE3MDBEOTU3NTUgLyogSFRNTCAq
LywKIAkJCQk4NUU3MTEzRDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCisJCQkJQzY3
MURBNUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovLAogCQkJCTg1MzhGMDU3MEFENzIy
QjkwMDZBODFEMSAvKiBSYW5nZXMgKi8sCiAJCQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8q
IFN0eWxlU2hlZXRzICovLAogCQkJCTg1QTBGOThFMEFDNzE2RjQwMDE2MUZEQyAvKiBTVkcgKi8s
CkBAIC0xODU2NSw2ICsxODU5Miw4IEBACiAJCQkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8q
IEpTRXhjZXB0aW9uQmFzZS5oICovLAogCQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBK
U01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1
RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLywKKwkJCQlDNkY2NzE1QTEzRTM1RUIyMDBE
RTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCAqLywKKwkJCQlDNkY2NzE1QjEzRTM1RUIy
MDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBE
NTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAogCQkJ
CTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8s
CkBAIC0xOTIyNCw2ICsxOTI1MywyMiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMg
PSAwOwogCQl9OworCQlDNjcxREE0NDEzRTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUM2NzFEQTM4MTNFMzcx
NDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJCQlDNjcxREEzOTEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBN
dXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUM2NzFEQTVEMTNF
MzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTk5ODEsNiArMjAw
MjYsMTYgQEAKIAkJCQk4NTAzMUIzMzBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5j
cHAgKi8sCiAJCQkJODUwMzFCMzQwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAq
LywKIAkJCQk5M0VFQzFGMzA5QzI4Nzc3MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8s
CisJCQkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLywK
KwkJCQlDNkY2NzEzRjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8s
CisJCQkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywK
KwkJCQlDNkY2NzE0MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJ
CQlDNkY2NzE0MjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovLAorCQkJ
CUM2OTZBMDgxMTQwRUVDMjIwMDFEQUE1MiAvKiBNdXRhdGlvblNjb3BlLmNwcCAqLywKKwkJCQlD
Njk2QTA4MjE0MEVFQzIyMDAxREFBNTIgLyogTXV0YXRpb25TY29wZS5oICovLAorCQkJCUM2RjY3
MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZGNjcx
NDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEyRDIx
M0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovLAogCQkJCUJDRjM0QTM2
MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4MDk3
N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2MzEw
MDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLywKQEAgLTIwMDQ1LDYgKzIwMTAwLDcgQEAK
IAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmgg
Ki8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCAqLywKKwkJCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQlBNzZFNUY3RTEzNUUwRENGMDBBNjk4Mzcg
LyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oICovLAogCQkJCTQ5OThBRUM0MTNGOUQwRUEwMDkw
QjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oICovLAogCQkJCTQ5OThBRUM1
MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgKi8s
CkBAIC0yMjEwNCw2ICsyMjE2MCw4IEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8q
IEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0
ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVk
Tm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5IC8q
IEpTTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5MkE1
NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjQ3
NSw2ICsyMjUzMyw4IEBACiAJCQkJOTMzMDlERkMwOTlFNjQ5MjAwNTZFNTgxIC8qIE1vdmVTZWxl
Y3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZC
MjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEEwQTQ0
RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2RjY3
MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5h
dGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzQ1MCw2ICsyMzUxMCw3
IEBACiAJCQkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIxMEI2OTgwMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjEwQjY5ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRv
a2VuaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY5NkEwODQxNDBFRUMyMjAwMURBQTUyIC8q
IE11dGF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYyNTAsNiArMjYzMTEsMTAgQEAK
IAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTlERTc5MDQxM0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0Mu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5
QyAvKiBNdXRhdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1
RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZENkYyNTJDMTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3
MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ5OThBRUNEMTNGOUQ2QzkwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYyNjAsNiArMjYzMjUsNyBAQAogCQkJCUJD
RTQzODlBMTQwQjAwNzMwMDVFNDM3RSAvKiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRU
b2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzY5NkEwODMxNDBFRUMyMjAwMURBQTUy
IC8qIE11dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTJhNjUw
NzM4MmJlYzQ3NGQ0NjJjODNjMTI1NTIzOGUxMzg3ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsx
LDEzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRp
b25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJK
U05vZGUuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSlNNdXRhdGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIo
SlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKQorICAgIDogbV93cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRh
KCksIHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKK3sKKyAg
ICBpZiAod3JhcHBlcikKKyAgICAgICAgbV9qc0Z1bmN0aW9uLnNldE1heUJlTnVsbCgqbV9pc29s
YXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVCghZnVuY3Rpb24pOworCit9CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6fkpT
TXV0YXRpb25MaXN0ZW5lcigpCit7Cit9CisKK3ZvaWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQ
YXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3du
UHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisgICAg
QVNTRVJUKG11dGF0aW9ucyk7CisgICAgQVNTRVJUKCFtdXRhdGlvbnMtPmlzRW1wdHkoKSk7CisK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisKKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IG1fanNGdW5jdGlv
bi5nZXQoKTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9N
R2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQo
KSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9N
V2luZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7
CisgICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRoZSB3aW5kb3cgbXVzdCBzdGlsbCBiZSBh
Y3RpdmUgaW4gaXRzIGZyYW1lLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTkyMT4uCisgICAgLy8gRklYTUU6IEEgYmV0dGVyIGZpeCBmb3IgdGhpcyBtYXkg
YmUgdG8gY2hhbmdlIERPTVdpbmRvdzo6ZnJhbWUoKSB0byBub3QgcmV0dXJuIGEgZnJhbWUgdGhl
IGRldGFjaGVkIHdpbmRvdyB1c2VkIHRvIGJlIGluLgorICAgIGlmIChmcmFtZS0+ZG9tV2luZG93
KCkgIT0gd2luZG93LT5pbXBsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSXMg
dGhpcyBjaGVjayBuZWVkZWQgZm9yIG90aGVyIGNvbnRleHRzPworICAgIFNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0
ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CisgICAgSlNWYWx1ZSBoYW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworCisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVF
dmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkgeworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0gSlNWYWx1ZSgpOworICAgICAgICBj
YWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICB9CisKKyAg
ICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIFJlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBwcm90ZWN0KHRoaXMpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IG11dGF0aW9uTGlzdDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMt
PnNpemUoKTsgKytpKQorICAgICAgICAgICAgbXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdChpKS5nZXQoKSkpOworCisgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25MaXN0KSk7CisKKyAgICAgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmpl
Y3QgOiBnbG9iYWxPYmplY3QpOworCisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIu
c3RhcnQoKTsKKyAgICAgICAgaWYgKGhhbmRsZUV2ZW50RnVuY3Rpb24pCisgICAgICAgICAgICBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBqc0Z1bmN0aW9uLCBhcmdzKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBGSVhNRShhZGFtayk6IEZpZ3VyZSBvdXQgd2hhdCB0aGUgdGFyZ2V0IHNob3Vs
ZCBiZTsgcHJvYmFibHkgdGhlCisgICAgICAgICAgICAvLyBEb2N1bWVudCBvciBET01XaW5kb3c/
CisgICAgICAgICAgICBKU1ZhbHVlIGN1cnJlbnRUYXJnZXQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgbXV0YXRpb25zLT5hdCgwKS0+dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Y3VycmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50aW1l
b3V0Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisKK2Jv
b2wgSlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXIm
IGxpc3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlvbkxp
c3RlbmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3RlbmVy
KTsKKyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9qc0Z1
bmN0aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQoreworICAg
IHJldHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1bmN0
aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZhMTZj
OWYzNzc1ZmMzMmE5OWE2ZWU3YzkyZDc1OGI3YjJkZTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBK
U011dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisjaW5j
bHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmllci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNz
IEpTRE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMg
TXV0YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNNdXRh
dGlvbkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmpl
Y3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3cmFw
cGVyLCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlvbkxp
c3RlbmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxp
c3RlbmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBET01X
cmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29y
bGQuZ2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFwcGVy
LnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11
dGF0aW9uUmVjb3JkVmVjdG9yPik7CisKK3ByaXZhdGU6CisgICAgSlNNdXRhdGlvbkxpc3RlbmVy
KEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFw
cGVyV29ybGQqIGlzb2xhdGVkV29ybGQpOworCisgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmll
cjxKU0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlND
OjpKU09iamVjdD4gbV93cmFwcGVyOworCisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9p
c29sYXRlZFdvcmxkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SlNNdXRhdGlvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGVhYTVmODgwMDU5ZjkzNDJmMmQ5NThiZDk4
ODI4YTFmNmVlMGJkNS4uYzMyOThlYmIzOTgwNzYxOTYwM2MzODc0ZWE0MGNjMmJmZjZhYzRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTE5MSw2ICsxOTEsNTAgQEAgRU5ECiAgICAgcmV0dXJuIEBHZW5lcmF0ZUV2ZW50
TGlzdGVuZXJJbXBsOwogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbAorewor
ICAgIG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5n
ID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkdHlw
ZU1hc2tIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6
ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgk
ZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9
IDE7CisgICAgJGltcGxJbmNsdWRlc3siSlNNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAg
ICBteSBAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCA9ICgpOworCisgICAgaWYgKCRmdW5j
dGlvbk5hbWUgZXEgImFkZCIpIHsKKyAgICAgICAgcHVzaChAR2VuZXJhdGVNdXRhdGlvbkxpc3Rl
bmVySW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUganNUeXBlcyA9IGV4ZWMtPmFyZ3VtZW50KDEp
OworICAgIGlmICghanNUeXBlcy5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBh
c09iamVjdChqc1R5cGVzKTsKKyAgICB1aW50OF90IHR5cGVNYXNrID0gMDsKKyAgICBKU1ZhbHVl
IGpzQ2hpbGRsaXN0ID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ImNoaWxkbGlzdCIpKTsKKyAgICBpZiAoanNDaGlsZGxpc3QuaXNCb29sZWFuKCkgJiYganNDaGls
ZGxpc3QuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6
Q2hpbGRsaXN0RmxhZzsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRy
aWJ1dGUuaXNCb29sZWFuKCkgJiYganNBdHRyaWJ1dGUuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0
eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6QXR0cmlidXRlRmxhZzsKKyAgICBKU1ZhbHVlIGpz
Q2hhcmFjdGVyZGF0YSA9IGpzVHlwZXNPYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJjaGFyYWN0ZXJkYXRhIikpOworICAgIGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkg
JiYganNDaGFyYWN0ZXJkYXRhLmdldEJvb2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0
YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOworRU5ECisgICAgfQorCisgICAgcHVzaChA
R2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUgbGlzdGVu
ZXIgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpbXAt
PiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9TXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVu
ZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGN1cnJlbnRXb3JsZChl
eGVjKSkke3Bhc3NSZWZQdHJIYW5kbGluZ30ke3R5cGVNYXNrSGFuZGxpbmd9KTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworRU5ECisgICAgcmV0dXJuIEBHZW5l
cmF0ZU11dGF0aW9uTGlzdGVuZXJJbXBsOworfQorCisKICMgUGFyYW1zOiAnaWRsRG9jdW1lbnQn
IHN0cnVjdAogc3ViIEdlbmVyYXRlTW9kdWxlCiB7CkBAIC0yMDI2LDYgKzIwNzAsMTAgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgImFkZCIpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVt
b3ZlRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgInJlbW92ZSIpKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Vi
a2l0QWRkTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoImFkZCIpKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0UmVt
b3ZlTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGwoInJlbW92ZSIpKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSAkYXJnc0luZGV4ID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQx
OGY3OTFmYzcwZDdmNzFkNjliOGU4OGYyM2YzNmQ2YTIwLi5hNDc2NGQ5ODc2ZDI3NTdmMmY0NmU1
NTY0MDkyYWIyMDI1YWQ3ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDg0LDYgKzQ4NCwxMiBAQCBzdWIgR2V0SW50
ZXJuYWxGaWVsZHMKICAgICAgICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJldmVudExp
c3RlbmVyQ2FjaGVJbmRleCIpOwogICAgIH0KIAorICAgIGlmIChJc1N1YlR5cGUoJGRhdGFOb2Rl
LCAiRWxlbWVudCIpIHx8CisgICAgICAgIElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIp
IHx8CisgICAgICAgICRuYW1lIGVxICJEb2N1bWVudEZyYWdtZW50IikgeworICAgICAgICBwdXNo
KEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7Cisg
ICAgfQorCiAgICAgaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAiZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0K
QEAgLTExNDAsNiArMTE0Niw1MyBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rp
b25OYW1lIGVxICJhZGQiKSA/ICJPckNyZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQ
dHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7Cisg
ICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikg
PyAiY3JlYXRlIiA6ICJyZW1vdmUiOworICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0
aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBs
SW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhN
dXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRh
dGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZl
bnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7
bG9va3VwVHlwZX0pOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CitFTkQKKyAgICBpZiAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9
IDA7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09i
amVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlz
dCIpKTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3Qt
PkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6
OkNoaWxkbGlzdEZsYWc7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRl
ID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlm
ICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkK
KyAgICAgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOwor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFy
YWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQor
ICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFn
OworICAgIH0KK0VORAorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CisgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVm
aXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFu
ZGxpbmd9JHt0eXBlTWFza0FyZ30pOworICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6
bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKK0VORAorfQorCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7
CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKQEAgLTEyNDUsNiArMTI5OCwxNCBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoJG5hbWUgZXEgIndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdl
bmVyYXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRp
b25MaXN0ZW5lciIpIHsKKyAgICAgICAgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2so
JGltcGxDbGFzc05hbWUsICJyZW1vdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0z
MTYwLDcgKzMyMjEsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScg
PT4gMSwKICAgICAnT3B0aW9uc09iamVjdCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAn
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicgPT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
JyA9PiAxLAorICAgICdNdXRhdGlvbkxpc3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNjEsNiAr
MzMyMywxMSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0g
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAor
ICAgIGlmICgkdHlwZSBlcSAiTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNs
dWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1
ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVy
Kj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5lck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2ODo6TnVsbCgpKSI7CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAg
ICAgIHJldHVybiAiJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFl
N2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNjNzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAs
NiArNjAsOCBAQAogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNp
bmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUg
IlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4g
VjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0
ZW5lckZpbmRPbmx5KQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6
ZmluZFdyYXBwZXIodmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJv
dG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+
R2V0UHJvdG90eXBlKCkpOworICAgIGlmIChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRv
dyhnbG9iYWxQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFu
YWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBlcih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNp
ZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gVjhET01XcmFwcGVyOjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmgKaW5kZXggZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4
ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVu
dFRhcmdldDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwog
ICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250
ZXh0OwpAQCAtODksNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVu
dFRhcmdldCopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdl
dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1
dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAv
LyBYUGF0aC1yZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5
MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDli
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVj
dFByb3RvdHlwZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVy
KSBcCisgICAgVihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJkMDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworVjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4
dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0
ZW5lcikpCisgICAgLCBtX3dvcmxkQ29udGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0
ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFt
X2xpc3RlbmVyLklzRW1wdHkoKSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0
KCk7CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0
ZW5lcik7CisgICAgfQorICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRl
cik7CisgICAgbGlzdGVuZXItPmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4
TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1f
bGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAg
ICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8g
RG9uJ3QgcmVlbnRlciBWOCBpZiBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0
YW5jZSBvZiBWOC4KKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11
dGF0aW9ucy0+aXNFbXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29u
dGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsK
KyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11
dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+
c2l6ZSgpOyArK2kpCisgICAgICAgIGpzTXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhp
KSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJv
b2wgaWdub3JlZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVu
ZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVk
IFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4
TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJlODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0
aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJf
aAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djgu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDog
cHVibGljIE11dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29u
dGV4dCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093
blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGdldExpc3RlbmVyT2JqZWN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6Ok9iamVjdD46Ok5ldyhtX2xpc3RlbmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhN
dXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29y
bGRDb250ZXh0SGFuZGxlJik7CisgICAgc3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNw
b3NlTGlzdGVuZXJPYmplY3QoKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1f
bGlzdGVuZXI7CisgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3
MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhN
dXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gK
KworI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlv
bkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3Ig
VjhNdXRhdGlvbkxpc3RlbmVyIG9iamVjdHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9m
IHY4OjpPYmplY3QgdG8gc3BlZWQgdXAgbG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9G
aW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAg
bGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpt
dXRhdGlvbkxpc3RlbmVyKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRp
b25MaXN0ZW5lciogZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlz
dGVuZXIgPSBvYmplY3QtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRh
dGlvbkxpc3RlbmVyKCkpOworICAgICAgICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3Rl
bmVyKj4odjg6OkV4dGVybmFsOjpVbndyYXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxp
bmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAg
IEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlv
bkxpc3RlbmVyKiB3cmFwcGVyID0gZG9GaW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFw
cGVyKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiB3cmFwcGVyUHRyID0gVjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3Js
ZENvbnRleHRIYW5kbGUoVXNlQ3VycmVudFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisg
ICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0
aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVybmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKwor
ICAgIHJldHVybiB3cmFwcGVyUHRyLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEz
ZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4uODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhi
MzUyMjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApA
QCAtNjYsNiArNjYsNyBAQCBWOExvY2FsQ29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEg
dmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9p
ZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJU
KG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBjYWNoZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4
KTsKICAgICBpZiAoY2FjaGUtPklzTnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIGNhY2hlID0gdjg6OkFycmF5OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4
IDExZjMwOWI2OTk0YTEwODkwMDJhMTEyYjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJj
NzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAg
ICBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJh
Y2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBp
ZiAoY2FsbGJhY2stPklzRnVuY3Rpb24oKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+
OjpDYXN0KGNhbGxiYWNrKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFj
aykpOwogICAgIH0gZWxzZSBpZiAoY2FsbGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5kbGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2
ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFj
NjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVjODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZk
NTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIH07CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3
cm9uZyB0eXBlLCBvciB0aHJldyBleGNlcHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcAppbmRleCA3NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4
OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJjM2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJD
aGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFN
b2RpZmllZChkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJl
Y29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRo
aXMpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHRvRWxlbWVudChwYXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0
YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsK
IH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVk
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggM2VhNDk5MzY5MzU3NDliMTMxOTJiNzYzNDFkNTA5YjE1MzhlNGMwYy4uNGM3YTBm
YjQyMWI4ODM5MTI1YTUyMzRiODFhMjQ0OWEyYjZkNDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVC
dXR0b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC0xNDEsNiArMTQ1LDggQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICBpZiAocmVmQ2hp
bGQtPnByZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8IHJlZkNoaWxkID09IG5ld0NoaWxk
KSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgQ2hpbGRsaXN0
Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7CisKICAgICBSZWZQdHI8Tm9kZT4g
bmV4dCA9IHJlZkNoaWxkOwogICAgIFJlZlB0cjxOb2RlPiByZWZDaGlsZFByZXZpb3VzU2libGlu
ZyA9IHJlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyAr
K2l0KSB7CkBAIC0yNzIsNiArMjc4LDggQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNj
b3BlIG11dGF0aW9uKHRoaXMpOworCiAgICAgUmVmUHRyPE5vZGU+IHByZXYgPSBvbGRDaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBvbGRDaGlsZC0+bmV4
dFNpYmxpbmcoKTsKIApAQCAtNDAwLDYgKzQwOCw4IEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVD
aGlsZHJlbihDb250YWluZXJOb2RlKiBjb250YWluZXIpCiAgICAgTm9kZVZlY3RvciBjaGlsZHJl
bjsKICAgICBjb2xsZWN0Tm9kZXMoY29udGFpbmVyLCBjaGlsZHJlbik7CiAKKyAgICBDaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbihjb250YWluZXIpOworCiAgICAgZm9yIChO
b2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNo
aWxkcmVuLmVuZCgpOyBpdCsrKSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwog
ICAgICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBtdXRhdGlvbiBldmVudHMuCkBA
IC02MTEsNiArNjIxLDggQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVm
UHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICBpZiAodGFyZ2V0
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgQ2hpbGRsaXN0Q2hhbmdl
ZE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhpcyk7CisKICAgICAvLyBOb3cgYWN0dWFsbHkgYWRk
IHRoZSBjaGlsZChyZW4pCiAgICAgUmVmUHRyPE5vZGU+IHByZXYgPSBsYXN0Q2hpbGQoKTsKICAg
ICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBp
dCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0KSB7CkBAIC0xMDk1LDYgKzExMDcsMTEgQEAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQ
dHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGls
ZC0+ZG9jdW1lbnQoKTsKIAorICAgIGlmIChjLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgQ2hp
bGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24oYy0+cGFyZW50Tm9kZSgpKTsKKyAg
ICAgICAgbXV0YXRpb24uY2hpbGRBZGRlZChjLmdldCgpKTsKKyAgICB9CisKICAgICBpZiAoYy0+
cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5P
REVJTlNFUlRFRF9MSVNURU5FUikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0
YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdHJ1
ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CiAKQEAgLTExMTYsNiArMTEzMywxMSBAQCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQdHI8Tm9k
ZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9j
dW1lbnQoKTsKIAorICAgIGlmIChjLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgQ2hpbGRsaXN0
Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24oYy0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAg
bXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGMpOworICAgIH0KKwogICAgIC8vIGRpc3BhdGNoIHBy
ZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgZG9j
dW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERVJFTU9WRURfTElTVEVORVIp
KQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlMzI5ODUyZDBlMGJkMDE0YmFjYTExOTEzODkw
Yjc5ZmYwZGZlYjVkLi5iYzliNTJjYTE4ZmJmZmQyM2NlMGMzNzIzNDM5YjNhNWYyOTUyYTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAj
aW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5o
IgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3Jl
bWVudGVyLmgiCiAjaW5jbHVkZSAiTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTUwOTEsNCAr
NTA5MiwxMSBAQCBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6OmxvYWRlcigpIGNvbnN0CiAgICAg
cmV0dXJuIGxvYWRlcjsKIH0KIAorTXV0YXRpb25UYXJnZXREYXRhKiBEb2N1bWVudDo6ZW5zdXJl
TXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXREYXRhKQor
ICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRhcmdl
dERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzZTg0NjEyNmVhN2Mw
NzUwZGFmODAzYmMyZjU1ZTNjNjRhM2I0NWU0Li5kMTE0YTlmZTNiZGFlMjM3NjdmZGM2ZTdjMzZh
YTRhYzEzYWQyYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0
VHlwZXMuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIlBhZ2VWaXNp
YmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtMTAzLDYgKzEwNCw3IEBAIGNsYXNzIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVkaWFRdWVyeU1h
dGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOworY2xhc3MgTXV0YXRp
b25UYXJnZXREYXRhOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNs
YXNzIFBhZ2U7CkBAIC0yMDYsNyArMjA4LDcgQEAgZW51bSBQYWdlc2hvd0V2ZW50UGVyc2lzdGVu
Y2UgewogCiBlbnVtIFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHsgUmVjYWxjU3R5bGVJbW1lZGlh
dGVseSwgRGVmZXJSZWNhbGNTdHlsZSB9OwogCi1jbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBUcmVl
U2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKK2NsYXNzIERvY3VtZW50IDog
cHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBN
dXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7CkBAIC0xMTAxLDYg
KzExMDMsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94
bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRh
KiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQo
KTsgfQorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRhdGlvblRhcmdl
dERhdGEoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKQEAgLTE0MDksNiArMTQxNCw4IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFJlZlB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3Vy
aXR5UG9saWN5OworCisgICAgT3duUHRyPE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRh
cmdldERhdGE7CiB9OwogCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkg
cmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlu
bGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggNWM2ODM4ZWM1ZjVmMDQzNTEx
OGE4NWY2ZDE0ZjJlYTMwOTAxZDAzNi4uMTdkOTQzMzBjM2VkNGQ3ZTAzNTRiMDk5MDllNjg3ZjBl
YTE0NjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0yNDUsNiArMjQ1LDExIEBAIG1v
ZHVsZSBjb3JlIHsKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0Mp
IHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVz
KTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9u
TGlzdGVuZXIgbGlzdGVuZXIpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRs
ZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0
ZW5lciBvbmFib3J0OwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVy
IG9uYmx1cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCAyM2Q4
YzIwNDNlMzhhOGRiMThmMmZjZGVjZGY0MDJkMzViMWRiYzg2Li4yYWIzNzkyOGRhNTBkODU0Y2Qw
NTlmYjJhNTEzYTc5Y2ZhYWIzZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5o
IgogI2luY2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC05MCw0ICs5MSwxMSBAQCBib29sIERvY3VtZW50RnJh
Z21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgRgogI2VuZGlmCiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnRGcmFnbWVu
dDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJn
ZXREYXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRh
dGlvblRhcmdldERhdGEpOworICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3
ODRhMTIxYzlhM2JkMDhjODA4YzgyMzYyYTA0ZmYzMC4uNmVmZDc3MDM0YTU0NjZiODNiYzlkNGQw
YjljYTAyNGYyMDllOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBA
IC0yNiwxMCArMjYsMTQgQEAKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRl
ICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdl
dC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgTXV0
YXRpb25UYXJnZXREYXRhOworCitjbGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRh
aW5lck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDEw
ICs0NiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOwog
ICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIE11dGF0
aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRh
cmdldERhdGEuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJl
TXV0YXRpb25UYXJnZXREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBu
b2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUo
Ym9vbCBkZWVwKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkg
Y29uc3Q7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0
RGF0YTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbAppbmRleCA4ODJiNjJkYjM5ZWI3ZjJlMDUwNDc4MjA0OTJiN2U5MzYxYThlZGVkLi5i
NzViODVmYmQ2ZDI1MjBmZDRjYjZmMGM3YTY4ZjBmMWJjNzg2NGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yNSw2ICsyNSwxMSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZUxpc3QgcXVl
cnlTZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwg
IUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOwor
ICAgICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0
ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggNzE2OGUxMmJiNGJkODQ2ODFiMTVmOGQ1MTc3MTZiYjAzM2QwODllYi4uYTc2NTdmOTcw
NDE2Mzc3YjhiODA0ODhmYTkzY2FiNTNkNjNkZjA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNp
bmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVk
ZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIK
QEAgLTY5OSw2ICs3MDAsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNT
eW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAg
ICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0
ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24o
bXV0YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9u
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIs
NiArNzM3LDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9u
aXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIFJlZlB0
cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmli
dXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24o
bXV0YXRpb24pOworICAgIG93bmVyRG9jdW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9u
KTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAt
MjA1Miw0ICsyMDYxLDE0IEBAIFBhc3NSZWZQdHI8V2ViS2l0QW5pbWF0aW9uTGlzdD4gRWxlbWVu
dDo6d2Via2l0R2V0QW5pbWF0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIGFuaW1Db250cm9sbGVy
LT5hbmltYXRpb25zRm9yUmVuZGVyZXIocmVuZGVyZXIoKSk7CiB9CiAKK011dGF0aW9uVGFyZ2V0
RGF0YSogRWxlbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IHJhcmVEYXRhKCktPm11dGF0aW9uVGFyZ2V0RGF0YSgpIDogMDsKK30KKworTXV0
YXRpb25UYXJnZXREYXRhKiBFbGVtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQorewor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMTkyM2Iw
NmIwYjA4MjViMTZlYjAxNmI4ZTc0ODEzMjZlY2JlOGM5Yi4uZTBjOTgxMmQ1NzRkMjE3ODhkZmQ3
NWViN2Y3YmU5MGYyN2JlNmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRl
ICJNdXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUg
IlNjcm9sbFR5cGVzLmgiCiAKQEAgLTQ5LDcgKzUwLDcgQEAgZW51bSBTcGVsbGNoZWNrQXR0cmli
dXRlU3RhdGUgewogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0CiB9OwogCi1jbGFzcyBF
bGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBD
b250YWluZXJOb2RlLCBwdWJsaWMgTXV0YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIH5FbGVtZW50KCk7CkBAIC0zODEsNiArMzgyLDkgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRh
cmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRp
b25UYXJnZXREYXRhKCk7CisKICAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCgpIGNhbGxzIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucy4KICAg
ICAvLyBUaGV5IGFyZSBzZXBhcmF0ZWQgdG8gYWxsb3cgYSBkaWZmZXJlbnQgZmxvdyBvZiBjb250
cm9sIGluIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoKS4KICAgICB2b2lkIHJlY2Fs
Y1N0eWxlSWZOZWVkZWRBZnRlckF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKaW5kZXggOWViYjAyYTU5MmY3MTgzMjZjMTZlMDJmMTk4MWI0MWQ5Yzg4OTBl
Yy4uNzI3NzE4YTZlNTY2MzNkYjczM2Y4YmQ3MGViZjQxOWZmYTliOTZlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmlkbApAQCAtMTQwLDYgKzE0MCwxMSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAog
I2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZF
X0MKKyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlz
dGVuZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBlcyk7CisgICAgICAgIHZvaWQgd2Via2l0
UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9P
QkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAg
YXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmJsdXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKaW5kZXggMWNhY2NkNDk0ZjEwZjJhNmMzMDZlNjBiZTEzNDRhNzU0
NjVlMjk2Zi4uYWVkZDU2YTk0MjEyYzEwMDJkYmNkOTRlYTM4YzdlZGI3NTQxNTU4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNsYXNzTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0zOSw2ICs0MCwx
NSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogCisgICAgTXV0
YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9u
VGFyZ2V0RGF0YS5nZXQoKTsgfQorICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRp
b25UYXJnZXREYXRhKCkKKyAgICB7CisgICAgICAgIGlmICghbV9tdXRhdGlvblRhcmdldERhdGEp
CisgICAgICAgICAgICBtX211dGF0aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlv
blRhcmdldERhdGEpOworICAgICAgICByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7
CisgICAgfQorCisKICAgICB1c2luZyBOb2RlUmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNl
VXBkYXRlU29vbkFmdGVyQXR0YWNoOwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0TmVlZHNG
b2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAKQEAgLTU1LDYgKzY1LDggQEAg
cHVibGljOgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudDsKICNlbmRpZgorcHJpdmF0ZToKKyAgICBPd25QdHI8TXV0YXRpb25U
YXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIGlubGluZSBJbnRTaXplIGRl
ZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhZDhkODg0MTA0NTFkMjg2MzU3ZGVlMGE1NWQxMzNkNDY2OTZh
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5l
ci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBN
dXRhdGlvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVj
b3JkOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwordHlwZWRlZiBWZWN0b3I8UmVm
UHRyPE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9uUmVjb3JkVmVjdG9yOworCitjbGFzcyBNdXRh
dGlvbkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4geworcHVi
bGljOgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRh
dGlvblJlY29yZFZlY3Rvcj4pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBNdXRhdGlvbkxpc3RlbmVyJikgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpID0g
MDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25MaXN0ZW5lci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWFkMDFmOGQzYjY2ZmYxOWQzZDM4MWIyNmQ3NGZlY2I3ZGM2ZjdhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlk
bApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAg
IFB1cmVJbnRlcmZhY2UsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gTXV0YXRpb25M
aXN0ZW5lciB7CisgICAgICAgIC8vIHZvaWQgaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRb
XSBtdXRhdGlvbnMpCisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gQXJyYXkgbXV0YXRpb25z
KTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVj
b3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDIwOGJkYmRiODA4MDNlNjM2NjMxZTJmZGU2ZTVhMDU0YmYzNTc1YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSwx
MTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiTXV0YXRpb25UYXJnZXREYXRhLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNs
dWRlICJTdGF0aWNOb2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIEVtcHR5Tm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVMaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eU5vZGVMaXN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUq
IGl0ZW0odW5zaWduZWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUqIGl0
ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCB7IHJldHVybiAwOyB9CisKK3By
aXZhdGU6CisgICAgRW1wdHlOb2RlTGlzdCgpIHsgfQorfTsKKworfQorCitQYXNzUmVmUHRyPE11
dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCwgdW5zaWduZWQgYWRkZWRDb3VudCwgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gcmVtb3ZlZCwgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXgpCit7CisgICAgUmVmUHRyPE11
dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGls
ZGxpc3RGbGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhID0gYWRv
cHRQdHIobmV3IENoaWxkbGlzdERhdGEpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEt
PmFkZGVkQ291bnQgPSBhZGRlZENvdW50OworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEt
PnJlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRhdGlvbi0+bV9jaGlsZGxpc3RE
YXRhLT5yZW1vdmVkTm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPnJl
bW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX2No
aWxkbGlzdERhdGEtPmNoaWxkbGlzdEluZGV4ID0gY2hpbGRsaXN0SW5kZXg7CisgICAgcmV0dXJu
IG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0
YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJn
ZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUpCit7CisgICAgUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChBdHRyaWJ1dGVG
bGFnLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9hdHRyTmFtZSA9IGF0dHJOYW1lOworICAg
IHJldHVybiBtdXRhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2Rl
PiB0YXJnZXQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGFy
YWN0ZXJkYXRhRmxhZywgdGFyZ2V0KSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRp
b25SZWNvcmQ6OnR5cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBjaGlsZGxpc3QsICgiY2hpbGRsaXN0IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBhdHRyaWJ1dGUsICgiYXR0cmlidXRlIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBjaGFyYWN0ZXJkYXRhLCAoImNoYXJhY3RlcmRhdGEiKSk7CisK
KyAgICBzd2l0Y2ggKG1fdHlwZUZsYWcpIHsKKyAgICBjYXNlIE11dGF0aW9uUmVjb3JkOjpDaGls
ZGxpc3RGbGFnOgorICAgICAgICByZXR1cm4gY2hpbGRsaXN0OworICAgIGNhc2UgTXV0YXRpb25S
ZWNvcmQ6OkF0dHJpYnV0ZUZsYWc6CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7CisgICAgY2Fz
ZSBNdXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZsYWc6CisgICAgICAgIHJldHVybiBjaGFy
YWN0ZXJkYXRhOworICAgIH0KKyAgICBBU1NFUlQoZmFsc2UpOworICAgIHJldHVybiBlbXB0eUF0
b207Cit9CisKK011dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFn
IHR5cGVGbGFnLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdHlwZUZsYWcodHlw
ZUZsYWcpCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCisgICAgLCBtX3dhc0luRG9jdW1lbnQobV90
YXJnZXQtPmluRG9jdW1lbnQoKSkKKyAgICAsIG1fb3duZXJEb2N1bWVudChtX3RhcmdldC0+b3du
ZXJEb2N1bWVudCgpKQoreworfQorCitNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKCkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNv
cmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDljZTQwMTEzYzMzNmUzY2FiZTM3NTdiMTFkYTdlMzZhMGUwZTRm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRp
b25SZWNvcmRfaAorCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
b2N1bWVudDsKKworY2xhc3MgTXV0YXRpb25SZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRh
dGlvblJlY29yZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPiBjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCB1bnNp
Z25lZCBhZGRlZENvdW50LCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVkLCB1bnNpZ25lZCBj
aGlsZGxpc3RJbmRleCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNy
ZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0ck5hbWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3Jk
PiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAg
dmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSgpOworICAgIE5vZGUqIHRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisgICAg
Ym9vbCB3YXNJbkRvY3VtZW50KCkgeyByZXR1cm4gbV93YXNJbkRvY3VtZW50OyB9CisgICAgRG9j
dW1lbnQqIG93bmVyRG9jdW1lbnQoKSB7IHJldHVybiBtX293bmVyRG9jdW1lbnQuZ2V0KCk7IH0K
KworICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxpc3QnCisgICAgdW5zaWduZWQgYWRkZWRDb3Vu
dCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3RE
YXRhLT5hZGRlZENvdW50IDogMDsKKyAgICB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2Rlcygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRh
LT5yZW1vdmVkTm9kZXMuZ2V0KCkgOiAwOworICAgIH0KKyAgICB1bnNpZ25lZCBjaGlsZGxpc3RJ
bmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxp
c3REYXRhLT5jaGlsZGxpc3RJbmRleCA6IDA7CisgICAgfQorCisgICAgLy8gRm9yIHR5cGUgPT0g
J2F0dHJpYnV0ZScKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJOYW1lKCkgeyByZXR1cm4g
bV9hdHRyTmFtZTsgfQorCisgICAgLy8gTm90IHBhcnQgb2YgdGhlIElETCwgYnV0IHVzZWQgaW50
ZXJuYWxseSBmb3IgZmFzdCB0eXBlLWJhc2VkIG9wZXJhdGlvbnMuCisgICAgZW51bSBNdXRhdGlv
blR5cGVGbGFnIHsKKyAgICAgICAgQ2hpbGRsaXN0RmxhZyA9ICgxIDw8IDApLAorICAgICAgICBB
dHRyaWJ1dGVGbGFnID0gKDEgPDwgMSksCisgICAgICAgIENoYXJhY3RlcmRhdGFGbGFnID0gKDEg
PDwgMikKKyAgICB9OworICAgIE11dGF0aW9uVHlwZUZsYWcgdHlwZUZsYWcoKSB7IHJldHVybiBt
X3R5cGVGbGFnOyB9CisKK3ByaXZhdGU6CisgICAgTXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBl
RmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgc3RydWN0IENoaWxkbGlzdERh
dGEgeworICAgICAgICB1bnNpZ25lZCBhZGRlZENvdW50OworICAgICAgICBSZWZQdHI8Tm9kZUxp
c3Q+IHJlbW92ZWROb2RlczsKKyAgICAgICAgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXg7CisgICAg
fTsKKworICAgIE11dGF0aW9uVHlwZUZsYWcgbV90eXBlRmxhZzsKKyAgICBSZWZQdHI8Tm9kZT4g
bV90YXJnZXQ7CisgICAgYm9vbCBtX3dhc0luRG9jdW1lbnQ7CisgICAgUmVmUHRyPERvY3VtZW50
PiBtX293bmVyRG9jdW1lbnQ7CisgICAgQXRvbWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgT3du
UHRyPENoaWxkbGlzdERhdGE+IG1fY2hpbGRsaXN0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25SZWNvcmQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjExYzZiM2U3YTczNTA4NzY2OThlNDliODc0NWNlYmExZDUzMmQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgdGFyZ2V0OworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgd2FzSW5Eb2N1bWVudDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50ICAgICAgIG93bmVyRG9jdW1lbnQ7CisKKyAgICAgICAgLy8g
Rm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgIGFkZGVkQ291bnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlz
dCAgICAgICByZW1vdmVkTm9kZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nICBjaGlsZGxpc3RJbmRleDsKKworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmli
dXRlJworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgYXR0ck5hbWU7
CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblNjb3BlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YzNlNjZlNTA0NzhmODVlZmUxZTNiMzZmMjkzZjhlODE5OWI5ZTJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuY3BwCkBAIC0wLDAgKzEsMjU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uU2NvcGUuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
TXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU3RhdGljTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24pOwor
cHVibGljOgorICAgIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiB0YXJnZXQpOworICAgIH5DaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKCk7CisKKyAgICB2
b2lkIGNoaWxkQWRkZWQoTm9kZSogY2hpbGQpOworICAgIHZvaWQgd2lsbFJlbW92ZUNoaWxkKFBh
c3NSZWZQdHI8Tm9kZT4gY2hpbGQpOworICAgIHZvaWQgZGlzcGF0Y2goKTsKKworcHJpdmF0ZToK
KyAgICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1f
cmVtb3ZlZE5vZGVzOworICAgIHVuc2lnbmVkIG1fYWRkZWROb2RlQ291bnQ7CisgICAgaW50IG1f
Y2hpbGRsaXN0SW5kZXg7CisgICAgUmVmUHRyPE5vZGU+IG1fbGFzdFJlbW92ZWQ7CisgICAgUmVm
UHRyPE5vZGU+IG1fbGFzdEFkZGVkOworfTsKKworY2xhc3MgQ2hpbGRsaXN0Q2hhbmdlc0FjY3Vt
dWxhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZGxpc3RDaGFuZ2VzQWNjdW11
bGF0b3IpOworcHVibGljOgorICAgIH5DaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsKKwor
ICAgIHN0YXRpYyBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IqIGluc3RhbmNlKCk7CisKKyAg
ICB2b2lkIGluY3JlbWVudFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpOworICAgIHZvaWQgZGVj
cmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCk7CisKKyAgICB2b2lkIGNoaWxkQWRkZWQo
Tm9kZSogdGFyZ2V0LCBOb2RlKiBjaGlsZCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQoTm9k
ZSogdGFyZ2V0LCBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkKTsKKworcHJpdmF0ZToKKyAgICBDaGls
ZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7
CisKKyAgICBIYXNoTWFwPE5vZGUqLCB1bnNpZ25lZD4gbV9zY29waW5nTGV2ZWxzOworICAgIEhh
c2hNYXA8Tm9kZSosIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24qPiBtX2FjY3VtdWxhdGlv
bnM7CisKKyAgICBzdGF0aWMgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yKiBzX2luc3RhbmNl
OworfTsKKworQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6Q2hpbGRsaXN0Q2hhbmdlZEFj
Y3VtdWxhdGlvbihQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdGFyZ2V0KHRhcmdl
dCkKKyAgICAsIG1fYWRkZWROb2RlQ291bnQoMCkKKyAgICAsIG1fY2hpbGRsaXN0SW5kZXgoLTEp
CisgICAgLCBtX2xhc3RSZW1vdmVkKDApCisgICAgLCBtX2xhc3RBZGRlZCgwKQoreworfQorCitD
aGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uOjp+Q2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlv
bigpCit7CisgICAgQVNTRVJUKG1fcmVtb3ZlZE5vZGVzLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQg
Q2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6Y2hpbGRBZGRlZChOb2RlKiBjaGlsZCkKK3sK
KyAgICBpZiAobV9jaGlsZGxpc3RJbmRleCA8IDApIHsKKyAgICAgICAgbV9jaGlsZGxpc3RJbmRl
eCA9IDA7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsg
bjsgbiA9IG4tPnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKyttX2NoaWxkbGlzdElu
ZGV4OworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQobV9sYXN0QWRkZWQgPT0gY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpKTsKKworICAgICsrbV9hZGRlZE5vZGVDb3VudDsKKyAgICBtX2xhc3RB
ZGRlZCA9IGNoaWxkOworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb246Ondp
bGxSZW1vdmVDaGlsZChQYXNzUmVmUHRyPE5vZGU+IGNoaWxkKQoreworICAgIEFTU0VSVCghbV9h
ZGRlZE5vZGVDb3VudCk7CisgICAgaWYgKG1fY2hpbGRsaXN0SW5kZXggPCAwKSB7CisgICAgICAg
IG1fY2hpbGRsaXN0SW5kZXggPSAwOworICAgICAgICBmb3IgKE5vZGUqIG4gPSBjaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICAg
ICsrbV9jaGlsZGxpc3RJbmRleDsKKworICAgICAgICBtX2xhc3RBZGRlZCA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKG1fbGFzdFJlbW92ZWQg
PT0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKKworICAgIG1fbGFzdFJlbW92ZWQgPSBjaGls
ZDsKKyAgICBtX3JlbW92ZWROb2Rlcy5hcHBlbmQobV9sYXN0UmVtb3ZlZCk7Cit9CisKK3ZvaWQg
Q2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6ZGlzcGF0Y2goKQoreworICAgIE5vZGUqIHRh
cmdldCA9IG1fdGFyZ2V0LmdldCgpOworICAgIGlmICghbV9hZGRlZE5vZGVDb3VudCAmJiBtX3Jl
bW92ZWROb2Rlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNdXRh
dGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hh
bmdlZChtX3RhcmdldCwgbV9hZGRlZE5vZGVDb3VudCwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1f
cmVtb3ZlZE5vZGVzKSwgbV9jaGlsZGxpc3RJbmRleCk7CisgICAgaWYgKHRhcmdldC0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICB0b0VsZW1lbnQodGFyZ2V0KS0+ZW5xdWV1ZU11dGF0aW9uKG11
dGF0aW9uKTsKKyAgICBlbHNlIGlmICh0YXJnZXQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1F
TlRfRlJBR01FTlRfTk9ERSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+
KHRhcmdldCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgdGFyZ2V0LT5vd25lckRv
Y3VtZW50KCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7Cit9CisKKworQ2hpbGRsaXN0Q2hh
bmdlc0FjY3VtdWxhdG9yKiBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OnNfaW5zdGFuY2Ug
PSAwOworCitDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OkNoaWxkbGlzdENoYW5nZXNBY2N1
bXVsYXRvcigpCit7Cit9CisKKy8vIENhbiB0aGlzIGdldCBjYWxsZWQKK0NoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6fkNoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcigpCit7CisgICAgQVNT
RVJUKG1fc2NvcGluZ0xldmVscy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2FjY3VtdWxhdGlv
bnMuaXNFbXB0eSgpKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6Omlu
aXRpYWxpemUoKQoreworICAgIEFTU0VSVCghc19pbnN0YW5jZSk7CisgICAgT3duUHRyPENoaWxk
bGlzdENoYW5nZXNBY2N1bXVsYXRvcj4gaW5zdGFuY2UgPSBhZG9wdFB0cihuZXcgQ2hpbGRsaXN0
Q2hhbmdlc0FjY3VtdWxhdG9yKTsKKyAgICBzX2luc3RhbmNlID0gaW5zdGFuY2UubGVha1B0cigp
OworfQorCisKK0NoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvciogQ2hpbGRsaXN0Q2hhbmdlc0Fj
Y3VtdWxhdG9yOjppbnN0YW5jZSgpCit7CisgICAgaWYgKCFzX2luc3RhbmNlKQorICAgICAgICBp
bml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gc19pbnN0YW5jZTsKK30KKwordm9pZCBDaGlsZGxp
c3RDaGFuZ2VzQWNjdW11bGF0b3I6OmNoaWxkQWRkZWQoTm9kZSogdGFyZ2V0LCBOb2RlKiBjaGls
ZCkKK3sKKyAgICBBU1NFUlQobV9hY2N1bXVsYXRpb25zLmNvbnRhaW5zKHRhcmdldCkpOworICAg
IENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24qIHJlY29yZCA9IG1fYWNjdW11bGF0aW9ucy5n
ZXQodGFyZ2V0KTsKKyAgICBpZiAocmVjb3JkKQorICAgICAgICByZWNvcmQtPmNoaWxkQWRkZWQo
Y2hpbGQpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6d2lsbFJlbW92
ZUNoaWxkKE5vZGUqIHRhcmdldCwgUGFzc1JlZlB0cjxOb2RlPiBjaGlsZCkKK3sKKyAgICBBU1NF
UlQobV9hY2N1bXVsYXRpb25zLmNvbnRhaW5zKHRhcmdldCkpOworICAgIENoaWxkbGlzdENoYW5n
ZWRBY2N1bXVsYXRpb24qIHJlY29yZCA9IG1fYWNjdW11bGF0aW9ucy5nZXQodGFyZ2V0KTsKKyAg
ICBpZiAocmVjb3JkKQorICAgICAgICByZWNvcmQtPndpbGxSZW1vdmVDaGlsZChjaGlsZCk7Cit9
CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjppbmNyZW1lbnRTY29waW5nTGV2
ZWwoTm9kZSogdGFyZ2V0KQoreworICAgIHVuc2lnbmVkIHNjb3BpbmdMZXZlbDsKKworICAgIGlm
IChtX3Njb3BpbmdMZXZlbHMuY29udGFpbnModGFyZ2V0KSkKKyAgICAgICAgc2NvcGluZ0xldmVs
ID0gbV9zY29waW5nTGV2ZWxzLmdldCh0YXJnZXQpICsgMTsKKyAgICBlbHNlIHsKKyAgICAgICAg
c2NvcGluZ0xldmVsID0gMTsKKyAgICAgICAgYm9vbCBoYXNMaXN0ZW5lcnMgPSB0YXJnZXQtPm93
bmVyRG9jdW1lbnQoKS0+aGFzTXV0YXRpb25MaXN0ZW5lcnMoKTsKKworICAgICAgICBpZiAoIWhh
c0xpc3RlbmVycykgeworICAgICAgICAgICAgaWYgKHRhcmdldC0+aXNFbGVtZW50Tm9kZSgpKQor
ICAgICAgICAgICAgICAgIGhhc0xpc3RlbmVycyA9IHRvRWxlbWVudCh0YXJnZXQpLT5oYXNNdXRh
dGlvbkxpc3RlbmVycygpOworICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0LT5ub2RlVHlwZSgp
ID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpCisgICAgICAgICAgICAgICAgaGFzTGlz
dGVuZXJzID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KHRhcmdldCktPmhhc011dGF0
aW9uTGlzdGVuZXJzKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzTGlzdGVuZXJzKQor
ICAgICAgICAgICAgbV9hY2N1bXVsYXRpb25zLnNldCh0YXJnZXQsIG5ldyBDaGlsZGxpc3RDaGFu
Z2VkQWNjdW11bGF0aW9uKHRhcmdldCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fj
Y3VtdWxhdGlvbnMuc2V0KHRhcmdldCwgMCk7CisgICAgfQorCisgICAgbV9zY29waW5nTGV2ZWxz
LnNldCh0YXJnZXQsIHNjb3BpbmdMZXZlbCk7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0Fj
Y3VtdWxhdG9yOjpkZWNyZW1lbnRTY29waW5nTGV2ZWwoTm9kZSogdGFyZ2V0KQoreworICAgIEFT
U0VSVChtX3Njb3BpbmdMZXZlbHMuY29udGFpbnModGFyZ2V0KSk7CisgICAgdW5zaWduZWQgc2Nv
cGluZ0xldmVsID0gbV9zY29waW5nTGV2ZWxzLmdldCh0YXJnZXQpIC0gMTsKKworICAgIGlmIChz
Y29waW5nTGV2ZWwgPiAwKSB7CisgICAgICAgIG1fc2NvcGluZ0xldmVscy5zZXQodGFyZ2V0LCBz
Y29waW5nTGV2ZWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3duUHRyPENoaWxk
bGlzdENoYW5nZWRBY2N1bXVsYXRpb24+IHJlY29yZCA9IGFkb3B0UHRyKG1fYWNjdW11bGF0aW9u
cy50YWtlKHRhcmdldCkpOworICAgIG1fc2NvcGluZ0xldmVscy5yZW1vdmUodGFyZ2V0KTsKKwor
ICAgIGlmIChyZWNvcmQpCisgICAgICAgIHJlY29yZC0+ZGlzcGF0Y2goKTsKK30KKworfSAvLyBu
YW1lc3BhY2UKKworQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGU6OkNoaWxkbGlzdENoYW5n
ZWRNdXRhdGlvblNjb3BlKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90YXJnZXQo
dGFyZ2V0KQoreworICAgIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+
aW5jcmVtZW50U2NvcGluZ0xldmVsKG1fdGFyZ2V0LmdldCgpKTsKK30KKworQ2hpbGRsaXN0Q2hh
bmdlZE11dGF0aW9uU2NvcGU6On5DaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSgpCit7Cisg
ICAgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjppbnN0YW5jZSgpLT5kZWNyZW1lbnRTY29w
aW5nTGV2ZWwobV90YXJnZXQuZ2V0KCkpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZWRNdXRh
dGlvblNjb3BlOjpjaGlsZEFkZGVkKE5vZGUqIGNoaWxkKQoreworICAgIENoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+Y2hpbGRBZGRlZChtX3RhcmdldC5nZXQoKSwgY2hp
bGQpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlOjp3aWxsUmVtb3Zl
Q2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBjaGlsZCkKK3sKKyAgICBDaGlsZGxpc3RDaGFuZ2VzQWNj
dW11bGF0b3I6Omluc3RhbmNlKCktPndpbGxSZW1vdmVDaGlsZChtX3RhcmdldC5nZXQoKSwgY2hp
bGQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2Nv
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZGNmMWQwZDU4MjRlMDY3OTY2OGEwOTFiY2IwM2ZiNzE5OWZkNTc1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblNjb3BlX2gKKyNkZWZpbmUgTXV0YXRpb25T
Y29wZV9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBOb2RlOworCitjbGFzcyBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUp
OworcHVibGljOgorICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlKFBhc3NSZWZQdHI8
Tm9kZT4gdGFyZ2V0KTsKKyAgICB+Q2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUoKTsKKwor
ICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlKik7CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fdGFyZ2V0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25UYXJnZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZjE0YzFlMDBiYjE3NjE2YzliM2FmYjJhNmIz
MzQyY2EwNjgyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25UYXJnZXQuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
Ik11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyZWRNdXRhdGlvbkxp
c3RlbmVyLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBNdXRh
dGlvbkNvbnRleHQgeworICAgIE11dGF0aW9uQ29udGV4dChQYXNzUmVmUHRyPERvY3VtZW50PiBk
LCBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IG8pCisgICAgICAgIDogZG9jdW1lbnQoZCkK
KyAgICAgICAgLCBsaXN0ZW5lcihvKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RG9jdW1l
bnQ+IGRvY3VtZW50OworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKK307
CisKK3N0cnVjdCBNdXRhdGlvbkNvbnRleHRQdHJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBNdXRhdGlvbkNvbnRleHQqIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBJ
bnRIYXNoPHVpbnQ2NF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50NjRfdD4oUHRySGFzaDxEb2N1
bWVudCo+OjpoYXNoKGtleS0+ZG9jdW1lbnQuZ2V0KCkpKSA8PCAzMiB8IGtleS0+bGlzdGVuZXIt
Pmhhc2goKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgTXV0YXRpb25D
b250ZXh0KiBhLCBjb25zdCBNdXRhdGlvbkNvbnRleHQqIGIpCisgICAgeworICAgICAgICByZXR1
cm4gYS0+ZG9jdW1lbnQgPT0gYi0+ZG9jdW1lbnQgJiYgKmEtPmxpc3RlbmVyID09ICpiLT5saXN0
ZW5lcjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordHlwZWRlZiBIYXNoTWFwPE11dGF0aW9uQ29udGV4
dCosIE11dGF0aW9uUmVjb3JkVmVjdG9yKiwgTXV0YXRpb25Db250ZXh0UHRySGFzaD4gQ29udGV4
dFZlY3Rvck1hcDsKKworfSAvLyBuYW1lc3BhY2UKKworc3RhdGljIENvbnRleHRWZWN0b3JNYXAm
IGNvbnRleHRWZWN0b3JNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29udGV4dFZl
Y3Rvck1hcCwgbSwgKCkpOworICAgIHJldHVybiBtOworfQorCitzdGF0aWMgRGVxdWU8T3duUHRy
PE11dGF0aW9uQ29udGV4dD4gPiYgYWN0aXZlTXV0YXRpb25Db250ZXh0cygpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChEZXF1ZTxPd25QdHI8TXV0YXRpb25Db250ZXh0PiA+LCBhY3RpdmVD
b250ZXh0cywgKCkpOworICAgIHJldHVybiBhY3RpdmVDb250ZXh0czsKK30KKwordm9pZCBzcGlu
TXV0YXRpb25RdWV1ZSgpCit7CisgICAgd2hpbGUgKCFhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBh
Y3RpdmVNdXRhdGlvbkNvbnRleHRzKCkudGFrZUZpcnN0KCk7CisgICAgICAgIE93blB0cjxNdXRh
dGlvblJlY29yZFZlY3Rvcj4gdiA9IGFkb3B0UHRyKGNvbnRleHRWZWN0b3JNYXAoKS50YWtlKGNv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgY29udGV4dC0+bGlzdGVuZXItPmhhbmRsZUV2ZW50KGNv
bnRleHQtPmRvY3VtZW50LmdldCgpLCB2LnJlbGVhc2UoKSk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBlbnN1cmVNdXRhdGlvblF1ZXVlZChQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBy
cExpc3RlbmVyLCBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAg
ICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgQVNT
RVJUKG11dGF0aW9uLT50YXJnZXQoKSk7CisgICAgQVNTRVJUKG11dGF0aW9uLT50YXJnZXQoKS0+
ZG9jdW1lbnQoKSk7CisgICAgT3duUHRyPE11dGF0aW9uQ29udGV4dD4gY29udGV4dCA9IGFkb3B0
UHRyKG5ldyBNdXRhdGlvbkNvbnRleHQobXV0YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpLCBw
cnBMaXN0ZW5lcikpOworCisgICAgcGFpcjxDb250ZXh0VmVjdG9yTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gY29udGV4dFZlY3Rvck1hcCgpLmFkZChjb250ZXh0LmdldCgpLCAwKTsKKyAg
ICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5l
dyBNdXRhdGlvblJlY29yZFZlY3RvcjsKKyAgICAgICAgYWN0aXZlTXV0YXRpb25Db250ZXh0cygp
LmFwcGVuZChjb250ZXh0LnJlbGVhc2UoKSk7CisgICAgfQorICAgIE11dGF0aW9uUmVjb3JkVmVj
dG9yKiB2ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKHYtPmlzRW1wdHkoKSB8fCB2
LT5sYXN0KCkgIT0gbXV0YXRpb24pCisgICAgICAgIHYtPmFwcGVuZChtdXRhdGlvbik7Cit9CisK
K011dGF0aW9uVGFyZ2V0Ojp+TXV0YXRpb25UYXJnZXQoKQoreworfQorCit2b2lkIE11dGF0aW9u
VGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0
ZW5lcj4gcHJwTGlzdGVuZXIsIHVpbnQ4X3QgdHlwZU1hc2spCit7CisgICAgUmVnaXN0ZXJlZE11
dGF0aW9uTGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKHBycExpc3RlbmVyLCB0eXBlTWFzayk7
CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0gZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7
CisgICAgc2l6ZV90IGluZGV4ID0gZC0+bGlzdGVuZXJzLmZpbmQocmVnaXN0ZXJlZExpc3RlbmVy
KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIGQtPmxpc3RlbmVycy5hcHBl
bmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBlbHNlCisgICAgICAgIGQtPmxpc3RlbmVyc1tp
bmRleF0udHlwZXMgfD0gdHlwZU1hc2s7Cit9CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OndlYmtp
dFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5lciogbGlzdGVuZXIpCit7Cisg
ICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0gbXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgaWYg
KCFkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQtPmxp
c3RlbmVycy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoKmQtPmxpc3RlbmVyc1tpXS5saXN0
ZW5lciA9PSAqbGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGQtPmxpc3RlbmVycy5yZW1vdmUoaSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTXV0YXRp
b25UYXJnZXQ6Omhhc011dGF0aW9uTGlzdGVuZXJzKCkKK3sKKyAgICBNdXRhdGlvblRhcmdldERh
dGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICByZXR1cm4gZCAmJiAhZC0+bGlzdGVu
ZXJzLmlzRW1wdHkoKTsKK30KKwordm9pZCBNdXRhdGlvblRhcmdldDo6ZW5xdWV1ZU11dGF0aW9u
KFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0aW9uKQoreworICAgIEFTU0VSVChw
cnBNdXRhdGlvbik7CisKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdl
dERhdGEoKTsKKyAgICBpZiAoIWQgfHwgZC0+bGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0
aW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5lcnNbaV0udHlwZXMgJiBtdXRhdGlvbi0+dHlwZUZs
YWcoKSkKKyAgICAgICAgICAgIGVuc3VyZU11dGF0aW9uUXVldWVkKGQtPmxpc3RlbmVyc1tpXS5s
aXN0ZW5lciwgbXV0YXRpb24pOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2VjOGFmOTllMThmOTE3
OWU1MmVlNjBlNjE4MWMxMzhlN2JjNzg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uVGFyZ2V0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25U
YXJnZXRfaAorI2RlZmluZSBNdXRhdGlvblRhcmdldF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXI7
CitjbGFzcyBNdXRhdGlvblJlY29yZDsKK2NsYXNzIE11dGF0aW9uVGFyZ2V0RGF0YTsKKworY2xh
c3MgTXV0YXRpb25UYXJnZXQgeworcHVibGljOgorICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25M
aXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+LCB1aW50OF90IHR5cGVNYXNrKTsK
KyAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5lciop
OworCisgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4p
OworICAgIGJvb2wgaGFzTXV0YXRpb25MaXN0ZW5lcnMoKTsKKworcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgfk11dGF0aW9uVGFyZ2V0KCk7CisKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0
YSogbXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXRE
YXRhKiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRh
dGlvblF1ZXVlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0
aW9uVGFyZ2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdl
dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMGJlMTBjMzBkMmUwYTNiOTQ0OTAwZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFy
Z2V0RGF0YV9oCisKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxp
c3RlbmVyPiBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0
YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEo
KSB7IH0KKyAgICB+TXV0YXRpb25UYXJnZXREYXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3Rl
bmVyVmVjdG9yIGxpc3RlbmVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIE11dGF0aW9uVGFyZ2V0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMGU4Y2JhZmFj
MDVhZWZmOTVhMmQ0M2I0ZWI4N2NhYWMxNzA2Zjk1Ni4uM2I4ZmI2ZGFmM2M3N2M1NGQ2ZmVlZGJl
YjNkZDAwNzJhNzdlMzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0
YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJOYW1l
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFy
ZURhdGEuaCIKQEAgLTIxMjYsNiArMjEyNyw4IEBAIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2FzZSBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKICAg
ICAgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0aGlz
KTsKKyAgICAgICAgICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNv
bnRhaW5lcik7CisKICAgICAgICAgICAgIGNvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmVy
LT5hcHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSwgZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorI2Rl
ZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxp
c3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3QgdHlwZU1hc2spCisgICAgICAgIDogbGlzdGVuZXIo
bCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFzaykgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAqb3RoZXIubGlzdGVuZXI7CisgICAgfQorCisgICAg
UmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyOworICAgIHVpbnQ4X3QgdHlwZXM7Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAwMDgy
MzJhNzA0M2QxOGZjZDRkYjYyNWU5OWUyNjQ3MTU4MWEwZDFhLi45MjM5YzA1MDc2MTljODc5M2E5
ZjA3YmI2MGM3ZTI4ZmFiMWFiNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgor
I2luY2x1ZGUgIk11dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJSZW5kZXJXb3JkQnJlYWsuaCIK
ICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
QEAgLTMxOCw2ICszMTksOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzT25lVGV4dENoaWxkKENv
bnRhaW5lck5vZGUqIG5vZGUpCiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFn
bWVudChIVE1MRWxlbWVudCogZWxlbWVudCwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0
aW9uU2NvcGUgbXV0YXRpb24oZWxlbWVudCk7CisKICAgICBpZiAoIWZyYWdtZW50LT5maXJzdENo
aWxkKCkpIHsKICAgICAgICAgZWxlbWVudC0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzM5LDYgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhG
cmFnbWVudChIVE1MRWxlbWVudCogZWxlbWVudCwgUGFzc1JlZlB0cjxEb2N1bWVuCiAKIHN0YXRp
YyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KEhUTUxFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIENoaWxkbGlzdENoYW5n
ZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGVsZW1lbnQpOwogICAgIGlmIChoYXNPbmVUZXh0Q2hp
bGQoZWxlbWVudCkpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8VGV4dCo+KGVsZW1lbnQtPmZpcnN0
Q2hpbGQoKSktPnNldERhdGEodGV4dCwgZWMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggNDNjMjM3NWM2MWZjMzllNDM3MTA3Y2UxYWI4NTQ0NWQxODUw
YjdkNi4uYTkxMWZjZGY1OTlkZDdiZjgzYTI2YTBhMjAzNzhhOWQ5NjhkNjgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVl
cnlMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hdmln
YXRvci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKQEAgLTE4ODMsNCArMTg4NCw5IEBAIFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0
b3JhZ2VJbmZvKCkgY29uc3QKIH0KICNlbmRpZgogCit2b2lkIERPTVdpbmRvdzo6c3Bpbk11dGF0
aW9uUXVldWUoKQoreworICAgIDo6V2ViQ29yZTo6c3Bpbk11dGF0aW9uUXVldWUoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYTJhZDgw
OWE5ZjA2NmZjMjhmNWFlZWJlODcxY2U2MGRjOGE4NWFmZC4uZGM5YjAxZGM1Y2NhYzY0OThmY2Fk
ZjIzZWEyN2I3NzNiNzQ3YTQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC00MTQsNiAr
NDE0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQZXJmb3JtYW5jZSogcGVyZm9y
bWFuY2UoKSBjb25zdDsKICNlbmRpZgogCisgICAgICAgIHZvaWQgc3Bpbk11dGF0aW9uUXVldWUo
KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIERPTVdpbmRvdyhGcmFtZSopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggYzIzODRkMTVhNWQ3YTk1ZDRjZjQwY2Q1NjkzZGZkMTdh
N2I2ZDk4Mi4uMjM0MmFkZjVkYmViZjM5ZjZkNTQ3MDA1MGNjZjNiNTc1ZmI4ZmJkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtODA1LDYgKzgwNSwxMSBAQCBtb2R1bGUgd2luZG93
IHsKICAgICAgICAgLy8gd2luZG93LnRvU3RyaW5nKCkgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGlu
ZyBpbiBWOAogICAgICAgICBbVjhEb05vdENoZWNrU2lnbmF0dXJlLCBEb05vdENoZWNrRG9tYWlu
U2VjdXJpdHksIEN1c3RvbSwgRG9udEVudW1dIERPTVN0cmluZyB0b1N0cmluZygpOwogI2VuZGlm
IC8vIGRlZmluZWQoVjhfQklORElORykKKworICAgICAgICAvLyBGSVhNRShhZGFtayk6IERPIE5P
VCBTVUJNSVQKKyAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBleHBvc2VkIHRvIEpTIHVudGls
IGVtYmVkZGVycyBhcmUgbW9kaWZpZWQgdG8gY2FsbCBzcGluTXV0YXRpb25RdWV1ZSgpCisgICAg
ICAgIC8vIGF0IHRoZSBlbmQgb2YgZWFjaCB0YXNrLgorICAgICAgICB2b2lkIHNwaW5NdXRhdGlv
blF1ZXVlKCk7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106198</attachid>
            <date>2011-09-02 14:26:05 -0700</date>
            <delta_ts>2011-09-02 16:22:42 -0700</delta_ts>
            <desc>Added tests and fixes for replaceChild, insertBefore, innerHTML</desc>
            <filename>bug-66079-20110902142604.patch</filename>
            <type>text/plain</type>
            <size>129671</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDBlODMwMjU2ZjU5MDZkNWVkYjk5
ZTU4ZmM5ODM4YTRkODFjMzNlLi5hNGM4MjZkYTc3ZDAzNDgyMDZmMzRjYWUzZDg5NTU4ZTFiZmNh
M2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIHI5NDA4NCBhbmQgcjk0MDg4IGFuZCByOTM5MDku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDY2YmFiMTU1OTcyZWMyOGY0MmM4MzYwMzQwZDlmOTQzYmEzMzIz
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBACitUZXN0IHRoYXQgTXV0YXRpb25MaXN0
ZW5lcnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLndhc0luRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIG11dGF0
aW9uc1sxXS5hZGRlZENvdW50IGlzIGFkZGVkQ291bnRzWzFdCitQQVNTIG11dGF0aW9uc1sxXS5j
aGlsZGxpc3RJbmRleCBpcyBjaGlsZGxpc3RJbmRpY2VzWzFdCitQQVNTIG11dGF0aW9uc1sxXS53
YXNJbkRvY3VtZW50IGlzIGluRG9jdW1lbnRGbGFnc1sxXQorUEFTUyBtdXRhdGlvbnNbMl0uYWRk
ZWRDb3VudCBpcyBhZGRlZENvdW50c1syXQorUEFTUyBtdXRhdGlvbnNbMl0uY2hpbGRsaXN0SW5k
ZXggaXMgY2hpbGRsaXN0SW5kaWNlc1syXQorUEFTUyBtdXRhdGlvbnNbMl0ud2FzSW5Eb2N1bWVu
dCBpcyBpbkRvY3VtZW50RmxhZ3NbMl0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWROb2Rlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxs
ZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFT
UyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1Mg
bGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHRleHRO
b2Rlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50Rmxh
Z3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYWRk
ZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5k
ZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVu
dCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQorUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCBpcyBhZGRlZENvdW50c1swXQorUEFTUyBtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWROb2Rlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0uY2hpbGRsaXN0SW5kZXggaXMgY2hpbGRsaXN0SW5kaWNlc1swXQorUEFTUyBtdXRhdGlvbnNb
MF0ud2FzSW5Eb2N1bWVudCBpcyBpbkRvY3VtZW50RmxhZ3NbMF0KK1BBU1MgbXV0YXRpb25zWzFd
LmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMV0KK1BBU1MgbXV0YXRpb25zWzFdLmNoaWxkbGlz
dEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMV0KK1BBU1MgbXV0YXRpb25zWzFdLndhc0luRG9j
dW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzFdCitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNbMF0KK1BBU1MgbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbXV0YXRp
b25zWzBdLnJlbW92ZWROb2Rlc1sxXSBpcyByZW1vdmVkTm9kZXNbMV0KK1BBU1MgbXV0YXRpb25z
WzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0KK1BBU1MgbXV0YXRpb25z
WzBdLndhc0luRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQQVNTIGxpc3RlbmVyQ2Fs
bGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgYWRkZWRDb3VudHNb
MF0KK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0K
K1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlzIGNoaWxkbGlzdEluZGljZXNbMF0K
K1BBU1MgbXV0YXRpb25zWzBdLndhc0luRG9jdW1lbnQgaXMgaW5Eb2N1bWVudEZsYWdzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmQy
ZjQ3ZWFlMjJmMmVkNmEyZGEyMDNhOTNkYzcyZTM3ODVhMjYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDE4
MCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgPGRp
diBpZD0ic2FuZGJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+CisgIDxzY3JpcHQ+Cisg
ICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25MaXN0ZW5lcnMgd29yayBhcyBl
eHBlY3RlZC4nKTsKKyAgICAgICAgdmFyIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHZhciBs
aXN0ZW5lckNhbGxlZCA9IGZhbHNlOworICAgICAgICB2YXIgYWRkZWRDb3VudHM7CisgICAgICAg
IHZhciByZW1vdmVkTm9kZXM7CisgICAgICAgIHZhciBjaGlsZGxpc3RJbmRpY2VzOworICAgICAg
ICB2YXIgbW9kaWZpZWRBdHRyczsKKyAgICAgICAgdmFyIHRleHROb2RlczsKKyAgICAgICAgdmFy
IGRvY3VtZW50TGlzdGVuZXJPcHRpb25zOworICAgICAgICB2YXIgaW5Eb2N1bWVudEZsYWdzOwor
CisgICAgICAgIGZ1bmN0aW9uIGFzc2VydExpc3RlbmVyQ2FsbGVkKCkgeworICAgICAgICAgICAg
c3VzcGVuZExpc3RlbmluZygpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdsaXN0ZW5lckNh
bGxlZCcpOworICAgICAgICAgICAgcmVzdW1lTGlzdGVuaW5nKCk7CisgICAgICAgICAgICBsaXN0
ZW5lckNhbGxlZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVu
ZXIobSkgeworICAgICAgICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICAgICAgbGlz
dGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAg
ICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVkSW5kZXgg
PSAwOworICAgICAgICAgICAgdmFyIGluZGV4SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0
dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxpc3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhZGRlZENvdW50cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWycgKyBpICsgJ10uYWRkZWRDb3VudCcsICdhZGRlZENvdW50c1snICsgKGluc2Vy
dGVkSW5kZXgrKykgKyAnXScpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IG1baV0ucmVtb3ZlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsg
J10nLCAncmVtb3ZlZE5vZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRsaXN0SW5kaWNlcy5s
ZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWycgKyBp
ICsgJ10uY2hpbGRsaXN0SW5kZXgnLCAnY2hpbGRsaXN0SW5kaWNlc1snICsgKGluZGV4SW5kZXgr
KykgKyAnXScpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRy
aWJ1dGUnKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0
YXRpb25zWycgKyBpICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEn
KSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50
YXJnZXQnLCAndGV4dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAn
XS53YXNJbkRvY3VtZW50JywgJ2luRG9jdW1lbnRGbGFnc1snICsgaSArICddJyk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGFkZGVkQ291bnRzID0gW107CisgICAgICAgICAgICByZW1v
dmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbXTsKKyAgICAg
ICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsKKyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOwor
ICAgICAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0gW107CisgICAgICAgICAgICByZXN1bWVMaXN0
ZW5pbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN1c3BlbmRMaXN0ZW5pbmco
KSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxp
c3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiByZXN1bWVMaXN0ZW5pbmcoKSB7
CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVy
LCBkb2N1bWVudExpc3RlbmVyT3B0aW9ucyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIC8vIFRlc3QgaW5zZXJ0aW9ucywgImJ1YmJsaW5n
IiwgYW5kIGRlLWR1cGluZy4KKyAgICAgICAgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMgPSB7Y2hp
bGRsaXN0OiB0cnVlfTsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5l
cihsaXN0ZW5lciwgZG9jdW1lbnRMaXN0ZW5lck9wdGlvbnMpOworICAgICAgICB2YXIgYSA9IHNh
bmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAg
ICAgYS50ZXh0Q29udGVudCA9ICdoZWxsbywgd29ybGQnOworICAgICAgICB2YXIgYiA9IHNhbmRi
b3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAg
YWRkZWRDb3VudHMgPSBbMSwgMSwgMV07CisgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMCwg
MCwgMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlLCB0cnVlLCB0cnVlXTsKKyAg
ICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgYXNzZXJ0TGlzdGVuZXJDYWxsZWQo
KTsKKworICAgICAgICAvLyBUZXN0IHJlbW92YWwuCisgICAgICAgIHNhbmRib3gud2Via2l0QWRk
TXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICBz
YW5kYm94LnJlbW92ZUNoaWxkKGIpOworICAgICAgICBhZGRlZENvdW50cyA9IFswXTsKKyAgICAg
ICAgcmVtb3ZlZE5vZGVzID0gW2JdOworICAgICAgICBjaGlsZGxpc3RJbmRpY2VzID0gWzFdOwor
ICAgICAgICBpbkRvY3VtZW50RmxhZ3MgPSBbdHJ1ZV07CisgICAgICAgIHNwaW5NdXRhdGlvblF1
ZXVlKCk7CisgICAgICAgIGFzc2VydExpc3RlbmVyQ2FsbGVkKCk7CisKKyAgICAgICAgLy8gVGVz
dCBhdHRyaWJ1dGUgbXV0YXRpb24uCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25M
aXN0ZW5lcihsaXN0ZW5lciwge2F0dHJpYnV0ZTogdHJ1ZX0pOworICAgICAgICBtb2RpZmllZEF0
dHJzID0gWydkYXRhLWZvbyddOworICAgICAgICBzYW5kYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1m
b28nLCAnbXlkYXRhJyk7CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0cnVlXTsKKyAgICAg
ICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgYXNzZXJ0TGlzdGVuZXJDYWxsZWQoKTsK
KworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0YXRpb24uCisgICAgICAgIGEud2Vi
a2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsK
KyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RDaGlsZF07CisgICAgICAgIGEuZmlyc3RDaGls
ZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFt0
cnVlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgYXNzZXJ0TGlzdGVu
ZXJDYWxsZWQoKTsKKworICAgICAgICAvLyBUZXN0IGRpc2Nvbm5lY3RlZCBEb2N1bWVudEZyYWdt
ZW50CisgICAgICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OworICAgICAgICBkb2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVy
KTsKKyAgICAgICAgZnJhZy53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hp
bGRsaXN0OiB0cnVlfSk7CisgICAgICAgIHZhciBkID0gZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBhZGRlZENvdW50cyA9IFsxXTsKKyAg
ICAgICAgY2hpbGRsaXN0SW5kaWNlcyA9IFswXTsKKyAgICAgICAgaW5Eb2N1bWVudEZsYWdzID0g
W2ZhbHNlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgYXNzZXJ0TGlz
dGVuZXJDYWxsZWQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydEJlZm9yZSB3aXRoIGFuIGV4
aXN0aW5nIG5vZGU6IHlpZWxkcyB0d28gcmVjb3Jkcy4KKyAgICAgICAgc3VzcGVuZExpc3Rlbmlu
ZygpOworICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIHZhciBzcGFuID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKSk7CisgICAgICAgIHZhciBzcGFuMiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBkaXYud2Via2l0QWRkTXV0YXRpb25MaXN0
ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAgICAgICBkaXYuaW5zZXJ0QmVm
b3JlKHNwYW4yLCBzcGFuKTsKKyAgICAgICAgYWRkZWRDb3VudHMgPSBbMCwgMV07CisgICAgICAg
IHJlbW92ZWROb2RlcyA9IFtzcGFuMl07CisgICAgICAgIGNoaWxkbGlzdEluZGljZXMgPSBbMSwg
MF07CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFtmYWxzZSwgZmFsc2VdOworICAgICAgICBz
cGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBhc3NlcnRMaXN0ZW5lckNhbGxlZCgpOworCisg
ICAgICAgIC8vIFRlc3QgdGhhdCBpbm5lckhUTUwgeWllbGRzIGEgc2luZ2xlIHJlY29yZC4KKyAg
ICAgICAgc3VzcGVuZExpc3RlbmluZygpOworICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHZhciBib2xkID0gZGl2LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKSk7CisgICAgICAgIHZhciBpdGFsaWMgPSBkaXYuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpKTsKKyAgICAgICAgZGl2LndlYmtp
dEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAg
ICAgZGl2LmlubmVySFRNTCA9ICc8c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPic7CisgICAgICAg
IGFkZGVkQ291bnRzID0gWzJdOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYm9sZCwgaXRhbGlj
XTsKKyAgICAgICAgY2hpbGRsaXN0SW5kaWNlcyA9IFswXTsKKyAgICAgICAgaW5Eb2N1bWVudEZs
YWdzID0gW2ZhbHNlXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgYXNz
ZXJ0TGlzdGVuZXJDYWxsZWQoKTsKKworICAgICAgICAvLyBUZXN0IHRoYXQgcmVwbGFjZUNoaWxk
IHlpZWxkcyBhIHNpbmdsZSByZWNvcmQuCisgICAgICAgIHN1c3BlbmRMaXN0ZW5pbmcoKTsKKyAg
ICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBk
aXYuaW5uZXJIVE1MID0gJzxzcGFuPjwvc3Bhbj4nOworICAgICAgICB2YXIgYm9sZCA9IGRpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJykpOworICAgICAgICBkaXYud2Vi
a2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0pOworICAg
ICAgICB2YXIgaXRhbGljID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpOworICAgICAgICBk
aXYucmVwbGFjZUNoaWxkKGl0YWxpYywgYm9sZCk7CisgICAgICAgIGFkZGVkQ291bnRzID0gWzFd
OworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYm9sZF07CisgICAgICAgIGNoaWxkbGlzdEluZGlj
ZXMgPSBbMV07CisgICAgICAgIGluRG9jdW1lbnRGbGFncyA9IFtmYWxzZV07CisgICAgICAgIHNw
aW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIGFzc2VydExpc3RlbmVyQ2FsbGVkKCk7CisKKyAg
ICAgICAgLy8gVGVzdCByZW1vdmluZyB0aGUgbXV0YXRpb24gbGlzdGVuZXJzLgorICAgICAgICBz
YW5kYm94LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBk
b2N1bWVudC53ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAg
c2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykpOworICAgICAg
ICBzcGluTXV0YXRpb25RdWV1ZSgpOworICAgICAgICBzdXNwZW5kTGlzdGVuaW5nKCk7CisgICAg
ICAgIHNob3VsZEJlRmFsc2UoJ2xpc3RlbmVyQ2FsbGVkJyk7CisgICAgICAgIHJlc3VtZUxpc3Rl
bmluZygpOworCisgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICA8
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjYWMyNGQ4ZTA5MjUw
Mjk0ZjA1NTU4NWViYTI1MjUyODVhMGIxOWYuLjVjNzQwMjNiNDJhODAzYWE4MTg4NDU0YmQ3OTc0
NDg4Zjk5ZGMwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODQgQEAKKzIwMTEtMDgtMzAgIEFk
YW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jl
c3NdIEltcGxlbWVudCBNdXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2Vt
ZW50IGZvciBET00gTXV0YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBpbXBsZW1lbnRzIGFuIGV4cGVyaW1lbnRhbCwg
dmVuZG9yLXByZWZpeGVkIEFQSSB3aXRoIHRoZQorICAgICAgICBob3BlIG9mIGV2ZW50dWFsbHkg
cmVwbGFjaW5nIE11dGF0aW9uRXZlbnRzLiBUaGUgQVBJIGlzIGJhc2VkIGluCisgICAgICAgIGxh
cmdlIHBhcnQgb24gYSBwcm9wb3NhbCBieSBKb25hcyBTaWNraW5nIGluIGEgbWVzc2FnZSB0byBw
dWJsaWMtd2ViYXBwczoKKworICAgICAgICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1
YmxpYy9wdWJsaWMtd2ViYXBwcy8yMDExSnVsU2VwLzAzNjkuaHRtbAorCisgICAgICAgIFRoYXQg
dGhyZWFkIGlzIHZlcnkgbG9uZywgYnV0IGhhcyBoZWxwZnVsbHkgYmVlbiBzdW1tYXJpemVkIGJ5
CisgICAgICAgIFJhZmFlbCBXZWluc3RlaW4gaW4gYSByZWNlbnQgbWVzc2FnZToKKworICAgICAg
ICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJsaWMtd2ViYXBwcy8yMDEx
SnVsU2VwLzA3NzkuaHRtbAorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGlzIGluIG5v
IHdheSBtZWFudCB0byBiZSBhIGNvbXBsZXRlCisgICAgICAgIGltcGxlbWVudGF0aW9uLiBUaGUg
YmlnZ2VzdCBtaXNzaW5nIGZlYXR1cmUgaXMgdGhlIGFjdHVhbCBkaXNwYXRjaGluZworICAgICAg
ICBvZiBNdXRhdGlvblJlY29yZCBhcnJheXMgdG8gTXV0YXRpb25MaXN0ZW5lcnM6IHRoZSBpbmNs
dWRlZCBsYXlvdXQKKyAgICAgICAgdGVzdCBpbnN0ZWFkIGNhbGxzIGEgInNwaW5NdXRhdGlvblF1
ZXVlIiBmdW5jdGlvbiB0byB0cmlnZ2VyCisgICAgICAgIG5vdGlmaWNhdGlvbnMuIFRoaXMgaXMg
bm90IGFjdHVhbGx5IG1lYW50IHRvIGJlIGV4cG9zZWQgdG8gSlMsCisgICAgICAgIHRob3VnaDog
bXkgaG9wZSBpcyB0byBpbnN0ZWFkIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUgZnJvbQorICAgICAg
ICBDKyssIGVpdGhlciBmcm9tIHNvbWV3aGVyZSBpbiBXZWJDb3JlIG9yIChtb3JlIGxpa2VseSkg
aW4KKyAgICAgICAgdGhlIGVtYmVkZGVyLiBJIGhhdmUgYSBzZXBhcmF0ZSBjaGFuZ2Ugd2hpY2gg
aW1wbGVtZW50cyB0aGUKKyAgICAgICAgbGF0dGVyIGluIENocm9taXVtLgorCisgICAgICAgIFRo
ZSBvdGhlciBtYWluIHRoaW5nIG1pc3NpbmcgZnJvbSB0aGlzIHBhdGNoIGlzIHRoYXQgTXV0YXRp
b25SZWNvcmRzCisgICAgICAgIGFyZSBub3QgZGlzcGF0Y2hlZCBpbiBhbGwgdGhlIHByb3BlciBw
bGFjZXMsIGUuZy4sIHRoZSBoYW5kbGluZyBvZgorICAgICAgICBpbm5lckhUTUwgaXMgbm90IGFz
IHdlIGhvcGUgaXQgdG8gYmUuIFRoaXMgaXMgc2ltcGx5IGEgbWF0dGVyIG9mCisgICAgICAgIHdh
bnRpbmcgdG8gcHV0IHRoaXMgcGF0Y2ggdXAgdG8gZ2V0IGZlZWRiYWNrOiBpdCBzaG91bGRuJ3Qg
YmUKKyAgICAgICAgbXVjaCB3b3JrIHRvIGFkZCBNdXRhdGlvblJlY29yZCBkaXNwYXRjaGluZyBp
biBhbGwgdGhlIHByb3BlcgorICAgICAgICBwbGFjZXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3Bw
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS5neXAv
V2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0
aW9uTGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0
ZW5lcjo6SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25M
aXN0ZW5lcjo6fkpTTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0
aW9uTGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25M
aXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVu
ZXI6Omhhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6aXNvbGF0ZWRXb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OndyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpzZXRXcmFwcGVyKToKKyAgICAgICAgSlNNdXRhdGlv
bkxpc3RlbmVyIGlzIHZlcnkgc2ltaWxhciB0byBKU0V2ZW50TGlzdGVuZXIsCisgICAgICAgIHdp
dGggYSBmZXcgc2ltcGxpZmljYXRpb25zLiAgSXRzIHJlYXNvbiBmb3IgZXhpc3RpbmcKKyAgICAg
ICAgaXMgdGhhdCBOb2RlLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIgbmVlZHMgdG8gYmVoYXZl
CisgICAgICAgIGxpa2UgYWRkRXZlbnRMaXN0ZW5lciwgaW4gdGhhdCBkdXBsaWNhdGUgYWRkaXRp
b25zIGFyZQorICAgICAgICBpZ25vcmVkLiBUaGlzIHJlcXVpcmVzIHRoZSBvcGVyYXRvcj09IG1l
dGhvZC4gV2UgYWxzbworICAgICAgICB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBzYW1l
IE11dGF0aW9uUmVjb3JkCisgICAgICAgIG1vcmUgdGhhbiBvbmNlIHRvIGEgZ2l2ZW4gbGlzdGVu
ZXIsIGFuZCBmb3IgdGhpcworICAgICAgICB3ZSB1c2UgYSBIYXNoTWFwLCB0aHVzIHRoZSB8aGFz
aHwgbWV0aG9kLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbCk6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKEdldEludGVybmFsRmllbGRzKToKKyAgICAgICAgKEdlbmVy
YXRlTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICBTaW5jZSBNdXRh
dGlvbkxpc3RlbmVycyB0aGVtc2VsdmVzIGFyZSBjdXN0b20sIHNvCisgICAgICAgIG11c3QgYmUg
bXV0YXRpb24gbGlzdGVuZXIgYWRkaXRpb24gYW5kIHJlbW92YWwuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6
Z2V0TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6flY4TXV0YXRpb25MaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlvbkxpc3RlbmVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpkaXNwb3Nl
TGlzdGVuZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6Omhhc2gp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOE11dGF0aW9uTGlzdGVuZXI6OmdldExpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZFdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Y2xlYXJXcmFwcGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmRvRmluZFdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZE9yQ3JlYXRl
V3JhcHBlcik6CisgICAgICAgIFRoZSBWOCBlcXVpdmFsZW50cyBvZiB0aGUgSlNNdXRhdGlvbkxp
c3RlbmVyIGFib3ZlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
Vm9pZENhbGxiYWNrLmg6CisgICAgICAgIEdlbmVyYWxpemVkIGludm9rZUNhbGxiYWNrIHRvIG1h
a2UgaXQgc3VpdCB0aGUgcHVycG9zZXMgb2YKKyAgICAgICAgVjhNdXRhdGlvbkxpc3RlbmVyOjpo
YW5kbGVFdmVudC4KKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQpOgorICAgICAgICBE
aXNwYXRjaCAiY2hhcmFjdGVyZGF0YSIgbXV0YXRpb25zLgorICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMpOgorICAg
ICAgICBEaXNwYXRjaCAiY2hpbGRsaXN0IiBtdXRhdGlvbnMuCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVNdXRhdGlvblRhcmdl
dERhdGEpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudEZyYWdtZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEZyYWdtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50
OjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmlk
bDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICBEaXNwYXRjaCAiYXR0cmlidXRlIiBtdXRhdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
Om11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL011dGF0aW9uTGlzdGVu
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkxpc3RlbmVyOjp+TXV0YXRp
b25MaXN0ZW5lcik6CisgICAgICAgICogZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6dHlwZUZsYWdUb05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25S
ZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
Ojp+TXV0YXRpb25SZWNvcmQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25SZWNvcmQ6Omluc2VydGVkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNv
cmQ6OnJlbW92ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6bmV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmF0dHJOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpwcmV2VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25SZWNvcmQ6Om5ld1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uUmVjb3JkOjp0eXBlRmxhZyk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmlkbDog
QWRkZWQuCisgICAgICAgIE11dGF0aW9uUmVjb3JkcyBhcmUgYW5hbG9nb3VzIHRvIEV2ZW50czog
dGhleSBob2xkIGRhdGEKKyAgICAgICAgYWJvdXQgYSBzaW5nbGUgbXV0YXRpb24uCisgICAgICAg
ICogZG9tL011dGF0aW9uU2NvcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoaWxk
bGlzdENoYW5nZWRNdXRhdGlvblNjb3BlOjpjaGlsZEFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlOjp3aWxsUmVtb3ZlQ2hpbGQpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvblNjb3BlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvblRh
cmdldC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25Db250ZXh0OjpNdXRh
dGlvbkNvbnRleHRQdHJIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uQ29u
dGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dFZlY3Rvck1hcCk6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVNdXRhdGlvbkNvbnRl
eHRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmVuc3VyZU11dGF0aW9uUXVldWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
VGFyZ2V0Ojp+TXV0YXRpb25UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UYXJn
ZXQ6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRp
b25UYXJnZXQ6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25UYXJnZXQ6OmVucXVldWVNdXRhdGlvbik6CisgICAgICAgICogZG9tL011dGF0
aW9uVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAgICBNdXRhdGlvblRhcmdldCBpcyBhbmFsb2dvdXMg
dG8gRXZlbnRUYXJnZXQsIGFuZCBpcyBhIG1peGluIGZvcgorICAgICAgICBEb2N1bWVudCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIEVsZW1lbnQuCisgICAgICAgICogZG9tL011dGF0aW9uVGFyZ2V0
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0RGF0YTo6TXV0
YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0RGF0YTo6
fk11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxp
c3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXI6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNwaW5NdXRhdGlvblF1
ZXVlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgdG8gRE9NV2luZG93IGFy
ZW4ndCByZWFsbHkgcGFydCBvZiB0aGUgY2hhbmdlLAorICAgICAgICBhbmQgYXJlIHNpbXBseSBh
IHNoaW0gdG8gbWFrZSBpdCBlYXN5IHRvIGRlYWwgd2l0aCBtdXRhdGlvbnMgd2hpbGUgd2UKKyAg
ICAgICAgZmlndXJlIG91dCB0aGUgdGltZS10by1ydW4gaXNzdWVzLgorCiAyMDExLTA4LTI5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJU
cmVlIHNob3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBhbiBlbXB0eSBjb29raWUgc3RvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA2MDJmODdjYzc1YmY3Yzg2Y2M3YWQ1NDg5NmY0
N2ZlMTA0YmY1ZDU3Li4yNDU5MjkxMzVkOWVhM2QwM2JkZTc1NWMzMmVhNjU4NWViNzdiNzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yNDUsNiArMjQ1LDggQEAKICNpbmNsdWRl
ICJKU01ldGFkYXRhQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTTW91c2VFdmVudC5jcHAiCiAj
aW5jbHVkZSAiSlNNdXRhdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVu
ZXIuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuY3BwIgogI2luY2x1ZGUgIkpTTmFt
ZWROb2RlTWFwLmNwcCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5jcHAiCiAjaW5jbHVkZSAiSlNO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBkMDY2NThmOTNkOGNlYWE0ODBkOGZiN2NjZmQyNWRhY2Q1NTI4MjVlLi40ZWU3MjAyNTU4
NmYxN2E1NmI4N2M0NzE2OGFlMDMwOGI1MjdkNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTMxNyw2ICszMTcsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBNZXRhZGF0YUNh
bGxiYWNrIFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRhdGlvbkV2ZW50IFwKKyAgICBNdXRh
dGlvbkxpc3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBcCiAgICAgTmFtZWROb2RlTWFwIFwK
ICAgICBOYXZpZ2F0b3IgXAogICAgIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yIFwKQEAgLTU3NCw3
ICs1NzYsNyBAQCBET01fQ0xBU1NFUyA9IFwKIAogLlBIT05ZIDogYWxsCiAKLUpTX0RPTV9IRUFE
RVJTPSQoZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVu
ZXIuaCBKU0V2ZW50VGFyZ2V0LmgsJChET01fQ0xBU1NFUzolPUpTJS5oKSkKK0pTX0RPTV9IRUFE
RVJTPSQoZmlsdGVyLW91dCBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBKU0V2ZW50TGlzdGVu
ZXIuaCBKU0V2ZW50VGFyZ2V0LmggSlNNdXRhdGlvbkxpc3RlbmVyLmgsJChET01fQ0xBU1NFUzol
PUpTJS5oKSkKIAogV0VCX0RPTV9IRUFERVJTIDo9CiBpZmVxICgkKGZpbmRzdHJpbmcgQlVJTERJ
TkdfV1gsJChGRUFUVVJFX0RFRklORVMpKSwgQlVJTERJTkdfV1gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDE2MjQwZGMzMDQ5MWQyN2ZiZDk1ODNlOTliMTkwZDA2
NzExYmRkNmUuLjc5ZGM1YzhiYzA2MWYxYzc0ZDc2ZTU4NjViZjkyZDBiZjExYmUxYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0yMzEsNiArMjMxLDcgQEAKICAg
ICAgICMgQ3VzdG9tIGJpbmRpbmdzIGluIGJpbmRpbmdzL3Y4L2N1c3RvbSBleGlzdCBmb3IgdGhl
c2UuCiAgICAgICAnLi4vZG9tL0V2ZW50TGlzdGVuZXIuaWRsJywKICAgICAgICcuLi9kb20vRXZl
bnRUYXJnZXQuaWRsJywKKyAgICAgICcuLi9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwnLAogICAg
ICAgJy4uL2h0bWwvVm9pZENhbGxiYWNrLmlkbCcsCiAKICAgICAgICMgQmluZGluZ3Mgd2l0aCBj
dXN0b20gT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZk
NGNiOGQ2MTYxNWRmNTQ3YzE1ODdhMWExMThhMTMzMmMzNzE5ZDQuLjliYTE3YTI4M2ZiZmY0M2M0
MDM4YTA2MDEzNzUwYzBjNmIzMzgwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExODIsNiArMTE4
Miw4IEBACiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAgICAgICAgICAn
ZG9tL01vdXNlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5pZGwn
LAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAgICAgICAgICAn
ZG9tL011dGF0aW9uUmVjb3JkLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVG
aWx0ZXIuaWRsJywKQEAgLTIwODQsNiArMjA4Niw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhJc29sYXRlZENvbnRleHQuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5
RXZlbnRMaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50
TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVy
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0
aWxzLmNwcCcsCkBAIC01MzAwLDYgKzUzMDUsMTQgQEAKICAgICAgICAgICAgICdkb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRh
dGlvbkxpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0
YXRpb25TY29wZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblNjb3BlLmgnLAorICAg
ICAgICAgICAgJ2RvbS9NdXRhdGlvblRhcmdldC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRh
dGlvblRhcmdldC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXREYXRhLmgnLAog
ICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vTmFt
ZU5vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuY3BwJywKQEAgLTUz
NDEsNiArNTM1NCw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAogICAg
ICAgICAgICAgJ2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9t
L1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwYzdhMGZlYmI5
ZWMwYjUzZDAwYzMzNjgzZDJiNDRjNDE3MzkyYjEuLmRjZTU2ZTNiNDdiZDI5NTljOGMzZjg5NjBi
MjQ3NjA0ODAxZWZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MjIsOSArNTQyMiwxOSBAQAogCQlDNUQ0QUE3QTExNkJB
RkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhN
ZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFOUI2
NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9Owog
CQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVF
RERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzY3MURB
M0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzgxM0UzNzE0OTAwNTU4QUU5
IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OworCQlDNjcxREEzRjEzRTM3MTQ5MDA1NThB
RTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNv
cmQuaCAqLzsgfTsKKwkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3
MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovOyB9OworCQlD
Njk2QTA4MzE0MEVFQzIyMDAxREFBNTIgLyogTXV0YXRpb25TY29wZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjk2QTA4MTE0MEVFQzIyMDAxREFB
NTIgLyogTXV0YXRpb25TY29wZS5jcHAgKi87IH07CisJCUM2OTZBMDg0MTQwRUVDMjIwMDFEQUE1
MiAvKiBNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNjk2QTA4MjE0MEVFQzIyMDAxREFBNTIgLyogTXV0YXRpb25TY29wZS5oICov
OyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3
NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07
CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRB
RTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07
CiAJCUM2RjQxMDQ3MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNDEwNDYxMzBDNkU4OTAwMzkz
REU0IC8qIEVudHJ5QmFzZS5jcHAgKi87IH07CisJCUM2RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAv
KiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3Bw
ICovOyB9OworCQlDNkY2NzE1NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDYx
M0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLzsgfTsKKwkJQzZGNjcxNTUx
M0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25UYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTVB
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovOyB9OworCQlDNkY2
NzE1RDEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QjEzRTM1RUIyMDBERTNC
OUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggKi87IH07CiAJCUNBM0JGNjdDMTBEOTlCQUUwMEU2
Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3QjEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0
b3IuY3BwICovOyB9OwogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JG
NjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyB9OwogCQlDRDgyMDMw
QTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2
QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIxNzIsOSArMTIxODIsMjQg
QEAKIAkJQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaE1ldHJpY3NNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8q
IEpTTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblRhcmdldERh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY5NkEwODExNDBFRUMyMjAwMURB
QTUyIC8qIE11dGF0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTXV0YXRpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
OTZBMDgyMTQwRUVDMjIwMDFEQUE1MiAvKiBNdXRhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkw
QTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkY0MTA0NjEzMEM2RTg5MDAzOTNERTQgLyogRW50
cnlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5QmFz
ZS5jcHA7IHBhdGggPSBmaWxlYXBpL0VudHJ5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUM2RjY3MTNFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0YxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uTGlzdGVuZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uTGlzdGVu
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MDEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNkY2NzE0MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25SZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDIxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3Jk
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvblJlY29yZC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlv
blRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQ3MTNFMzVF
NUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNdXRhdGlvblRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
NkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNUExM0UzNUVCMjAwREUz
QjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0ZW5lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3QjEwRDk5QkFFMDBFNkNFNTMgLyog
U2Nyb2xsQW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2Nyb2xsQW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3
RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzMjA2LDYgKzEzMjMxLDcgQEAKIAkJCQk4OTg3ODU3NjEyMkNBMURBMDAzQUFC
REEgLyogRmlsZUFQSSAqLywKIAkJCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAq
LywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICovLAorCQkJCUM2
NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQkzMzUwM0M5QzEwMTc5
QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUMyMjYwMjBEQjY5RUE3MDA4
OUI2NjkgLyogT2ZmbGluZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5NTkgLyogUGx1
Z2lucyAqLywKQEAgLTE1NDUxLDYgKzE1NDc3LDcgQEAKIAkJCQk4NUFGQTdBQjBBQUYzQkIwMDBF
ODQzMDUgLyogRXZlbnRzICovLAogCQkJCTg1QzU2RDAzMEFBOEJBQTcwMEQ5NTc1NSAvKiBIVE1M
ICovLAogCQkJCTg1RTcxMTNEMEFDNUQ0QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAqLywKKwkJCQlD
NjcxREE1RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJODUzOEYwNTcwQUQ3
MjJCOTAwNkE4MUQxIC8qIFJhbmdlcyAqLywKIAkJCQk4NTA2NTcwNDBBQUI0NzZDMDAyRDE1QzAg
LyogU3R5bGVTaGVldHMgKi8sCiAJCQkJODVBMEY5OEUwQUM3MTZGNDAwMTYxRkRDIC8qIFNWRyAq
LywKQEAgLTE4NTY1LDYgKzE4NTkyLDggQEAKIAkJCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYg
LyogSlNFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5RjFFRTAwNTA4
RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovLAorCQkJCUM2RjY3MTVBMTNFMzVFQjIw
MERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovLAorCQkJCUM2RjY3MTVCMTNFMzVF
QjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQk5M0I3MEQ0RjA5RUIw
QzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywKIAkJCQk5M0I3
MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggKi8sCiAJ
CQkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCAq
LywKQEAgLTE5MjI0LDYgKzE5MjUzLDIyIEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFi
cyA9IDA7CiAJCX07CisJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzY3MURBMzgxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2NzFEQTM5MTNF
MzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8sCisJCQkpOworCQkJbmFtZSA9
IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzY3MURBNUQx
M0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gTXV0YXRpb247CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTk4MSw2ICsy
MDAyNiwxNiBAQAogCQkJCTg1MDMxQjMzMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50
LmNwcCAqLywKIAkJCQk4NTAzMUIzNDBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5o
ICovLAogCQkJCTkzRUVDMUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAq
LywKKwkJCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICov
LAorCQkJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmlkbCAq
LywKKwkJCQlDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICov
LAorCQkJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5oICovLAor
CQkJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwgKi8sCisJ
CQkJQzY5NkEwODExNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuY3BwICovLAorCQkJ
CUM2OTZBMDgyMTQwRUVDMjIwMDFEQUE1MiAvKiBNdXRhdGlvblNjb3BlLmggKi8sCisJCQkJQzZG
NjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCAqLywKKwkJCQlDNkY2
NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLywKKwkJCQlDNjcyQTJE
MjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggKi8sCiAJCQkJQkNGMzRB
MzYxMUEyMzFDRDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgKi8sCiAJCQkJQTgxODcyMTgw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oICovLAogCQkJCTg1QUNBOUY5MEE5QjYz
MTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovLApAQCAtMjAwNDUsNiArMjAxMDAsNyBA
QAogCQkJCUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCAqLywKIAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuY3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTRCMTNFMzVFNUUwMERFM0I5QyAvKiBSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgz
NyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi8sCiAJCQkJNDk5OEFFQzQxM0Y5RDBFQTAw
OTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi8sCiAJCQkJNDk5OEFF
QzUxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCAq
LywKQEAgLTIyMTA0LDYgKzIyMTYwLDggQEAKIAkJCQk4OTg3ODVCOTEyMkNBMkE3MDAzQUFCREEg
LyogSlNNZXRhZGF0YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEy
QjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFG
QzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDNkY2NzE1RDEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDNjcxREEzRjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29y
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEOUMyQzEwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFt
ZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkg
LyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxRTU0NUUwMTM0NjJCMEIwMDky
QTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIy
NDc1LDYgKzIyNTMzLDggQEAKIAkJCQk5MzMwOURGQzA5OUU2NDkyMDA1NkU1ODEgLyogTW92ZVNl
bGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxQUQ0RTYzMTNBMTJBMEIwMDg0
NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QTBB
NDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZG
NjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDNjcyQTJEMzEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyog
TmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDUwLDYgKzIzNTEw
LDcgQEAKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjEwQjY5ODAxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2Vu
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4MjE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRU
VG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNjk2QTA4NDE0MEVFQzIyMDAxREFBNTIg
LyogTXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjI1MCw2ICsyNjMxMSwxMCBA
QAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1OURFNzkwNDEzRjE2QzdGMDAwN0ZDREYgLyogSmF2YU1ldGhvZEpT
Qy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1RTAwREUz
QjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTVDMTNF
MzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzY3MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2RjI1MkMxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDIzQTEyNTEzRjVGQTU5MDBG
NjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk5OEFFQ0QxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjI2MCw2ICsyNjMyNSw3IEBACiAJCQkJ
QkNFNDM4OUExNDBCMDA3MzAwNUU0MzdFIC8qIEpTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjEwQjY5ODExNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZU
VFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNjk2QTA4MzE0MEVFQzIyMDAxREFB
NTIgLyogTXV0YXRpb25TY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMmE2
NTA3MzgyYmVjNDc0ZDQ2MmM4M2MxMjU1MjM4ZTEzODdkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwCkBAIC0wLDAg
KzEsMTM4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNdXRh
dGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUg
IkpTTm9kZS5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5l
cihKU09iamVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQq
IGlzb2xhdGVkV29ybGQpCisgICAgOiBtX3dyYXBwZXIoKmlzb2xhdGVkV29ybGQtPmdsb2JhbERh
dGEoKSwgd3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQorewor
ICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0TWF5QmVOdWxsKCptX2lz
b2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UK
KyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7CisKK30KKworSlNNdXRhdGlvbkxpc3RlbmVyOjp+
SlNNdXRhdGlvbkxpc3RlbmVyKCkKK3sKK30KKwordm9pZCBKU011dGF0aW9uTGlzdGVuZXI6Omhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFBhc3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IHBvcE11dGF0aW9ucykKK3sKKyAgICBP
d25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IG11dGF0aW9ucyA9IHBvcE11dGF0aW9uczsKKyAg
ICBBU1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11dGF0aW9ucy0+aXNFbXB0eSgpKTsK
KworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNKU0V4ZWN1dGlvbkZv
cmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gbV9qc0Z1bmN0
aW9uLmdldCgpOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdl
dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNE
T01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0
KTsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgLy8gVGhlIHdpbmRvdyBtdXN0IHN0aWxsIGJl
IGFjdGl2ZSBpbiBpdHMgZnJhbWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTIxPi4KKyAgICAvLyBGSVhNRTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1h
eSBiZSB0byBjaGFuZ2UgRE9NV2luZG93OjpmcmFtZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0
aGUgZGV0YWNoZWQgd2luZG93IHVzZWQgdG8gYmUgaW4uCisgICAgaWYgKGZyYW1lLT5kb21XaW5k
b3coKSAhPSB3aW5kb3ctPmltcGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJ
cyB0aGlzIGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/CisgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0LT5jYW5FeGVj
dXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9u
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRs
ZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBKU1ZhbHVlKCk7CisgICAgICAg
IGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIH0KKwor
ICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgUmVmUHRyPE11dGF0
aW9uTGlzdGVuZXI+IHByb3RlY3QodGhpcyk7CisKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbXV0YXRpb25MaXN0OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9u
cy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtdXRhdGlvbkxpc3QuYXBwZW5kKHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CisKKyAgICAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBlbmQoY29uc3RydWN0QXJy
YXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbkxpc3QpKTsKKworICAgICAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKKyAgICAgICAg
RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGdsb2JhbERhdGEsIGds
b2JhbERhdGEuZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEuZHluYW1pY0dsb2JhbE9i
amVjdCA6IGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tl
ci5zdGFydCgpOworICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbikKKyAgICAgICAgICAg
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGpzRnVuY3Rpb24sIGFyZ3MpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FKGFkYW1rKTogRmlndXJlIG91dCB3aGF0IHRoZSB0YXJnZXQgc2hv
dWxkIGJlOyBwcm9iYWJseSB0aGUKKyAgICAgICAgICAgIC8vIERvY3VtZW50IG9yIERPTVdpbmRv
dz8KKyAgICAgICAgICAgIEpTVmFsdWUgY3VycmVudFRhcmdldCA9IHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBtdXRhdGlvbnMtPmF0KDApLT50YXJnZXQoKSk7CisgICAgICAgICAgICBKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBjdXJyZW50VGFyZ2V0LCBhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxEYXRhLnRp
bWVvdXRDaGVja2VyLnN0b3AoKTsKKworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgIH0KK30KKwor
Ym9vbCBKU011dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5l
ciYgbGlzdGVuZXIpCit7CisgICAgY29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKiBqc011dGF0aW9u
TGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU011dGF0aW9uTGlzdGVuZXIqPigmbGlzdGVu
ZXIpOworICAgIHJldHVybiBtX2pzRnVuY3Rpb24gPT0ganNNdXRhdGlvbkxpc3RlbmVyLT5tX2pz
RnVuY3Rpb247Cit9CisKK3Vuc2lnbmVkIEpTTXV0YXRpb25MaXN0ZW5lcjo6aGFzaCgpCit7Cisg
ICAgcmV0dXJuIERlZmF1bHRIYXNoPEpTQzo6SlNPYmplY3QqPjo6SGFzaDo6aGFzaChtX2pzRnVu
Y3Rpb24uZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZmEx
NmM5ZjM3NzVmYzMyYTk5YTZlZTdjOTJkNzU4YjdiMmRlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IEpTTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIEpTTXV0YXRpb25MaXN0ZW5lcl9oCisKKyNp
bmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvV3JpdGVCYXJyaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xh
c3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2NsYXNzIEpTTXV0YXRpb25MaXN0ZW5lciA6IHB1Ymxp
YyBNdXRhdGlvbkxpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU011
dGF0aW9uTGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgSlNDOjpKU09i
amVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU011dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdy
YXBwZXIsIGlzb2xhdGVkV29ybGQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5KU011dGF0aW9u
TGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9u
TGlzdGVuZXImIG90aGVyKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhhc2goKTsKKworICAgIERP
TVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNvbGF0ZWRX
b3JsZC5nZXQoKTsgfQorCisgICAgSlNDOjpKU09iamVjdCogd3JhcHBlcigpIGNvbnN0IHsgcmV0
dXJuIG1fd3JhcHBlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0V3JhcHBlcihKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU09iamVjdCogd3JhcHBlcikgY29uc3QgeyBtX3dyYXBw
ZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIDApOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8
TXV0YXRpb25SZWNvcmRWZWN0b3I+KTsKKworcHJpdmF0ZToKKyAgICBKU011dGF0aW9uTGlzdGVu
ZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisKKyAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJy
aWVyPEpTQzo6SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICBtdXRhYmxlIEpTQzo6V2VhazxK
U0M6OkpTT2JqZWN0PiBtX3dyYXBwZXI7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBt
X2lzb2xhdGVkV29ybGQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBKU011dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkZWFhNWY4ODAwNTlmOTM0MmYyZDk1OGJk
OTg4MjhhMWY2ZWUwYmQ1Li5jMzI5OGViYjM5ODA3NjE5NjAzYzM4NzRlYTQwY2MyYmZmNmFjNGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTkxLDYgKzE5MSw1MCBAQCBFTkQKICAgICByZXR1cm4gQEdlbmVyYXRlRXZl
bnRMaXN0ZW5lckltcGw7CiB9CiAKK3N1YiBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsCit7
CisgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IHNoaWZ0OworICAgIG15ICRwYXNzUmVmUHRySGFuZGxp
bmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIuZ2V0KCkiOworICAgIG15ICR0
eXBlTWFza0hhbmRsaW5nID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiwgdHlwZU1hc2si
IDogIiI7CisgICAgbXkgJHByZWZpeGVkRnVuY3Rpb25OYW1lID0gIndlYmtpdCIgLiB1Y2ZpcnN0
KCRmdW5jdGlvbk5hbWUpOworCisgICAgJGltcGxJbmNsdWRlc3siTXV0YXRpb25SZWNvcmQuaCJ9
ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJKU011dGF0aW9uTGlzdGVuZXIuaCJ9ID0gMTsKKwor
ICAgIG15IEBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJJbXBsID0gKCk7CisKKyAgICBpZiAoJGZ1
bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAgICBwdXNoKEBHZW5lcmF0ZU11dGF0aW9uTGlz
dGVuZXJJbXBsLCA8PEVORCk7CisgICAgSlNWYWx1ZSBqc1R5cGVzID0gZXhlYy0+YXJndW1lbnQo
MSk7CisgICAgaWYgKCFqc1R5cGVzLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU09iamVjdCoganNUeXBlc09iamVjdCA9
IGFzT2JqZWN0KGpzVHlwZXMpOworICAgIHVpbnQ4X3QgdHlwZU1hc2sgPSAwOworICAgIEpTVmFs
dWUganNDaGlsZGxpc3QgPSBqc1R5cGVzT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCAiY2hpbGRsaXN0IikpOworICAgIGlmIChqc0NoaWxkbGlzdC5pc0Jvb2xlYW4oKSAmJiBqc0No
aWxkbGlzdC5nZXRCb29sZWFuKCkpCisgICAgICAgIHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3Jk
OjpDaGlsZGxpc3RGbGFnOworICAgIEpTVmFsdWUganNBdHRyaWJ1dGUgPSBqc1R5cGVzT2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYXR0cmlidXRlIikpOworICAgIGlmIChqc0F0
dHJpYnV0ZS5pc0Jvb2xlYW4oKSAmJiBqc0F0dHJpYnV0ZS5nZXRCb29sZWFuKCkpCisgICAgICAg
IHR5cGVNYXNrIHw9IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOworICAgIEpTVmFsdWUg
anNDaGFyYWN0ZXJkYXRhID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImNoYXJhY3RlcmRhdGEiKSk7CisgICAgaWYgKGpzQ2hhcmFjdGVyZGF0YS5pc0Jvb2xlYW4o
KSAmJiBqc0NoYXJhY3RlcmRhdGEuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBlTWFzayB8PSBN
dXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZsYWc7CitFTkQKKyAgICB9CisKKyAgICBwdXNo
KEBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJJbXBsLCA8PEVORCk7CisgICAgSlNWYWx1ZSBsaXN0
ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlt
cC0+JHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyKEpTTXV0YXRpb25MaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgY3VycmVudFdvcmxk
KGV4ZWMpKSR7cGFzc1JlZlB0ckhhbmRsaW5nfSR7dHlwZU1hc2tIYW5kbGluZ30pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CitFTkQKKyAgICByZXR1cm4gQEdl
bmVyYXRlTXV0YXRpb25MaXN0ZW5lckltcGw7Cit9CisKKwogIyBQYXJhbXM6ICdpZGxEb2N1bWVu
dCcgc3RydWN0CiBzdWIgR2VuZXJhdGVNb2R1bGUKIHsKQEAgLTIwMjYsNiArMjA3MCwxMCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NOYW1lLCAiYWRkIikpOwog
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJy
ZW1vdmVFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NOYW1lLCAicmVtb3ZlIikpOwor
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJ3
ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbCgiYWRkIikpOworICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJ3ZWJraXRS
ZW1vdmVNdXRhdGlvbkxpc3RlbmVyIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbCgicmVtb3ZlIikpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRhcmdzSW5kZXggPSAw
OwogICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1JbmRleCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGYzYzY0
NDE4Zjc5MWZjNzBkN2Y3MWQ2OWI4ZTg4ZjIzZjM2ZDZhMjAuLmE0NzY0ZDk4NzZkMjc1N2YyZjQ2
ZTU1NjQwOTJhYjIwMjVhZDdkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00ODQsNiArNDg0LDEyIEBAIHN1YiBHZXRJ
bnRlcm5hbEZpZWxkcwogICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgImV2ZW50
TGlzdGVuZXJDYWNoZUluZGV4Iik7CiAgICAgfQogCisgICAgaWYgKElzU3ViVHlwZSgkZGF0YU5v
ZGUsICJFbGVtZW50IikgfHwKKyAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkRvY3VtZW50
IikgfHwKKyAgICAgICAgJG5hbWUgZXEgIkRvY3VtZW50RnJhZ21lbnQiKSB7CisgICAgICAgIHB1
c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAibXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgiKTsK
KyAgICB9CisKICAgICBpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChA
Y3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAgICAg
fQpAQCAtMTE0MCw2ICsxMTQ2LDUzIEBAIEVORAogRU5ECiB9CiAKK3N1YiBHZW5lcmF0ZU11dGF0
aW9uTGlzdGVuZXJDYWxsYmFjaworeworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7Cisg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9IHNoaWZ0OworICAgIG15ICRsb29rdXBUeXBlID0gKCRmdW5j
dGlvbk5hbWUgZXEgImFkZCIpID8gIk9yQ3JlYXRlIiA6ICJPbmx5IjsKKyAgICBteSAkcGFzc1Jl
ZlB0ckhhbmRsaW5nID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsK
KyAgICBteSAkaGlkZGVuRGVwZW5kZW5jeUFjdGlvbiA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQi
KSA/ICJjcmVhdGUiIDogInJlbW92ZSI7CisgICAgbXkgJHR5cGVNYXNrQXJnID0gKCRmdW5jdGlv
bk5hbWUgZXEgImFkZCIpID8gIiwgdHlwZU1hc2siIDogIiI7CisgICAgbXkgJHByZWZpeGVkRnVu
Y3Rpb25OYW1lID0gIndlYmtpdCIgLiB1Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworCisgICAgJGlt
cGxJbmNsdWRlc3siTXV0YXRpb25SZWNvcmQuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJW
OE11dGF0aW9uTGlzdGVuZXIuaCJ9ID0gMTsKKworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
IDw8RU5EKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiAke3ByZWZpeGVkRnVuY3Rpb25OYW1lfU11
dGF0aW9uTGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAg
IElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1F
dmVudExpc3RlbmVyKCkiKTsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXIg
PSBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIoYXJnc1swXSwgTGlzdGVuZXJGaW5k
JHtsb29rdXBUeXBlfSk7CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKK0VORAorICAgIGlmICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAgICB1aW50OF90IHR5cGVNYXNr
ID0gMDsKKyAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFyZ3NbMV0tPklz
T2JqZWN0KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pOworICAgICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2OENoaWxkbGlzdCA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY2hpbGRs
aXN0IikpOworICAgICAgICBpZiAoIXY4Q2hpbGRsaXN0LklzRW1wdHkoKSAmJiB2OENoaWxkbGlz
dC0+Qm9vbGVhblZhbHVlKCkpCisgICAgICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29y
ZDo6Q2hpbGRsaXN0RmxhZzsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhBdHRyaWJ1
dGUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImF0dHJpYnV0ZSIpKTsKKyAgICAgICAg
aWYgKCF2OEF0dHJpYnV0ZS5Jc0VtcHR5KCkgJiYgdjhBdHRyaWJ1dGUtPkJvb2xlYW5WYWx1ZSgp
KQorICAgICAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc7
CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4Q2hhcmFjdGVyZGF0YSA9IG9iamVjdC0+
R2V0KHY4OjpTdHJpbmc6Ok5ldygiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICAgICAgaWYgKCF2OENo
YXJhY3RlcmRhdGEuSXNFbXB0eSgpICYmIHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkp
CisgICAgICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hhcmFjdGVyZGF0YUZs
YWc7CisgICAgfQorRU5ECisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5E
KTsKKyAgICBWOCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpLT4ke3By
ZWZpeGVkRnVuY3Rpb25OYW1lfU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIke3Bhc3NSZWZQdHJI
YW5kbGluZ30ke3R5cGVNYXNrQXJnfSk7CisgICAgJHtoaWRkZW5EZXBlbmRlbmN5QWN0aW9ufUhp
ZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1swXSwgVjgke2ltcGxDbGFzc05hbWV9
OjptdXRhdGlvbkxpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKK30KKworRU5ECit9CisKIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24K
IHsKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IHNoaWZ0OwpAQCAtMTI0NSw2ICsxMjk4LDE0IEBA
IHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICgkbmFtZSBlcSAid2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAg
R2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soJGltcGxDbGFzc05hbWUsICJhZGQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzaWYgKCRuYW1lIGVxICJ3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyIikgeworICAgICAgICBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFj
aygkaW1wbENsYXNzTmFtZSwgInJlbW92ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKQEAg
LTMxNjAsNyArMzIyMSw4IEBAIG15ICVub25fd3JhcHBlcl90eXBlcyA9ICgKICAgICAnSURCS2V5
JyA9PiAxLAogICAgICdPcHRpb25zT2JqZWN0JyA9PiAxLAogICAgICdEYXRlJyA9PiAxLAotICAg
ICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJyA9PiAxCisgICAgJ01lZGlhUXVlcnlMaXN0TGlzdGVu
ZXInID0+IDEsCisgICAgJ011dGF0aW9uTGlzdGVuZXInID0+IDEKICk7CiAKIApAQCAtMzI2MSw2
ICszMzIzLDExIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgcmV0dXJuICIke3ZhbHVl
fSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0
ZW5lcio+KCR7dmFsdWV9KS0+Z2V0TGlzdGVuZXJPYmplY3QoaW1wLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSI7CiAgICAgfQog
CisgICAgaWYgKCR0eXBlIGVxICJNdXRhdGlvbkxpc3RlbmVyIikgeworICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJWOE11dGF0aW9uTGlzdGVuZXIuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuICIke3Zh
bHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVu
ZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KCkpIDogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KHY4OjpOdWxsKCkpIjsKKyAgICB9CisKICAgICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKICAg
ICAgICAgcmV0dXJuICIkdmFsdWUtPmRlc2VyaWFsaXplKCkiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDg2YTNhMjE5NjFkYzI4MDlhMjA3Y2Zi
YWU3ZjUyZDA3ZTNkZjgxYy4uODYwZjAxM2M3MDU1NzY4Y2NiMWUxNzJkZGVkYzRjYWJlNmVkZmZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02
MCw2ICs2MCw4IEBACiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlY4TWVkaWFT
dHJlYW0uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VDaGFubmVsLmgiCisjaW5jbHVkZSAiVjhNdXRh
dGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIgog
I2luY2x1ZGUgIlY4TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVk
ZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCkBAIC00ODEsNiArNDgzLDE5IEBAIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhCiAjZW5kaWYKIH0KIAorUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApCit7CisgICAgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgaWYgKGNv
bnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobG9va3VwID09IExp
c3RlbmVyRmluZE9ubHkpCisgICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
OjpmaW5kV3JhcHBlcih2YWx1ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxQ
cm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRleHQtPkdsb2JhbCgp
LT5HZXRQcm90b3R5cGUoKSk7CisgICAgaWYgKGdsb2JhbE9iamVjdFByb3RvdHlwZUlzRE9NV2lu
ZG93KGdsb2JhbFByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlzdGVuZXJN
YW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKwog
I2lmIEVOQUJMRShYUEFUSCkKIC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVzCiBSZWZQdHI8WFBh
dGhOU1Jlc29sdmVyPiBWOERPTVdyYXBwZXI6OmdldFhQYXRoTlNSZXNvbHZlcih2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIFY4UHJveHkqIHByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBlYjIyMDUxNzJiM2M5NGIwOGFlNjdmNTU0YjIwYWVl
Mjg4MTQ5ZjkwLi45ZmYwNzVkYmI5NDkwMTgwZTFmMTQ2YzVjMTc1MWRhOTdhODRmNTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTAsNiArNTAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRE9NV2luZG93OwogICAgIGNsYXNzIEV2
ZW50VGFyZ2V0OwogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIE11dGF0aW9uTGlzdGVuZXI7
CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBWOFByb3h5OwogICAgIGNsYXNzIFdvcmtlckNv
bnRleHQ7CkBAIC04OSw2ICs5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2
ZW50VGFyZ2V0Kik7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJp
YnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE11dGF0aW9uTGlzdGVuZXI+IGdldE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpW
YWx1ZT4sIExpc3RlbmVyTG9va3VwVHlwZSk7CiAKICNpZiBFTkFCTEUoWFBBVEgpCiAgICAgICAg
IC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAppbmRleCBkZWJhNGE1MWQ3NzgwNzkwOTMzMjY3
YjkyZDFmNjQwMmEyNzRmMDNmLi5kM2FiYjAxZmRjOGJlZWIzN2YwMTlhZWJmY2JkODc0Yjg5ZThk
OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3Bl
cnR5TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYob2Jq
ZWN0UHJvdG90eXBlKSBcCiAgICAgVihsaXN0ZW5lcikgXAogICAgIFYoYXR0cmlidXRlTGlzdGVu
ZXIpIFwKKyAgICBWKG11dGF0aW9uTGlzdGVuZXIpIFwKICAgICBWKHNjcmlwdFN0YXRlKSBcCiAg
ICAgVihkZXZ0b29sc0luamVjdGVkU2NyaXB0KSBcCiAgICAgVihzbGVlcEZ1bmN0aW9uKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMmQwMmYyMGEwODQ4MmQwNTk0OGM2ZDY5YTBhY2Q0ZWM0MGUyOWExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3Rl
bmVyLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJWOEN1c3RvbVZvaWRDYWxsYmFjay5oIgor
I2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVy
TWFuYWdlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJWOFBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitWOE11dGF0aW9uTGlzdGVuZXI6OlY4TXV0YXRpb25MaXN0ZW5lcih2ODo6TG9jYWw8
djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250
ZXh0KQorICAgIDogbV9saXN0ZW5lcih2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGxp
c3RlbmVyKSkKKyAgICAsIG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkKK3sKKyAgICBtX2xp
c3RlbmVyLk1ha2VXZWFrKHRoaXMsICZ3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKTsKK30K
KworVjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICBpZiAo
IW1fbGlzdGVuZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmpl
Y3QoKTsKKyAgICAgICAgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6Y2xlYXJXcmFwcGVyKGxp
c3RlbmVyKTsKKyAgICB9CisgICAgZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQg
VjhNdXRhdGlvbkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRlcikKK3sKKyAgICBWOE11dGF0aW9uTGlz
dGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVyKj4ocGFyYW1l
dGVyKTsKKyAgICBsaXN0ZW5lci0+ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KCk7Cit9CisKK3ZvaWQg
VjhNdXRhdGlvbkxpc3RlbmVyOjpkaXNwb3NlTGlzdGVuZXJPYmplY3QoKQoreworICAgIGlmICgh
bV9saXN0ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgbV9saXN0ZW5lci5EaXNwb3NlKCk7Cisg
ICAgICAgIG1fbGlzdGVuZXIuQ2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgVjhNdXRhdGlvbkxp
c3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
T3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRy
PE11dGF0aW9uUmVjb3JkVmVjdG9yPiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisKKyAgICAv
LyBEb24ndCByZWVudGVyIFY4IGlmIGV4ZWN1dGlvbiB3YXMgdGVybWluYXRlZCBpbiB0aGlzIGlu
c3RhbmNlIG9mIFY4LgorICAgIGlmIChjb250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtdXRhdGlvbnMpOworICAgIEFTU0VSVCgh
bXV0YXRpb25zLT5pc0VtcHR5KCkpOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OworCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChj
b250ZXh0LCBtX3dvcmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQp
OworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGpzTXV0YXRpb25zID0gdjg6OkFycmF5OjpOZXco
bXV0YXRpb25zLT5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25z
LT5zaXplKCk7ICsraSkKKyAgICAgICAganNNdXRhdGlvbnMtPlNldCh2ODo6SW50ZWdlcjo6TmV3
KGkpLCB0b1Y4KG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkpKTsKKworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIGpzTXV0YXRpb25zCisgICAgfTsKKworICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0KCk7CisgICAg
Ym9vbCBpZ25vcmVkUmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICBpbnZva2VDYWxsYmFjayhsaXN0
ZW5lciwgMSwgYXJndiwgaWdub3JlZFJldHVyblZhbHVlLCBjb250ZXh0KTsKK30KKwordW5zaWdu
ZWQgVjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKCkKK3sKKyAgICByZXR1cm4gRGVmYXVsdEhhc2g8
VjhNdXRhdGlvbkxpc3RlbmVyKj46Okhhc2g6Omhhc2godGhpcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0
YXRpb25MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxp
c3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM5MmU4NDJlYTU2M2QxNmU5MzkzZThiMjE5NWZhYzNjN2U4
YTYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0
YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRpb25MaXN0ZW5l
cl9oCisjZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxp
c3RlbmVyLmgiCisjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCisKKyNpbmNsdWRlIDx2
OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOE11dGF0aW9uTGlzdGVuZXIg
OiBwdWJsaWMgTXV0YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TXV0YXRpb25MaXN0ZW5lcj4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5l
ciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFY4TXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgd29ybGRD
b250ZXh0KSk7CisgICAgfQorICAgIHZpcnR1YWwgflY4TXV0YXRpb25MaXN0ZW5lcigpOworCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
T3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgTXV0YXRpb25MaXN0ZW5lciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVy
OyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gZ2V0TGlzdGVuZXJPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0Pjo6TmV3KG1fbGlzdGVuZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBW
OE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBX
b3JsZENvbnRleHRIYW5kbGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5l
ckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRp
c3Bvc2VMaXN0ZW5lck9iamVjdCgpOworCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
bV9saXN0ZW5lcjsKKyAgICBXb3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMWJiNTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMy
MjcxNDk4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRh
dGlvbkxpc3RlbmVyTWFuYWdlcl9oCisjZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJf
aAorCisjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0
aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZv
ciBWOE11dGF0aW9uTGlzdGVuZXIgb2JqZWN0cyB0aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMg
b2Ygdjg6Ok9iamVjdCB0byBzcGVlZCB1cCBsb29rdXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3Rl
bmVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0
ZW5lcj4gZmluZFdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAg
ICAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1
ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBk
b0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdy
YXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4pOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFw
cGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gbGlzdGVuZXJPYmplY3QpCisgICAgeworICAgICAg
ICBsaXN0ZW5lck9iamVjdC0+RGVsZXRlSGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6
Om11dGF0aW9uTGlzdGVuZXIoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBNdXRh
dGlvbkxpc3RlbmVyKiBkb0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3Qp
CisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAg
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBs
aXN0ZW5lciA9IG9iamVjdC0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11
dGF0aW9uTGlzdGVuZXIoKSk7CisgICAgICAgIGlmIChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlz
dGVuZXIqPih2ODo6RXh0ZXJuYWw6OlVud3JhcChsaXN0ZW5lcikpOworICAgIH0KK307CisKK2lu
bGluZSBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFn
ZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7Cisg
ICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0
aW9uTGlzdGVuZXIqIHdyYXBwZXIgPSBkb0ZpbmRXcmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdy
YXBwZXIpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgUmVmUHRyPE11dGF0aW9uTGlz
dGVuZXI+IHdyYXBwZXJQdHIgPSBWOE11dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdv
cmxkQ29udGV4dEhhbmRsZShVc2VDdXJyZW50V29ybGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikK
KyAgICAgICAgb2JqZWN0LT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0
YXRpb25MaXN0ZW5lcigpLCB2ODo6RXh0ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOwor
CisgICAgcmV0dXJuIHdyYXBwZXJQdHIucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMx
YTNmYjg3NDIyMDAxMDdiMGUyNDRiOGU1Li44NmU0YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMy
OGIzNTIyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3Bw
CkBAIC02Niw2ICs2Niw3IEBAIFY4TG9jYWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8g
QSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2
b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NF
UlQob2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IGNhY2hlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5k
ZXgpOwogICAgIGlmIChjYWNoZS0+SXNOdWxsKCkgfHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgY2FjaGUgPSB2ODo6QXJyYXk6Ok5ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5k
ZXggMTFmMzA5YjY5OTRhMTA4OTAwMmExMTJiNWZmMDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRl
YmM3MmRkZTE1ZGE2MWVhMzRkNDgxMDJjMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02
MywxNCArNjMsMTQgQEAgdm9pZCBWOEN1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQog
ICAgIGludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUs
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxs
YmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0
Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKICAgICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1
ZSk7CiAKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAg
IGlmIChjYWxsYmFjay0+SXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
bj46OkNhc3QoY2FsbGJhY2spKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpOZXcodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxi
YWNrKSk7CiAgICAgfSBlbHNlIGlmIChjYWxsYmFjay0+SXNPYmplY3QoKSkgewogICAgICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5kbGVFdmVudEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woImhhbmRsZUV2ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxl
RXZlbnRGdW5jdGlvbi0+SXNGdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgy
MWM2NTM1NzU3YzM0ZDVhMmNjM2MxMDE1NWM4NTk1NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkx
NmQ1MGZjNGQ5ZWQyYTAyYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogfTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGws
IHdyb25nIHR5cGUsIG9yIHRocmV3IGV4Y2VwdGlvbikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Citib29sIGludm9rZUNhbGxiYWNr
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCmluZGV4IDc0MDFjMjgwNWYyOTgwZjQ4MTMwYmEwMDc0NWU2NzIxMmFi
Mjg4ZmUuLmJiNDYwNGIyMzY2NzkyMmExMmMzYWJhZDc1YTRmOWZkZWY3YmJmZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUg
IkNoYXJhY3RlckRhdGEuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0
YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAi
VGV4dEJyZWFrSXRlcmF0b3IuaCIKQEAgLTE5OCw2ICsyMDAsMTAgQEAgdm9pZCBDaGFyYWN0ZXJE
YXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0
YU1vZGlmaWVkKGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisgICAgUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVUZXh0RGF0YUNoYW5nZWQo
dGhpcyk7CisgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRWxlbWVudE5v
ZGUoKSkKKyAgICAgICAgdG9FbGVtZW50KHBhcmVudE5vZGUoKSktPmVucXVldWVNdXRhdGlvbiht
dXRhdGlvbik7CisgICAgb3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24p
OwogfQogCiB2b2lkIENoYXJhY3RlckRhdGE6OmNoZWNrQ2hhckRhdGFPcGVyYXRpb24odW5zaWdu
ZWQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAppbmRleCAzZWE0OTkzNjkzNTc0OWIxMzE5MmI3NjM0MWQ1MDliMTUzOGU0YzBjLi40Yzdh
MGZiNDIxYjg4MzkxMjVhNTIzNGI4MWEyNDQ5YTJiNmQ0MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkRlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0zNSwxMSArMzcsMTMgQEAK
ICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
ICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTE0MSw2ICsxNDUsOCBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNz
UmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgIGlmIChyZWZD
aGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwgcmVmQ2hpbGQgPT0gbmV3Q2hp
bGQpIC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBDaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbih0aGlzKTsKKwogICAgIFJlZlB0cjxOb2Rl
PiBuZXh0ID0gcmVmQ2hpbGQ7CiAgICAgUmVmUHRyPE5vZGU+IHJlZkNoaWxkUHJldmlvdXNTaWJs
aW5nID0gcmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpOwogICAgIGZvciAoTm9kZVZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0YXJnZXRzLmJlZ2luKCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7
ICsraXQpIHsKQEAgLTI3Miw2ICsyNzgsOCBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VD
aGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9u
U2NvcGUgbXV0YXRpb24odGhpcyk7CisKICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IG9sZENoaWxk
LT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG9sZENoaWxkLT5u
ZXh0U2libGluZygpOwogCkBAIC00MDAsNiArNDA4LDggQEAgc3RhdGljIHZvaWQgd2lsbFJlbW92
ZUNoaWxkcmVuKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKICAgICBOb2RlVmVjdG9yIGNoaWxk
cmVuOwogICAgIGNvbGxlY3ROb2Rlcyhjb250YWluZXIsIGNoaWxkcmVuKTsKIAorICAgIENoaWxk
bGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lcik7CisKICAgICBmb3Ig
KE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0g
Y2hpbGRyZW4uZW5kKCk7IGl0KyspIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBpdC0+Z2V0KCk7
CiAgICAgICAgIC8vIGZpcmUgcmVtb3ZlZCBmcm9tIGRvY3VtZW50IG11dGF0aW9uIGV2ZW50cy4K
QEAgLTYxMSw2ICs2MjEsOCBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAgIGlmICh0YXJn
ZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBDaGlsZGxpc3RDaGFu
Z2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbih0aGlzKTsKKwogICAgIC8vIE5vdyBhY3R1YWxseSBh
ZGQgdGhlIGNoaWxkKHJlbikKICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IGxhc3RDaGlsZCgpOwog
ICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YXJnZXRzLmJlZ2luKCk7
IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKQEAgLTEwOTUsNiArMTEwNywxMSBAQCBzdGF0
aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJl
ZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNo
aWxkLT5kb2N1bWVudCgpOwogCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBD
aGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbihjLT5wYXJlbnROb2RlKCkpOwor
ICAgICAgICBtdXRhdGlvbi5jaGlsZEFkZGVkKGMuZ2V0KCkpOworICAgIH0KKwogICAgIGlmIChj
LT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9N
Tk9ERUlOU0VSVEVEX0xJU1RFTkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChN
dXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50LCB0
cnVlLCBjLT5wYXJlbnROb2RlKCkpKTsKIApAQCAtMTExNiw2ICsxMTMzLDExIEBAIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxO
b2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5k
b2N1bWVudCgpOwogCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBDaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbihjLT5wYXJlbnROb2RlKCkpOworICAgICAg
ICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoYyk7CisgICAgfQorCiAgICAgLy8gZGlzcGF0Y2gg
cHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCiAgICAgaWYgKGMtPnBhcmVudE5vZGUoKSAmJiBk
b2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFRF9MSVNURU5F
UikpCiAgICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0cnVlLCBjLT5wYXJlbnROb2RlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUzMjk4NTJkMGUwYmQwMTRiYWNhMTE5MTM4
OTBiNzlmZjBkZmViNWQuLmJjOWI1MmNhMThmYmZmZDIzY2UwYzM3MjM0MzliM2E1ZjI5NTJhOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
ICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRh
LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5j
cmVtZW50ZXIuaCIKICNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgpAQCAtNTA5MSw0
ICs1MDkyLDExIEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9hZGVyKCkgY29uc3QKICAg
ICByZXR1cm4gbG9hZGVyOwogfQogCitNdXRhdGlvblRhcmdldERhdGEqIERvY3VtZW50OjplbnN1
cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIGlmICghbV9tdXRhdGlvblRhcmdldERhdGEp
CisgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIobmV3IE11dGF0aW9uVGFy
Z2V0RGF0YSk7CisgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNlODQ2MTI2ZWE3
YzA3NTBkYWY4MDNiYzJmNTVlM2M2NGEzYjQ1ZTQuLmQxMTRhOWZlM2JkYWUyMzc2N2ZkYzZlN2Mz
NmFhNGFjMTNhZDJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlv
dXRUeXBlcy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVkZSAiUGFnZVZp
c2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0xMDMsNiArMTA0LDcgQEAgY2xhc3MgTWVkaWFD
YW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5
TWF0Y2hlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CitjbGFzcyBNdXRh
dGlvblRhcmdldERhdGE7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwog
Y2xhc3MgUGFnZTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBlbnVtIFBhZ2VzaG93RXZlbnRQZXJzaXN0
ZW5jZSB7CiAKIGVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZsYWcgeyBSZWNhbGNTdHlsZUltbWVk
aWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlIH07CiAKLWNsYXNzIERvY3VtZW50IDogcHVibGljIFRy
ZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeworY2xhc3MgRG9jdW1lbnQg
OiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGlj
IE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKQEAgLTExMDEs
NiArMTEwMyw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBt
X3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERh
dGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdl
dCgpOyB9CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0aW9uVGFy
Z2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIApAQCAtMTQwOSw2ICsxNDE0LDggQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3k7CisKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9u
VGFyZ2V0RGF0YTsKIH07CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhl
eSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8g
aW5saW5lIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA1YzY4MzhlYzVmNWYwNDM1
MTE4YTg1ZjZkMTRmMmVhMzA5MDFkMDM2Li4xN2Q5NDMzMGMzZWQ0ZDdlMDM1NGIwOTkwOWU2ODdm
MGVhMTQ2N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0NSw2ICsyNDUsMTEgQEAg
bW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVf
QykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRp
b25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlw
ZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRp
b25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX09C
SkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFu
ZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExp
c3RlbmVyIG9uYWJvcnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVu
ZXIgb25ibHVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDIz
ZDhjMjA0M2UzOGE4ZGIxOGYyZmNkZWNkZjQwMmQzNWIxZGJjODYuLjJhYjM3OTI4ZGE1MGQ4NTRj
ZDA1OWZiMmE1MTNhNzljZmFhYjNmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRh
LmgiCiAjaW5jbHVkZSAiTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTkwLDQgKzkxLDExIEBAIGJvb2wgRG9jdW1lbnRG
cmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBGCiAjZW5kaWYKIH0KIAorTXV0YXRpb25UYXJnZXREYXRhKiBEb2N1bWVudEZyYWdt
ZW50OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIGlmICghbV9tdXRhdGlvblRh
cmdldERhdGEpCisgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIobmV3IE11
dGF0aW9uVGFyZ2V0RGF0YSk7CisgICAgcmV0dXJuIG1fbXV0YXRpb25UYXJnZXREYXRhLmdldCgp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAppbmRleCA2YmY1MmYx
YTc4NGExMjFjOWEzYmQwOGM4MDhjODIzNjJhMDRmZjMwLi42ZWZkNzcwMzRhNTQ2NmI4M2JjOWQ0
ZDBiOWNhMDI0ZjIwOWU5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgK
QEAgLTI2LDEwICsyNiwxNCBAQAogCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1
ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFy
Z2V0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50RnJhZ21lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CitjbGFzcyBN
dXRhdGlvblRhcmdldERhdGE7CisKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQgOiBwdWJsaWMgQ29u
dGFpbmVyTm9kZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtNDIs
MTAgKzQ2LDE1IEBAIHByb3RlY3RlZDoKICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50Kik7
CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgTXV0
YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9u
VGFyZ2V0RGF0YS5nZXQoKTsgfQorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1
cmVNdXRhdGlvblRhcmdldERhdGEoKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBl
IG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBl
KSBjb25zdDsKKworICAgIE93blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJn
ZXREYXRhOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaWRsCmluZGV4IDg4MmI2MmRiMzllYjdmMmUwNTA0NzgyMDQ5MmI3ZTkzNjFhOGVkZWQu
LmI3NWI4NWZiZDZkMjUyMGZkNGNiNmYwYzdhNjhmMGYxYmM3ODY0YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKQEAgLTI1LDYgKzI1LDExIEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlTGlzdCBx
dWVyeVNlbGVjdG9yQWxsKGluIERPTVN0cmluZyBzZWxlY3RvcnMpCiAgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8
fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICAgICAgdm9pZCB3ZWJraXRBZGRNdXRhdGlvbkxp
c3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIsIGluIERPTU9iamVjdCB0eXBlcyk7
CisgICAgICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxp
c3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA3MTY4ZTEyYmI0YmQ4NDY4MWIxNWY4ZDUxNzcxNmJiMDMzZDA4OWViLi5hNzY1N2Y5
NzA0MTYzNzdiOGI4MDQ4OGZhOTNjYWI1M2Q2M2RmMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgor
I2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgpAQCAtNjk5LDYgKzcwMCwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAgICAgaWYgKCFp
c1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKKwor
ICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3Jl
YXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBsb2NhbE5hbWUpOworICAgIGVucXVldWVNdXRhdGlv
bihtdXRhdGlvbik7CisgICAgb3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRp
b24pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJikKQEAgLTcz
Miw2ICs3MzcsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3luY2hy
b25pemluZ1N0eWxlQXR0cmlidXRlKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAgUmVm
UHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRy
aWJ1dGVDaGFuZ2VkKHRoaXMsIG5hbWUubG9jYWxOYW1lKCkpOworICAgIGVucXVldWVNdXRhdGlv
bihtdXRhdGlvbik7CisgICAgb3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRp
b24pOwogfQogCiBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gRWxlbWVudDo6Y3JlYXRlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBA
IC0yMDUyLDQgKzIwNjEsMTQgQEAgUGFzc1JlZlB0cjxXZWJLaXRBbmltYXRpb25MaXN0PiBFbGVt
ZW50Ojp3ZWJraXRHZXRBbmltYXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gYW5pbUNvbnRyb2xs
ZXItPmFuaW1hdGlvbnNGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKIH0KIAorTXV0YXRpb25UYXJn
ZXREYXRhKiBFbGVtZW50OjptdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIHJldHVybiBoYXNS
YXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRpb25UYXJnZXREYXRhKCkgOiAwOworfQorCitN
dXRhdGlvblRhcmdldERhdGEqIEVsZW1lbnQ6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgpCit7
CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0YSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAxOTIz
YjA2YjBiMDgyNWIxNmViMDE2YjhlNzQ4MTMyNmVjYmU4YzliLi5lMGM5ODEyZDU3NGQyMTc4OGRm
ZDc1ZWI3ZjdiZTkwZjI3YmU2YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtNDksNyArNTAsNyBAQCBlbnVtIFNwZWxsY2hlY2tBdHRy
aWJ1dGVTdGF0ZSB7CiAgICAgU3BlbGxjaGVja0F0dHJpYnV0ZURlZmF1bHQKIH07CiAKLWNsYXNz
IEVsZW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CitjbGFzcyBFbGVtZW50IDogcHVibGlj
IENvbnRhaW5lck5vZGUsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogICAgIHZpcnR1YWwgfkVsZW1lbnQoKTsKQEAgLTM4MSw2ICszODIsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRh
dGlvblRhcmdldERhdGEoKTsKKwogICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKCkgY2FsbHMgdGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zLgog
ICAgIC8vIFRoZXkgYXJlIHNlcGFyYXRlZCB0byBhbGxvdyBhIGRpZmZlcmVudCBmbG93IG9mIGNv
bnRyb2wgaW4gU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgpLgogICAgIHZvaWQgcmVj
YWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCA5ZWJiMDJhNTkyZjcxODMyNmMxNmUwMmYxOTgxYjQxZDljODg5
MGVjLi43Mjc3MThhNmU1NjYzM2RiNzMzZjhiZDcwZWJmNDE5ZmZhOWI5NmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCkBAIC0xNDAsNiArMTQwLDExIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgog
CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJ
VkVfQworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25M
aXN0ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAgICAgICAgdm9pZCB3ZWJr
aXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIpOwor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdF
X09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAg
ICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwogICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYmx1cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAxY2FjY2Q0OTRmMTBmMmE2YzMwNmU2MGJlMTM0NGE3
NTQ2NWUyOTZmLi5hZWRkNTZhOTQyMTJjMTAwMmRiY2Q5NGVhMzhjN2VkYjc1NDE1NTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSAiQ2xhc3NMaXN0LmgiCiAjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKICNpbmNsdWRl
ICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTM5LDYgKzQw
LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CiAKKyAgICBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRh
dGlvblRhcmdldERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0RGF0
YSkKKyAgICAgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIobmV3IE11dGF0
aW9uVGFyZ2V0RGF0YSk7CisgICAgICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQo
KTsKKyAgICB9CisKKwogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6bmVlZHNGb2N1c0FwcGVhcmFu
Y2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXROZWVk
c0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKIApAQCAtNTUsNiArNjUsOCBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9jb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50OwogI2VuZGlmCitwcml2YXRlOgorICAgIE93blB0cjxNdXRhdGlv
blRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJnZXREYXRhOwogfTsKIAogaW5saW5lIEludFNpemUg
ZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxp
c3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFkOGQ4ODQxMDQ1MWQyODYzNTdkZWUwYTU1ZDEzM2Q0NjY5
NmEwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5l
IE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25S
ZWNvcmQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCit0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4gTXV0YXRpb25SZWNvcmRWZWN0b3I7CisKK2NsYXNzIE11
dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbkxpc3RlbmVyPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+TXV0YXRpb25MaXN0ZW5lcigpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11
dGF0aW9uUmVjb3JkVmVjdG9yPikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE11dGF0aW9uTGlzdGVuZXImKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkg
PSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbkxpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVy
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YWQwMWY4ZDNiNjZmZjE5ZDNkMzgxYjI2ZDc0ZmVjYjdkYzZmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIu
aWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgUHVyZUludGVyZmFjZSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBNdXRhdGlv
bkxpc3RlbmVyIHsKKyAgICAgICAgLy8gdm9pZCBoYW5kbGVFdmVudChpbiBNdXRhdGlvblJlY29y
ZFtdIG11dGF0aW9ucykKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBBcnJheSBtdXRhdGlv
bnMpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25S
ZWNvcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjA4YmRiZGI4MDgwM2U2MzY2MzFlMmZkZTZlNWEwNTRiZjM1NzVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApAQCAtMCwwICsx
LDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgor
CisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2lu
Y2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIHsKKworY2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5Tm9kZUxpc3QpOworICAgIH0KKworICAgIHZpcnR1
YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9k
ZSogaXRlbSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSog
aXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwor
cHJpdmF0ZToKKyAgICBFbXB0eU5vZGVMaXN0KCkgeyB9Cit9OworCit9CisKK1Bhc3NSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2VkKFBh
c3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCB1bnNpZ25lZCBhZGRlZENvdW50LCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiByZW1vdmVkLCB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCkKK3sKKyAgICBSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENo
aWxkbGlzdEZsYWcsIHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEgPSBh
ZG9wdFB0cihuZXcgQ2hpbGRsaXN0RGF0YSk7CisgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0
YS0+YWRkZWRDb3VudCA9IGFkZGVkQ291bnQ7CisgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0
YS0+cmVtb3ZlZE5vZGVzID0gcmVtb3ZlZDsKKyAgICBpZiAoIW11dGF0aW9uLT5tX2NoaWxkbGlz
dERhdGEtPnJlbW92ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24tPm1fY2hpbGRsaXN0RGF0YS0+
cmVtb3ZlZE5vZGVzID0gRW1wdHlOb2RlTGlzdDo6Y3JlYXRlKCk7CisgICAgbXV0YXRpb24tPm1f
Y2hpbGRsaXN0RGF0YS0+Y2hpbGRsaXN0SW5kZXggPSBjaGlsZGxpc3RJbmRleDsKKyAgICByZXR1
cm4gbXV0YXRpb24ucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBN
dXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRh
cmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IG11dGF0aW9uID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKEF0dHJpYnV0
ZUZsYWcsIHRhcmdldCkpOworICAgIG11dGF0aW9uLT5tX2F0dHJOYW1lID0gYXR0ck5hbWU7Cisg
ICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJl
Y29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKENo
YXJhY3RlcmRhdGFGbGFnLCB0YXJnZXQpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRh
dGlvblJlY29yZDo6dHlwZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGNoaWxkbGlzdCwgKCJjaGlsZGxpc3QiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGF0dHJpYnV0ZSwgKCJhdHRyaWJ1dGUiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGNoYXJhY3RlcmRhdGEsICgiY2hhcmFjdGVyZGF0YSIpKTsK
KworICAgIHN3aXRjaCAobV90eXBlRmxhZykgeworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6OkNo
aWxkbGlzdEZsYWc6CisgICAgICAgIHJldHVybiBjaGlsZGxpc3Q7CisgICAgY2FzZSBNdXRhdGlv
blJlY29yZDo6QXR0cmlidXRlRmxhZzoKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTsKKyAgICBj
YXNlIE11dGF0aW9uUmVjb3JkOjpDaGFyYWN0ZXJkYXRhRmxhZzoKKyAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcmRhdGE7CisgICAgfQorICAgIEFTU0VSVChmYWxzZSk7CisgICAgcmV0dXJuIGVtcHR5
QXRvbTsKK30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlwZUZs
YWcgdHlwZUZsYWcsIFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90eXBlRmxhZyh0
eXBlRmxhZykKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKKyAgICAsIG1fd2FzSW5Eb2N1bWVudCht
X3RhcmdldC0+aW5Eb2N1bWVudCgpKQorICAgICwgbV9vd25lckRvY3VtZW50KG1fdGFyZ2V0LT5v
d25lckRvY3VtZW50KCkpCit7Cit9CisKK011dGF0aW9uUmVjb3JkOjp+TXV0YXRpb25SZWNvcmQo
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY0OWNlNDAxMTNjMzM2ZTNjYWJlMzc1N2IxMWRhN2UzNmEwZTBl
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQu
aApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25SZWNvcmRfaAorI2RlZmluZSBNdXRh
dGlvblJlY29yZF9oCisKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERvY3VtZW50OworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE11
dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIHVu
c2lnbmVkIGFkZGVkQ291bnQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWQsIHVuc2lnbmVk
IGNoaWxkbGlzdEluZGV4KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4g
Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyTmFtZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+IGNyZWF0ZVRleHREYXRhQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCk7CisKKyAg
ICB2aXJ0dWFsIH5NdXRhdGlvblJlY29yZCgpOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlKCk7CisgICAgTm9kZSogdGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KKyAg
ICBib29sIHdhc0luRG9jdW1lbnQoKSB7IHJldHVybiBtX3dhc0luRG9jdW1lbnQ7IH0KKyAgICBE
b2N1bWVudCogb3duZXJEb2N1bWVudCgpIHsgcmV0dXJuIG1fb3duZXJEb2N1bWVudC5nZXQoKTsg
fQorCisgICAgLy8gRm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcKKyAgICB1bnNpZ25lZCBhZGRlZENv
dW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoaWxkbGlzdERhdGEgPyBtX2NoaWxkbGlz
dERhdGEtPmFkZGVkQ291bnQgOiAwOworICAgIH0KKyAgICBOb2RlTGlzdCogcmVtb3ZlZE5vZGVz
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoaWxkbGlzdERhdGEgPyBtX2NoaWxkbGlzdERh
dGEtPnJlbW92ZWROb2Rlcy5nZXQoKSA6IDA7CisgICAgfQorICAgIHVuc2lnbmVkIGNoaWxkbGlz
dEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoaWxkbGlzdERhdGEgPyBtX2NoaWxk
bGlzdERhdGEtPmNoaWxkbGlzdEluZGV4IDogMDsKKyAgICB9CisKKyAgICAvLyBGb3IgdHlwZSA9
PSAnYXR0cmlidXRlJworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUoKSB7IHJldHVy
biBtX2F0dHJOYW1lOyB9CisKKyAgICAvLyBOb3QgcGFydCBvZiB0aGUgSURMLCBidXQgdXNlZCBp
bnRlcm5hbGx5IGZvciBmYXN0IHR5cGUtYmFzZWQgb3BlcmF0aW9ucy4KKyAgICBlbnVtIE11dGF0
aW9uVHlwZUZsYWcgeworICAgICAgICBDaGlsZGxpc3RGbGFnID0gKDEgPDwgMCksCisgICAgICAg
IEF0dHJpYnV0ZUZsYWcgPSAoMSA8PCAxKSwKKyAgICAgICAgQ2hhcmFjdGVyZGF0YUZsYWcgPSAo
MSA8PCAyKQorICAgIH07CisgICAgTXV0YXRpb25UeXBlRmxhZyB0eXBlRmxhZygpIHsgcmV0dXJu
IG1fdHlwZUZsYWc7IH0KKworcHJpdmF0ZToKKyAgICBNdXRhdGlvblJlY29yZChNdXRhdGlvblR5
cGVGbGFnLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCk7CisKKyAgICBzdHJ1Y3QgQ2hpbGRsaXN0
RGF0YSB7CisgICAgICAgIHVuc2lnbmVkIGFkZGVkQ291bnQ7CisgICAgICAgIFJlZlB0cjxOb2Rl
TGlzdD4gcmVtb3ZlZE5vZGVzOworICAgICAgICB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleDsKKyAg
ICB9OworCisgICAgTXV0YXRpb25UeXBlRmxhZyBtX3R5cGVGbGFnOworICAgIFJlZlB0cjxOb2Rl
PiBtX3RhcmdldDsKKyAgICBib29sIG1fd2FzSW5Eb2N1bWVudDsKKyAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1fb3duZXJEb2N1bWVudDsKKyAgICBBdG9taWNTdHJpbmcgbV9hdHRyTmFtZTsKKyAgICBP
d25QdHI8Q2hpbGRsaXN0RGF0YT4gbV9jaGlsZGxpc3REYXRhOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvblJlY29yZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVmMTFjNmIzZTdhNzM1MDg3NjY5OGU0OWI4NzQ1Y2ViYTFkNTMyZDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIE11dGF0aW9uUmVjb3JkIHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgIHR5cGU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICB0YXJnZXQ7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICB3YXNJbkRvY3VtZW50OworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgICAgICAgb3duZXJEb2N1bWVudDsKKworICAgICAgICAv
LyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyAgYWRkZWRDb3VudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVM
aXN0ICAgICAgIHJlbW92ZWROb2RlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgIGNoaWxkbGlzdEluZGV4OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdhdHRy
aWJ1dGUnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICBhdHRyTmFt
ZTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRjZThlYjJjNjE5MGUxMDRjNjk5ZTc0Yjg1ODczZTM1OGU4M2Q1MzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25TY29wZS5jcHAKQEAgLTAsMCArMSwyNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRpb25TY29wZS5oIgorCisjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTdGF0aWNO
b2RlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbik7
CitwdWJsaWM6CisgICAgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbihQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCk7CisgICAgfkNoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24oKTsKKworICAg
IHZvaWQgY2hpbGRBZGRlZChOb2RlKiBjaGlsZCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPiBjaGlsZCk7CisgICAgdm9pZCBkaXNwYXRjaCgpOworCitwcml2YXRl
OgorICAgIHZvaWQgY2xlYXIoKTsKKworICAgIFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKKyAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9yZW1vdmVkTm9kZXM7CisgICAgdW5zaWduZWQgbV9hZGRl
ZE5vZGVDb3VudDsKKyAgICBpbnQgbV9jaGlsZGxpc3RJbmRleDsKKyAgICBSZWZQdHI8Tm9kZT4g
bV9sYXN0UmVtb3ZlZDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9sYXN0QWRkZWQ7Cit9OworCitjbGFz
cyBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcik7CitwdWJsaWM6CisgICAgfkNoaWxkbGlzdENo
YW5nZXNBY2N1bXVsYXRvcigpOworCisgICAgc3RhdGljIENoaWxkbGlzdENoYW5nZXNBY2N1bXVs
YXRvciogaW5zdGFuY2UoKTsKKworICAgIHZvaWQgaW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUq
IHRhcmdldCk7CisgICAgdm9pZCBkZWNyZW1lbnRTY29waW5nTGV2ZWwoTm9kZSogdGFyZ2V0KTsK
KworICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlKiB0YXJnZXQsIE5vZGUqIGNoaWxkKTsKKyAgICB2
b2lkIHdpbGxSZW1vdmVDaGlsZChOb2RlKiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQp
OworCitwcml2YXRlOgorICAgIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcigpOworICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIEhhc2hNYXA8Tm9kZSosIHVuc2lnbmVkPiBt
X3Njb3BpbmdMZXZlbHM7CisgICAgSGFzaE1hcDxOb2RlKiwgQ2hpbGRsaXN0Q2hhbmdlZEFjY3Vt
dWxhdGlvbio+IG1fYWNjdW11bGF0aW9uczsKKworICAgIHN0YXRpYyBDaGlsZGxpc3RDaGFuZ2Vz
QWNjdW11bGF0b3IqIHNfaW5zdGFuY2U7Cit9OworCitDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0
aW9uOjpDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0
KQorICAgIDogbV90YXJnZXQodGFyZ2V0KQoreworICAgIGNsZWFyKCk7Cit9CisKK0NoaWxkbGlz
dENoYW5nZWRBY2N1bXVsYXRpb246On5DaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKCkKK3sK
KyAgICBBU1NFUlQobV9yZW1vdmVkTm9kZXMuaXNFbXB0eSgpKTsKK30KKwordm9pZCBDaGlsZGxp
c3RDaGFuZ2VkQWNjdW11bGF0aW9uOjpjaGlsZEFkZGVkKE5vZGUqIGNoaWxkKQoreworICAgIGlm
IChtX2NoaWxkbGlzdEluZGV4ID49IDAgJiYgbV9sYXN0QWRkZWQgIT0gY2hpbGQtPnByZXZpb3Vz
U2libGluZygpKQorICAgICAgICBkaXNwYXRjaCgpOworCisgICAgaWYgKG1fY2hpbGRsaXN0SW5k
ZXggPCAwKSB7CisgICAgICBtX2NoaWxkbGlzdEluZGV4ID0gMDsKKyAgICAgIGZvciAoTm9kZSog
biA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsgbjsgbiA9IG4tPnByZXZpb3VzU2libGluZygp
KQorICAgICAgICAgICsrbV9jaGlsZGxpc3RJbmRleDsKKyAgICB9CisKKyAgICArK21fYWRkZWRO
b2RlQ291bnQ7CisgICAgbV9sYXN0QWRkZWQgPSBjaGlsZDsKK30KKwordm9pZCBDaGlsZGxpc3RD
aGFuZ2VkQWNjdW11bGF0aW9uOjp3aWxsUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBjaGls
ZCkKK3sKKyAgICBBU1NFUlQoIW1fYWRkZWROb2RlQ291bnQpOworICAgIGlmIChtX2NoaWxkbGlz
dEluZGV4IDwgMCkgeworICAgICAgICBtX2NoaWxkbGlzdEluZGV4ID0gMDsKKyAgICAgICAgZm9y
IChOb2RlKiBuID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOyBuOyBuID0gbi0+cHJldmlvdXNT
aWJsaW5nKCkpCisgICAgICAgICAgICArK21fY2hpbGRsaXN0SW5kZXg7CisKKyAgICAgICAgbV9s
YXN0QWRkZWQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfSBlbHNlCisgICAgICAg
IEFTU0VSVChtX2xhc3RSZW1vdmVkID09IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7CisKKyAg
ICBtX2xhc3RSZW1vdmVkID0gY2hpbGQ7CisgICAgbV9yZW1vdmVkTm9kZXMuYXBwZW5kKG1fbGFz
dFJlbW92ZWQpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb246OmRpc3Bh
dGNoKCkKK3sKKyAgICBOb2RlKiB0YXJnZXQgPSBtX3RhcmdldC5nZXQoKTsKKyAgICBpZiAoIW1f
YWRkZWROb2RlQ291bnQgJiYgbV9yZW1vdmVkTm9kZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUNoaWxkbGlzdENoYW5nZWQobV90YXJnZXQsIG1fYWRkZWROb2RlQ291bnQsIFN0
YXRpY05vZGVMaXN0OjphZG9wdChtX3JlbW92ZWROb2RlcyksIG1fY2hpbGRsaXN0SW5kZXgpOwor
ICAgIGlmICh0YXJnZXQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgdG9FbGVtZW50KHRhcmdl
dCktPmVucXVldWVNdXRhdGlvbihtdXRhdGlvbik7CisgICAgZWxzZSBpZiAodGFyZ2V0LT5ub2Rl
VHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpCisgICAgICAgIHN0YXRpY19j
YXN0PERvY3VtZW50RnJhZ21lbnQqPih0YXJnZXQpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24p
OworICAgIHRhcmdldC0+b3duZXJEb2N1bWVudCgpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24p
OworCisgICAgY2xlYXIoKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9u
OjpjbGVhcigpCit7CisgICAgbV9hZGRlZE5vZGVDb3VudCA9IDA7CisgICAgbV9jaGlsZGxpc3RJ
bmRleCA9IC0xOworICAgIG1fbGFzdFJlbW92ZWQgPSAwOworICAgIG1fbGFzdEFkZGVkID0gMDsK
KyAgICBpZiAoIW1fcmVtb3ZlZE5vZGVzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZW1vdmVkTm9k
ZXMuY2xlYXIoKTsKK30KKworQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yKiBDaGlsZGxpc3RD
aGFuZ2VzQWNjdW11bGF0b3I6OnNfaW5zdGFuY2UgPSAwOworCitDaGlsZGxpc3RDaGFuZ2VzQWNj
dW11bGF0b3I6OkNoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcigpCit7Cit9CisKKy8vIENhbiB0
aGlzIGdldCBjYWxsZWQKK0NoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6fkNoaWxkbGlzdENo
YW5nZXNBY2N1bXVsYXRvcigpCit7CisgICAgQVNTRVJUKG1fc2NvcGluZ0xldmVscy5pc0VtcHR5
KCkpOworICAgIEFTU0VSVChtX2FjY3VtdWxhdGlvbnMuaXNFbXB0eSgpKTsKK30KKwordm9pZCBD
aGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OmluaXRpYWxpemUoKQoreworICAgIEFTU0VSVCgh
c19pbnN0YW5jZSk7CisgICAgT3duUHRyPENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcj4gaW5z
dGFuY2UgPSBhZG9wdFB0cihuZXcgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yKTsKKyAgICBz
X2luc3RhbmNlID0gaW5zdGFuY2UubGVha1B0cigpOworfQorCisKK0NoaWxkbGlzdENoYW5nZXNB
Y2N1bXVsYXRvciogQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjppbnN0YW5jZSgpCit7Cisg
ICAgaWYgKCFzX2luc3RhbmNlKQorICAgICAgICBpbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4g
c19pbnN0YW5jZTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OmNoaWxk
QWRkZWQoTm9kZSogdGFyZ2V0LCBOb2RlKiBjaGlsZCkKK3sKKyAgICBBU1NFUlQobV9hY2N1bXVs
YXRpb25zLmNvbnRhaW5zKHRhcmdldCkpOworICAgIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRp
b24qIHJlY29yZCA9IG1fYWNjdW11bGF0aW9ucy5nZXQodGFyZ2V0KTsKKyAgICBpZiAocmVjb3Jk
KQorICAgICAgICByZWNvcmQtPmNoaWxkQWRkZWQoY2hpbGQpOworfQorCit2b2lkIENoaWxkbGlz
dENoYW5nZXNBY2N1bXVsYXRvcjo6d2lsbFJlbW92ZUNoaWxkKE5vZGUqIHRhcmdldCwgUGFzc1Jl
ZlB0cjxOb2RlPiBjaGlsZCkKK3sKKyAgICBBU1NFUlQobV9hY2N1bXVsYXRpb25zLmNvbnRhaW5z
KHRhcmdldCkpOworICAgIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24qIHJlY29yZCA9IG1f
YWNjdW11bGF0aW9ucy5nZXQodGFyZ2V0KTsKKyAgICBpZiAocmVjb3JkKQorICAgICAgICByZWNv
cmQtPndpbGxSZW1vdmVDaGlsZChjaGlsZCk7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0Fj
Y3VtdWxhdG9yOjppbmNyZW1lbnRTY29waW5nTGV2ZWwoTm9kZSogdGFyZ2V0KQoreworICAgIHVu
c2lnbmVkIHNjb3BpbmdMZXZlbDsKKworICAgIGlmIChtX3Njb3BpbmdMZXZlbHMuY29udGFpbnMo
dGFyZ2V0KSkKKyAgICAgICAgc2NvcGluZ0xldmVsID0gbV9zY29waW5nTGV2ZWxzLmdldCh0YXJn
ZXQpICsgMTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2NvcGluZ0xldmVsID0gMTsKKyAgICAgICAg
Ym9vbCBoYXNMaXN0ZW5lcnMgPSB0YXJnZXQtPm93bmVyRG9jdW1lbnQoKS0+aGFzTXV0YXRpb25M
aXN0ZW5lcnMoKTsKKworICAgICAgICBpZiAoIWhhc0xpc3RlbmVycykgeworICAgICAgICAgICAg
aWYgKHRhcmdldC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGhhc0xpc3RlbmVy
cyA9IHRvRWxlbWVudCh0YXJnZXQpLT5oYXNNdXRhdGlvbkxpc3RlbmVycygpOworICAgICAgICAg
ICAgZWxzZSBpZiAodGFyZ2V0LT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUpCisgICAgICAgICAgICAgICAgaGFzTGlzdGVuZXJzID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnRGcmFnbWVudCo+KHRhcmdldCktPmhhc011dGF0aW9uTGlzdGVuZXJzKCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoaGFzTGlzdGVuZXJzKQorICAgICAgICAgICAgbV9hY2N1bXVsYXRpb25z
LnNldCh0YXJnZXQsIG5ldyBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKHRhcmdldCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2FjY3VtdWxhdGlvbnMuc2V0KHRhcmdldCwgMCk7
CisgICAgfQorCisgICAgbV9zY29waW5nTGV2ZWxzLnNldCh0YXJnZXQsIHNjb3BpbmdMZXZlbCk7
Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpkZWNyZW1lbnRTY29waW5n
TGV2ZWwoTm9kZSogdGFyZ2V0KQoreworICAgIEFTU0VSVChtX3Njb3BpbmdMZXZlbHMuY29udGFp
bnModGFyZ2V0KSk7CisgICAgdW5zaWduZWQgc2NvcGluZ0xldmVsID0gbV9zY29waW5nTGV2ZWxz
LmdldCh0YXJnZXQpIC0gMTsKKworICAgIGlmIChzY29waW5nTGV2ZWwgPiAwKSB7CisgICAgICAg
IG1fc2NvcGluZ0xldmVscy5zZXQodGFyZ2V0LCBzY29waW5nTGV2ZWwpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgT3duUHRyPENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24+IHJl
Y29yZCA9IGFkb3B0UHRyKG1fYWNjdW11bGF0aW9ucy50YWtlKHRhcmdldCkpOworICAgIG1fc2Nv
cGluZ0xldmVscy5yZW1vdmUodGFyZ2V0KTsKKworICAgIGlmIChyZWNvcmQpCisgICAgICAgIHJl
Y29yZC0+ZGlzcGF0Y2goKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworQ2hpbGRsaXN0Q2hhbmdl
ZE11dGF0aW9uU2NvcGU6OkNoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlKFBhc3NSZWZQdHI8
Tm9kZT4gdGFyZ2V0KQorICAgIDogbV90YXJnZXQodGFyZ2V0KQoreworICAgIENoaWxkbGlzdENo
YW5nZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+aW5jcmVtZW50U2NvcGluZ0xldmVsKG1fdGFy
Z2V0LmdldCgpKTsKK30KKworQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGU6On5DaGlsZGxp
c3RDaGFuZ2VkTXV0YXRpb25TY29wZSgpCit7CisgICAgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxh
dG9yOjppbnN0YW5jZSgpLT5kZWNyZW1lbnRTY29waW5nTGV2ZWwobV90YXJnZXQuZ2V0KCkpOwor
fQorCit2b2lkIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlOjpjaGlsZEFkZGVkKE5vZGUq
IGNoaWxkKQoreworICAgIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+
Y2hpbGRBZGRlZChtX3RhcmdldC5nZXQoKSwgY2hpbGQpOworfQorCit2b2lkIENoaWxkbGlzdENo
YW5nZWRNdXRhdGlvblNjb3BlOjp3aWxsUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBjaGls
ZCkKK3sKKyAgICBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6Omluc3RhbmNlKCktPndpbGxS
ZW1vdmVDaGlsZChtX3RhcmdldC5nZXQoKSwgY2hpbGQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25TY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGNmMWQwZDU4
MjRlMDY3OTY2OGEwOTFiY2IwM2ZiNzE5OWZkNTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRh
dGlvblNjb3BlX2gKKyNkZWZpbmUgTXV0YXRpb25TY29wZV9oCisKKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworCitjbGFzcyBD
aGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUpOworcHVibGljOgorICAgIENoaWxkbGlzdENo
YW5nZWRNdXRhdGlvblNjb3BlKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KTsKKyAgICB+Q2hpbGRs
aXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUoKTsKKworICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlKik7
CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPE5vZGU+IG1fdGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiZjE0YzFlMDBiYjE3NjE2YzliM2FmYjJhNmIzMzQyY2EwNjgyYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuY3BwCkBAIC0wLDAgKzEsMTY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgor
I2luY2x1ZGUgIlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBNdXRhdGlvbkNvbnRleHQgeworICAgIE11dGF0aW9u
Q29udGV4dChQYXNzUmVmUHRyPERvY3VtZW50PiBkLCBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVu
ZXI+IG8pCisgICAgICAgIDogZG9jdW1lbnQoZCkKKyAgICAgICAgLCBsaXN0ZW5lcihvKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50OworICAgIFJlZlB0cjxN
dXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKK307CisKK3N0cnVjdCBNdXRhdGlvbkNvbnRleHRQ
dHJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBNdXRhdGlvbkNvbnRleHQq
IGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnRIYXNoPHVpbnQ2NF90Pjo6aGFzaChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oUHRySGFzaDxEb2N1bWVudCo+OjpoYXNoKGtleS0+ZG9jdW1lbnQu
Z2V0KCkpKSA8PCAzMiB8IGtleS0+bGlzdGVuZXItPmhhc2goKSk7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgTXV0YXRpb25Db250ZXh0KiBhLCBjb25zdCBNdXRhdGlvbkNv
bnRleHQqIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS0+ZG9jdW1lbnQgPT0gYi0+ZG9jdW1l
bnQgJiYgKmEtPmxpc3RlbmVyID09ICpiLT5saXN0ZW5lcjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dHlwZWRlZiBIYXNoTWFwPE11dGF0aW9uQ29udGV4dCosIE11dGF0aW9uUmVjb3JkVmVjdG9yKiwg
TXV0YXRpb25Db250ZXh0UHRySGFzaD4gQ29udGV4dFZlY3Rvck1hcDsKKworfSAvLyBuYW1lc3Bh
Y2UKKworc3RhdGljIENvbnRleHRWZWN0b3JNYXAmIGNvbnRleHRWZWN0b3JNYXAoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ29udGV4dFZlY3Rvck1hcCwgbSwgKCkpOworICAgIHJldHVy
biBtOworfQorCitzdGF0aWMgRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiYgYWN0aXZl
TXV0YXRpb25Db250ZXh0cygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEZXF1ZTxPd25Q
dHI8TXV0YXRpb25Db250ZXh0PiA+LCBhY3RpdmVDb250ZXh0cywgKCkpOworICAgIHJldHVybiBh
Y3RpdmVDb250ZXh0czsKK30KKwordm9pZCBzcGluTXV0YXRpb25RdWV1ZSgpCit7CisgICAgd2hp
bGUgKCFhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIE93blB0
cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkudGFr
ZUZpcnN0KCk7CisgICAgICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gdiA9IGFkb3B0
UHRyKGNvbnRleHRWZWN0b3JNYXAoKS50YWtlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgY29u
dGV4dC0+bGlzdGVuZXItPmhhbmRsZUV2ZW50KGNvbnRleHQtPmRvY3VtZW50LmdldCgpLCB2LnJl
bGVhc2UoKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBlbnN1cmVNdXRhdGlvblF1ZXVlZChQ
YXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHBycExpc3RlbmVyLCBQYXNzUmVmUHRyPE11dGF0
aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11
dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAgQVNTRVJUKG11dGF0aW9uLT50YXJnZXQoKSk7Cisg
ICAgQVNTRVJUKG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1lbnQoKSk7CisgICAgT3duUHRyPE11
dGF0aW9uQ29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvbkNvbnRleHQobXV0
YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpLCBwcnBMaXN0ZW5lcikpOworCisgICAgcGFpcjxD
b250ZXh0VmVjdG9yTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gY29udGV4dFZlY3Rvck1h
cCgpLmFkZChjb250ZXh0LmdldCgpLCAwKTsKKyAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBNdXRhdGlvblJlY29yZFZlY3RvcjsKKyAg
ICAgICAgYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmFwcGVuZChjb250ZXh0LnJlbGVhc2UoKSk7
CisgICAgfQorICAgIE11dGF0aW9uUmVjb3JkVmVjdG9yKiB2ID0gcmVzdWx0LmZpcnN0LT5zZWNv
bmQ7CisgICAgaWYgKHYtPmlzRW1wdHkoKSB8fCB2LT5sYXN0KCkgIT0gbXV0YXRpb24pCisgICAg
ICAgIHYtPmFwcGVuZChtdXRhdGlvbik7Cit9CisKK011dGF0aW9uVGFyZ2V0Ojp+TXV0YXRpb25U
YXJnZXQoKQoreworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxp
c3RlbmVyKFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIHVpbnQ4X3Qg
dHlwZU1hc2spCit7CisgICAgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIgcmVnaXN0ZXJlZExp
c3RlbmVyKHBycExpc3RlbmVyLCB0eXBlTWFzayk7CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBk
ID0gZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgc2l6ZV90IGluZGV4ID0gZC0+bGlz
dGVuZXJzLmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91
bmQpCisgICAgICAgIGQtPmxpc3RlbmVycy5hcHBlbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAg
ICBlbHNlCisgICAgICAgIGQtPmxpc3RlbmVyc1tpbmRleF0udHlwZXMgfD0gdHlwZU1hc2s7Cit9
CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0
YXRpb25MaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0g
bXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQtPmxpc3RlbmVycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAoKmQtPmxpc3RlbmVyc1tpXS5saXN0ZW5lciA9PSAqbGlzdGVuZXIpIHsKKyAgICAg
ICAgICAgIGQtPmxpc3RlbmVycy5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTXV0YXRpb25UYXJnZXQ6Omhhc011dGF0aW9uTGlzdGVu
ZXJzKCkKK3sKKyAgICBNdXRhdGlvblRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEo
KTsKKyAgICByZXR1cm4gZCAmJiAhZC0+bGlzdGVuZXJzLmlzRW1wdHkoKTsKK30KKwordm9pZCBN
dXRhdGlvblRhcmdldDo6ZW5xdWV1ZU11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
IHBycE11dGF0aW9uKQoreworICAgIEFTU0VSVChwcnBNdXRhdGlvbik7CisKKyAgICBNdXRhdGlv
blRhcmdldERhdGEqIGQgPSBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQgfHwgZC0+
bGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE11dGF0
aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5l
cnNbaV0udHlwZXMgJiBtdXRhdGlvbi0+dHlwZUZsYWcoKSkKKyAgICAgICAgICAgIGVuc3VyZU11
dGF0aW9uUXVldWVkKGQtPmxpc3RlbmVyc1tpXS5saXN0ZW5lciwgbXV0YXRpb24pOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Y2VjOGFmOTllMThmOTE3OWU1MmVlNjBlNjE4MWMxMzhlN2JjNzg3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25UYXJnZXRfaAorI2RlZmluZSBNdXRhdGlvblRh
cmdldF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE11dGF0aW9uTGlzdGVuZXI7CitjbGFzcyBNdXRhdGlvblJlY29yZDsKK2Ns
YXNzIE11dGF0aW9uVGFyZ2V0RGF0YTsKKworY2xhc3MgTXV0YXRpb25UYXJnZXQgeworcHVibGlj
OgorICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+LCB1aW50OF90IHR5cGVNYXNrKTsKKyAgICB2b2lkIHdlYmtpdFJlbW92ZU11dGF0
aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5lciopOworCisgICAgdm9pZCBlbnF1ZXVlTXV0YXRp
b24oUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOworICAgIGJvb2wgaGFzTXV0YXRpb25MaXN0
ZW5lcnMoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk11dGF0aW9uVGFyZ2V0KCk7CisK
KyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXREYXRhKCkgPSAw
OworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRhdGlvblRhcmdldERh
dGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFyZ2V0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGJlMTBjMzBkMmUwYTNiOTQ0OTAw
ZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uVGFy
Z2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisKKyNpbmNsdWRlICJSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVk
ZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyPiBNdXRhdGlvbkxpc3RlbmVyVmVj
dG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEoKSB7IH0KKyAgICB+TXV0YXRpb25UYXJnZXRE
YXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yIGxpc3RlbmVyczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFyZ2V0RGF0YV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggMGU4Y2JhZmFjMDVhZWZmOTVhMmQ0M2I0ZWI4N2NhYWMxNzA2
Zjk1Ni4uM2I4ZmI2ZGFmM2M3N2M1NGQ2ZmVlZGJlYjNkZDAwNzJhNzdlMzVmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk11
dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOYW1l
ZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKQEAgLTIxMjYsNiArMjEyNyw4
IEBAIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAg
ICBjYXNlIFNIQURPV19ST09UX05PREU6IHsKICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIGNv
bnRhaW5lciA9IHRvQ29udGFpbmVyTm9kZSh0aGlzKTsKKyAgICAgICAgICAgIENoaWxkbGlzdENo
YW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lcik7CisKICAgICAgICAgICAgIGNv
bnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChkb2N1bWVudCgpLT5j
cmVhdGVUZXh0Tm9kZSh0ZXh0KSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0
ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmVlYzgxNGNjODk4ZDZjZTc0ZDE0
NjBjMTFlMzdmYjc2ODkzMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVn
aXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBSZWdpc3RlcmVkTXV0YXRpb25MaXN0
ZW5lcl9oCisKKyNpbmNsdWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVk
TXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGwsIHVpbnQ4X3Qg
dHlwZU1hc2spCisgICAgICAgIDogbGlzdGVuZXIobCkKKyAgICAgICAgLCB0eXBlcyh0eXBlTWFz
aykgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICpsaXN0ZW5lciA9PSAq
b3RoZXIubGlzdGVuZXI7CisgICAgfQorCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGxp
c3RlbmVyOworICAgIHVpbnQ4X3QgdHlwZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAwMDgyMzJhNzA0M2QxOGZjZDRkYjYyNWU5OWUyNjQ3
MTU4MWEwZDFhLi45MjM5YzA1MDc2MTljODc5M2E5ZjA3YmI2MGM3ZTI4ZmFiMWFiNGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJXb3JkQnJlYWsuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTMxOCw2ICszMTksOCBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaGFzT25lVGV4dENoaWxkKENvbnRhaW5lck5vZGUqIG5vZGUpCiAKIHN0YXRp
YyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChIVE1MRWxlbWVudCogZWxlbWVudCwg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24oZWxlbWVudCk7
CisKICAgICBpZiAoIWZyYWdtZW50LT5maXJzdENoaWxkKCkpIHsKICAgICAgICAgZWxlbWVudC0+
cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzM5LDYgKzM0Miw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChIVE1MRWxlbWVudCogZWxlbWVu
dCwgUGFzc1JlZlB0cjxEb2N1bWVuCiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhU
ZXh0KEhUTUxFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKGVs
ZW1lbnQpOwogICAgIGlmIChoYXNPbmVUZXh0Q2hpbGQoZWxlbWVudCkpIHsKICAgICAgICAgc3Rh
dGljX2Nhc3Q8VGV4dCo+KGVsZW1lbnQtPmZpcnN0Q2hpbGQoKSktPnNldERhdGEodGV4dCwgZWMp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNDNjMjM3
NWM2MWZjMzllNDM3MTA3Y2UxYWI4NTQ0NWQxODUwYjdkNi4uYTkxMWZjZGY1OTlkZDdiZjgzYTI2
YTBhMjAzNzhhOWQ5NjhkNjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzIs
NiArNzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFR
dWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRh
dGlvblRhcmdldC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE4ODMsNCArMTg4NCw5IEBAIFN0
b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIH0KICNlbmRp
ZgogCit2b2lkIERPTVdpbmRvdzo6c3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIDo6V2ViQ29y
ZTo6c3Bpbk11dGF0aW9uUXVldWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYTJhZDgwOWE5ZjA2NmZjMjhmNWFlZWJlODcxY2U2MGRj
OGE4NWFmZC4uZGM5YjAxZGM1Y2NhYzY0OThmY2FkZjIzZWEyN2I3NzNiNzQ3YTQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC00MTQsNiArNDE0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQZXJmb3JtYW5jZSogcGVyZm9ybWFuY2UoKSBjb25zdDsKICNlbmRpZgogCisg
ICAgICAgIHZvaWQgc3Bpbk11dGF0aW9uUXVldWUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IERPTVdpbmRvdyhGcmFtZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggYzIz
ODRkMTVhNWQ3YTk1ZDRjZjQwY2Q1NjkzZGZkMTdhN2I2ZDk4Mi4uMjM0MmFkZjVkYmViZjM5ZjZk
NTQ3MDA1MGNjZjNiNTc1ZmI4ZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAt
ODA1LDYgKzgwNSwxMSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgLy8gd2luZG93LnRvU3Ry
aW5nKCkgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBpbiBWOAogICAgICAgICBbVjhEb05vdENo
ZWNrU2lnbmF0dXJlLCBEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbSwgRG9udEVudW1d
IERPTVN0cmluZyB0b1N0cmluZygpOwogI2VuZGlmIC8vIGRlZmluZWQoVjhfQklORElORykKKwor
ICAgICAgICAvLyBGSVhNRShhZGFtayk6IERPIE5PVCBTVUJNSVQKKyAgICAgICAgLy8gVGhpcyBu
ZWVkcyB0byBiZSBleHBvc2VkIHRvIEpTIHVudGlsIGVtYmVkZGVycyBhcmUgbW9kaWZpZWQgdG8g
Y2FsbCBzcGluTXV0YXRpb25RdWV1ZSgpCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgZWFjaCB0
YXNrLgorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106218</attachid>
            <date>2011-09-02 16:22:45 -0700</date>
            <delta_ts>2011-09-02 16:22:45 -0700</delta_ts>
            <desc>Test reorganization</desc>
            <filename>bug-66079-20110902162244.patch</filename>
            <type>text/plain</type>
            <size>133464</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZDBlODMwMjU2ZjU5MDZkNWVkYjk5
ZTU4ZmM5ODM4YTRkODFjMzNlLi5hNGM4MjZkYTc3ZDAzNDgyMDZmMzRjYWUzZDg5NTU4ZTFiZmNh
M2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMzAgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIHI5NDA4NCBhbmQgcjk0MDg4IGFuZCByOTM5MDku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWE4MWU3YjIyZGEyYjBmZWI0OGNmODM4NWYyZjFlOTliN2VjOTk2
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkxIEBACitUZXN0IHRoYXQgTXV0YXRpb25MaXN0
ZW5lcnMgd29yayBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
Ky0tLSBpbnNlcnRpb25zLCAiYnViYmxpbmciLCBhbmQgZGUtZHVwaW5nIC0tLQorUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzYW5kYm94CitQ
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZGxpc3QiCitQQVNTIG11dGF0aW9uc1swXS53
YXNJbkRvY3VtZW50IGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgMQor
UEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgbm9k
ZXMuYQorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hpbGRsaXN0IgorUEFTUyBtdXRhdGlv
bnNbMV0ud2FzSW5Eb2N1bWVudCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZENvdW50
IGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLmNoaWxkbGlzdEluZGV4IGlzIDAKK1BBU1MgbXV0YXRp
b25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMl0udGFyZ2V0
IGlzIHNhbmRib3gKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImNoaWxkbGlzdCIKK1BBU1Mg
bXV0YXRpb25zWzJdLndhc0luRG9jdW1lbnQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMl0uYWRk
ZWRDb3VudCBpcyAxCitQQVNTIG11dGF0aW9uc1syXS5jaGlsZGxpc3RJbmRleCBpcyAxCitQQVNT
IG11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKKy0tLSByZW1vdmFsIC0tLQor
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBz
YW5kYm94CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZGxpc3QiCitQQVNTIG11dGF0
aW9uc1swXS53YXNJbkRvY3VtZW50IGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291
bnQgaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXggaXMgMQorUEFTUyBtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXNbMF0gaXMgbm9kZXMuYgorLS0tIGF0dHJpYnV0ZXMgLS0tCitQQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHNhbmRib3gKK1BBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZSIKK1BBU1MgbXV0YXRpb25zWzBdLndhc0lu
RG9jdW1lbnQgaXMgdHJ1ZQorUEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9v
IgorLS0tIGNoYXJhY3RlcmRhdGEgLS0tCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFT
UyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIG5vZGVzLmEuZmlyc3RDaGlsZAorUEFTUyBtdXRhdGlv
bnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyZGF0YSIKK1BBU1MgbXV0YXRpb25zWzBdLndhc0luRG9j
dW1lbnQgaXMgdHJ1ZQorLS0tIGRvY3VtZW50ZnJhZ21lbnQgLS0tCitQQVNTIG11dGF0aW9ucy5s
ZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIG5vZGVzLmZyYWcKK1BBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxkbGlzdCIKK1BBU1MgbXV0YXRpb25zWzBdLndhc0lu
RG9jdW1lbnQgaXMgZmFsc2UKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkQ291bnQgaXMgMQorUEFT
UyBtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0ucmVt
b3ZlZE5vZGVzLmxlbmd0aCBpcyAwCistLS0gaW5zZXJ0QmVmb3JlIHdpdGhpbiBzYW1lIGNoaWxk
bGlzdCAtLS0KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50
YXJnZXQgaXMgbm9kZXMuZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZGxpc3Qi
CitQQVNTIG11dGF0aW9uc1swXS53YXNJbkRvY3VtZW50IGlzIGZhbHNlCitQQVNTIG11dGF0aW9u
c1swXS5hZGRlZENvdW50IGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4IGlz
IDEKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIG5vZGVzLnNwYW4yCitQQVNTIG11dGF0aW9uc1sx
XS50YXJnZXQgaXMgbm9kZXMuZGl2CitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJjaGlsZGxp
c3QiCitQQVNTIG11dGF0aW9uc1sxXS53YXNJbkRvY3VtZW50IGlzIGZhbHNlCitQQVNTIG11dGF0
aW9uc1sxXS5hZGRlZENvdW50IGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLmNoaWxkbGlzdEluZGV4
IGlzIDAKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorLS0tIGlu
bmVySFRNTCAtLS0KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sw
XS50YXJnZXQgaXMgbm9kZXMuZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZGxp
c3QiCitQQVNTIG11dGF0aW9uc1swXS53YXNJbkRvY3VtZW50IGlzIGZhbHNlCitQQVNTIG11dGF0
aW9uc1swXS5hZGRlZENvdW50IGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmNoaWxkbGlzdEluZGV4
IGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBt
dXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIG5vZGVzLmJvbGQKK1BBU1MgbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlc1sxXSBpcyBub2Rlcy5pdGFsaWMKKy0tLSByZXBsYWNlQ2hpbGQgLS0t
CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlz
IG5vZGVzLmRpdgorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRsaXN0IgorUEFTUyBt
dXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCBpcyBmYWxzZQorUEFTUyBtdXRhdGlvbnNbMF0uYWRk
ZWRDb3VudCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRleCBpcyAxCitQQVNT
IG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlc1swXSBpcyBub2Rlcy5ib2xkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9u
LWxpc3RlbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE5NzhkOTJhNWNlMjY1MWU4MWEyNzdmYWI2MmE3
YzQyMWZiZTNjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0
aW9uLWxpc3RlbmVyLmh0bWwKQEAgLTAsMCArMSwyMTYgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgIDxkaXYgaWQ9InNhbmRib3giIHN0eWxlPSJkaXNw
bGF5Om5vbmUiPjwvZGl2PgorICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGVzdCB0
aGF0IE11dGF0aW9uTGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuJyk7CisgICAgICAgIHZhciBt
dXRhdGlvbnMgPSBudWxsOworICAgICAgICB2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzYW5kYm94Jyk7CisKKyAgICAgICAgdmFyIG5vZGVzID0ge307CisKKyAgICAgICAg
ZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHZlcmlmeShmdW5jKSB7CisgICAgICAgICAgICBzcGlu
TXV0YXRpb25RdWV1ZSgpOworICAgICAgICAgICAgZnVuYygpOworICAgICAgICAgICAgcnVuTmV4
dFRlc3QoKTsKKyAgICAgICAgICAgIC8qIEZJWE1FOiBlbmFibGUgdGhpcyBjb2RlIGFuZCBnZXQg
cmlkIG9mIHNwaW5NdXRhdGlvblF1ZXVlIG9uY2UgcnVuLWFmdGVyLW1pY3JvdGFzayBpcyBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGhlbHBlcigpIHsKKyAgICAgICAgICAgICAg
ICBmdW5jKCk7CisgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHNldFRpbWVvdXQoaGVscGVyLCAwKTsKKyAgICAgICAgICAgICovCisgICAg
ICAgIH0KKworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
Ly8gVGVzdCBpbnNlcnRpb25zLCAiYnViYmxpbmciLCBhbmQgZGUtZHVwaW5nLgorICAgICAgICBm
dW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRBZGRNdXRh
dGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7CisgICAgICAgICAgICBz
YW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRy
dWV9KTsKKyAgICAgICAgICAgIG5vZGVzLmEgPSBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgICAgICBub2Rlcy5hLnRleHRDb250ZW50
ID0gJ2hlbGxvLCB3b3JsZCc7CisgICAgICAgICAgICBub2Rlcy5iID0gc2FuZGJveC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICAgICAgZG9jdW1l
bnQud2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgICAgICB2
ZXJpZnkoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGVidWcoJy0tLSBpbnNlcnRpb25z
LCAiYnViYmxpbmciLCBhbmQgZGUtZHVwaW5nIC0tLScpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnRhcmdldCcsICdzYW5kYm94Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZGxpc3QiJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS53YXNJbkRvY3VtZW50JywgJ3RydWUnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkQ291bnQnLCAnMScpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXgnLCAnMCcpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0
aCcsICcwJyk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdl
dCcsICdub2Rlcy5hJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50
eXBlJywgJyJjaGlsZGxpc3QiJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1sxXS53YXNJbkRvY3VtZW50JywgJ3RydWUnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzFdLmFkZGVkQ291bnQnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0uY2hpbGRsaXN0SW5kZXgnLCAnMCcpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnRhcmdldCcsICdzYW5kYm94Jyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJjaGlsZGxpc3Qi
Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS53YXNJbkRvY3VtZW50
JywgJ3RydWUnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmFkZGVk
Q291bnQnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uY2hp
bGRsaXN0SW5kZXgnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
Ml0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlbW92
YWwoKSB7CisgICAgICAgICAgICBzYW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIobGlz
dGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hp
bGQobm9kZXMuYik7CisgICAgICAgICAgICB2ZXJpZnkoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgZGVidWcoJy0tLSByZW1vdmFsIC0tLScpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdzYW5kYm94Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZGxpc3QiJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS53YXNJbkRvY3VtZW50JywgJ3RydWUnKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkQ291bnQnLCAnMCcpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uY2hpbGRsaXN0SW5kZXgnLCAnMScpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcs
ICcxJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9k
ZXNbMF0nLCAnbm9kZXMuYicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgZnVuY3Rpb24gdGVzdEF0dHJp
YnV0ZXMoKSB7CisgICAgICAgICAgICBzYW5kYm94LndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIo
bGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAgICAgIHNhbmRib3guc2V0QXR0
cmlidXRlKCdkYXRhLWZvbycsICdteWRhdGEnKTsKKyAgICAgICAgICAgIHZlcmlmeShmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnLS0tIGF0dHJpYnV0ZXMgLS0tJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3NhbmRib3gnKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZSInKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLndhc0luRG9jdW1lbnQnLCAn
dHJ1ZScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0ck5hbWUn
LCAnImRhdGEtZm9vIicpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0YXRpb24uCisgICAgICAgIGZ1bmN0aW9uIHRlc3RDaGFy
YWN0ZXJEYXRhKCkgeworICAgICAgICAgICAgbm9kZXMuYS53ZWJraXRBZGRNdXRhdGlvbkxpc3Rl
bmVyKGxpc3RlbmVyLCB7Y2hhcmFjdGVyZGF0YTogdHJ1ZX0pOworICAgICAgICAgICAgbm9kZXMu
YS5maXJzdENoaWxkLnRleHRDb250ZW50ID0gJ2dvb2RieWUhJzsKKyAgICAgICAgICAgIHZlcmlm
eShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnLS0tIGNoYXJhY3RlcmRhdGEg
LS0tJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ25vZGVz
LmEuZmlyc3RDaGlsZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dHlwZScsICciY2hhcmFjdGVyZGF0YSInKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLndhc0luRG9jdW1lbnQnLCAndHJ1ZScpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBUZXN0IGRpc2Nvbm5lY3RlZCBEb2N1bWVudEZyYWdtZW50Cisg
ICAgICAgIGZ1bmN0aW9uIHRlc3REb2N1bWVudEZyYWdtZW50KCkgeworICAgICAgICAgICAgbm9k
ZXMuZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgICAg
IG5vZGVzLmZyYWcud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlz
dDogdHJ1ZX0pOworICAgICAgICAgICAgbm9kZXMuZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICAgICAgdmVyaWZ5KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGRlYnVnKCctLS0gZG9jdW1lbnRmcmFnbWVudCAtLS0nKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnbm9kZXMuZnJhZycpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRsaXN0Iicp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCcs
ICdmYWxzZScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWRD
b3VudCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5jaGls
ZGxpc3RJbmRleCcsICcwJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGVzdCBpbnNlcnRCZWZvcmUgd2l0aCBhbiBleGlzdGluZyBub2RlOiB5
aWVsZHMgdHdvIHJlY29yZHMuCisgICAgICAgIGZ1bmN0aW9uIHRlc3RJbnNlcnRCZWZvcmUoKSB7
CisgICAgICAgICAgICBub2Rlcy5kaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIG5vZGVzLnNwYW4gPSBub2Rlcy5kaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgICAgIG5vZGVzLnNwYW4yID0gbm9kZXMu
ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAg
ICAgICBub2Rlcy5kaXYud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxk
bGlzdDogdHJ1ZX0pOworICAgICAgICAgICAgbm9kZXMuZGl2Lmluc2VydEJlZm9yZShub2Rlcy5z
cGFuMiwgbm9kZXMuc3Bhbik7CisgICAgICAgICAgICB2ZXJpZnkoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgZGVidWcoJy0tLSBpbnNlcnRCZWZvcmUgd2l0aGluIHNhbWUgY2hpbGRsaXN0
IC0tLScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdub2Rl
cy5kaXYnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImNoaWxkbGlzdCInKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLndh
c0luRG9jdW1lbnQnLCAnZmFsc2UnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmFkZGVkQ291bnQnLCAnMCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uY2hpbGRsaXN0SW5kZXgnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0nLCAnbm9kZXMuc3BhbjIn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdub2Rl
cy5kaXYnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAn
ImNoaWxkbGlzdCInKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLndh
c0luRG9jdW1lbnQnLCAnZmFsc2UnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLmFkZGVkQ291bnQnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0uY2hpbGRsaXN0SW5kZXgnLCAnMCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhhdCBpbm5lckhUTUwgeWllbGRzIGEg
c2luZ2xlIHJlY29yZC4KKyAgICAgICAgZnVuY3Rpb24gdGVzdElubmVySFRNTCgpIHsKKyAgICAg
ICAgICAgIG5vZGVzLmRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
ICAgICAgbm9kZXMuYm9sZCA9IG5vZGVzLmRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdiJykpOworICAgICAgICAgICAgbm9kZXMuaXRhbGljID0gbm9kZXMuZGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKSk7CisgICAgICAgICAgICBub2Rlcy5k
aXYud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwge2NoaWxkbGlzdDogdHJ1ZX0p
OworICAgICAgICAgICAgbm9kZXMuZGl2LmlubmVySFRNTCA9ICc8c3Bhbj48L3NwYW4+PHNwYW4+
PC9zcGFuPic7CisgICAgICAgICAgICB2ZXJpZnkoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgZGVidWcoJy0tLSBpbm5lckhUTUwgLS0tJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udGFyZ2V0JywgJ25vZGVzLmRpdicpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRsaXN0IicpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ud2FzSW5Eb2N1bWVudCcsICdmYWxzZScpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCcsICcyJyk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRleCcsICcwJyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzInKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXScsICdub2Rlcy5ib2xkJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5yZW1vdmVkTm9kZXNbMV0nLCAnbm9kZXMuaXRhbGljJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhhdCByZXBsYWNlQ2hpbGQgeWllbGRz
IGEgc2luZ2xlIHJlY29yZC4KKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlcGxhY2VDaGlsZCgpIHsK
KyAgICAgICAgICAgIHZhciBkaXYgPSBub2Rlcy5kaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPHNwYW4+PC9zcGFuPic7Cisg
ICAgICAgICAgICB2YXIgYm9sZCA9IG5vZGVzLmJvbGQgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYicpKTsKKyAgICAgICAgICAgIGRpdi53ZWJraXRBZGRNdXRhdGlv
bkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7CisgICAgICAgICAgICBkaXYu
cmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKSwgYm9sZCk7CisgICAgICAg
ICAgICB2ZXJpZnkoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGVidWcoJy0tLSByZXBs
YWNlQ2hpbGQgLS0tJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5n
dGgnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0
JywgJ25vZGVzLmRpdicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dHlwZScsICciY2hpbGRsaXN0IicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ud2FzSW5Eb2N1bWVudCcsICdmYWxzZScpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYWRkZWRDb3VudCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5jaGlsZGxpc3RJbmRleCcsICcxJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXScsICdub2Rl
cy5ib2xkJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0ZXN0
cyA9IFt0ZXN0QmFzaWMsIHRlc3RSZW1vdmFsLCB0ZXN0QXR0cmlidXRlcywgdGVzdENoYXJhY3Rl
ckRhdGEsCisgICAgICAgIHRlc3REb2N1bWVudEZyYWdtZW50LCB0ZXN0SW5zZXJ0QmVmb3JlLCB0
ZXN0SW5uZXJIVE1MLCB0ZXN0UmVwbGFjZUNoaWxkXTsKKyAgICAgICAgdmFyIHRlc3RJbmRleCA9
IDA7CisKKyAgICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgICAgICAgICAgICBpZiAo
dGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3RzW3Rlc3RJbmRl
eCsrXSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKworICAgICAgICB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwY2FjMjRkOGUwOTI1MDI5NGYwNTU1ODVlYmEyNTI1Mjg1YTBiMTlm
Li41Yzc0MDIzYjQyYTgwM2FhODE4ODQ1NGJkNzk3NDQ4OGY5OWRjMDNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTg0IEBACisyMDExLTA4LTMwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFt3b3JrIGluIHByb2dyZXNzXSBJbXBsZW1lbnQgTXV0YXRpb25MaXN0
ZW5lci9NdXRhdGlvblRhcmdldCwgYSByZXBsYWNlbWVudCBmb3IgRE9NIE11dGF0aW9uIEV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYwNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFs
bHkgaW1wbGVtZW50cyBhbiBleHBlcmltZW50YWwsIHZlbmRvci1wcmVmaXhlZCBBUEkgd2l0aCB0
aGUKKyAgICAgICAgaG9wZSBvZiBldmVudHVhbGx5IHJlcGxhY2luZyBNdXRhdGlvbkV2ZW50cy4g
VGhlIEFQSSBpcyBiYXNlZCBpbgorICAgICAgICBsYXJnZSBwYXJ0IG9uIGEgcHJvcG9zYWwgYnkg
Sm9uYXMgU2lja2luZyBpbiBhIG1lc3NhZ2UgdG8gcHVibGljLXdlYmFwcHM6CisKKyAgICAgICAg
aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1
bFNlcC8wMzY5Lmh0bWwKKworICAgICAgICBUaGF0IHRocmVhZCBpcyB2ZXJ5IGxvbmcsIGJ1dCBo
YXMgaGVscGZ1bGx5IGJlZW4gc3VtbWFyaXplZCBieQorICAgICAgICBSYWZhZWwgV2VpbnN0ZWlu
IGluIGEgcmVjZW50IG1lc3NhZ2U6CisKKyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo
aXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUp1bFNlcC8wNzc5Lmh0bWwKKworICAgICAg
ICBOb3RlIHRoYXQgdGhpcyBwYXRjaCBpcyBpbiBubyB3YXkgbWVhbnQgdG8gYmUgYSBjb21wbGV0
ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gVGhlIGJpZ2dlc3QgbWlzc2luZyBmZWF0dXJlIGlz
IHRoZSBhY3R1YWwgZGlzcGF0Y2hpbmcKKyAgICAgICAgb2YgTXV0YXRpb25SZWNvcmQgYXJyYXlz
IHRvIE11dGF0aW9uTGlzdGVuZXJzOiB0aGUgaW5jbHVkZWQgbGF5b3V0CisgICAgICAgIHRlc3Qg
aW5zdGVhZCBjYWxscyBhICJzcGluTXV0YXRpb25RdWV1ZSIgZnVuY3Rpb24gdG8gdHJpZ2dlcgor
ICAgICAgICBub3RpZmljYXRpb25zLiBUaGlzIGlzIG5vdCBhY3R1YWxseSBtZWFudCB0byBiZSBl
eHBvc2VkIHRvIEpTLAorICAgICAgICB0aG91Z2g6IG15IGhvcGUgaXMgdG8gaW5zdGVhZCBjYWxs
IHNwaW5NdXRhdGlvblF1ZXVlIGZyb20KKyAgICAgICAgQysrLCBlaXRoZXIgZnJvbSBzb21ld2hl
cmUgaW4gV2ViQ29yZSBvciAobW9yZSBsaWtlbHkpIGluCisgICAgICAgIHRoZSBlbWJlZGRlci4g
SSBoYXZlIGEgc2VwYXJhdGUgY2hhbmdlIHdoaWNoIGltcGxlbWVudHMgdGhlCisgICAgICAgIGxh
dHRlciBpbiBDaHJvbWl1bS4KKworICAgICAgICBUaGUgb3RoZXIgbWFpbiB0aGluZyBtaXNzaW5n
IGZyb20gdGhpcyBwYXRjaCBpcyB0aGF0IE11dGF0aW9uUmVjb3JkcworICAgICAgICBhcmUgbm90
IGRpc3BhdGNoZWQgaW4gYWxsIHRoZSBwcm9wZXIgcGxhY2VzLCBlLmcuLCB0aGUgaGFuZGxpbmcg
b2YKKyAgICAgICAgaW5uZXJIVE1MIGlzIG5vdCBhcyB3ZSBob3BlIGl0IHRvIGJlLiBUaGlzIGlz
IHNpbXBseSBhIG1hdHRlciBvZgorICAgICAgICB3YW50aW5nIHRvIHB1dCB0aGlzIHBhdGNoIHVw
IHRvIGdldCBmZWVkYmFjazogaXQgc2hvdWxkbid0IGJlCisgICAgICAgIG11Y2ggd29yayB0byBh
ZGQgTXV0YXRpb25SZWNvcmQgZGlzcGF0Y2hpbmcgaW4gYWxsIHRoZSBwcm9wZXIKKyAgICAgICAg
cGxhY2VzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL211dGF0aW9uLWxpc3RlbmVyLmh0bWwK
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6On5KU011dGF0aW9uTGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6Omlzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkxp
c3RlbmVyOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6
c2V0V3JhcHBlcik6CisgICAgICAgIEpTTXV0YXRpb25MaXN0ZW5lciBpcyB2ZXJ5IHNpbWlsYXIg
dG8gSlNFdmVudExpc3RlbmVyLAorICAgICAgICB3aXRoIGEgZmV3IHNpbXBsaWZpY2F0aW9ucy4g
IEl0cyByZWFzb24gZm9yIGV4aXN0aW5nCisgICAgICAgIGlzIHRoYXQgTm9kZS53ZWJraXRBZGRN
dXRhdGlvbkxpc3RlbmVyIG5lZWRzIHRvIGJlaGF2ZQorICAgICAgICBsaWtlIGFkZEV2ZW50TGlz
dGVuZXIsIGluIHRoYXQgZHVwbGljYXRlIGFkZGl0aW9ucyBhcmUKKyAgICAgICAgaWdub3JlZC4g
VGhpcyByZXF1aXJlcyB0aGUgb3BlcmF0b3I9PSBtZXRob2QuIFdlIGFsc28KKyAgICAgICAgd2Fu
dCB0byBhdm9pZCBkaXNwYXRjaGluZyB0aGUgc2FtZSBNdXRhdGlvblJlY29yZAorICAgICAgICBt
b3JlIHRoYW4gb25jZSB0byBhIGdpdmVuIGxpc3RlbmVyLCBhbmQgZm9yIHRoaXMKKyAgICAgICAg
d2UgdXNlIGEgSGFzaE1hcCwgdGh1cyB0aGUgfGhhc2h8IG1ldGhvZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlTXV0YXRp
b25MaXN0ZW5lckNhbGwpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZXRJ
bnRlcm5hbEZpZWxkcyk6CisgICAgICAgIChHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJDYWxsYmFj
ayk6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTmF0aXZl
VG9KU1ZhbHVlKToKKyAgICAgICAgU2luY2UgTXV0YXRpb25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBh
cmUgY3VzdG9tLCBzbworICAgICAgICBtdXN0IGJlIG11dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9u
IGFuZCByZW1vdmFsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlv
bkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVu
ZXI6OlY4TXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlv
bkxpc3RlbmVyOjp3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9zZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpoYXNoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9u
TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpnZXRM
aXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVy
TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lck1h
bmFnZXI6OmZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5l
ck1hbmFnZXI6OmNsZWFyV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlz
dGVuZXJNYW5hZ2VyOjpkb0ZpbmRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRp
b25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICBUaGUgVjgg
ZXF1aXZhbGVudHMgb2YgdGhlIEpTTXV0YXRpb25MaXN0ZW5lciBhYm92ZS4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lk
Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oOgorICAgICAgICBH
ZW5lcmFsaXplZCBpbnZva2VDYWxsYmFjayB0byBtYWtlIGl0IHN1aXQgdGhlIHB1cnBvc2VzIG9m
CisgICAgICAgIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQuCisgICAgICAgICogZG9t
L0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6ZGlz
cGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgRGlzcGF0Y2ggImNoYXJhY3RlcmRhdGEiIG11
dGF0aW9ucy4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgRGlzcGF0Y2ggImNoaWxkbGlzdCIg
bXV0YXRpb25zLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptdXRhdGlvblRhcmdldERhdGEp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6ZW5zdXJlTXV0
YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAg
RGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6bXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3Vy
ZU11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25MaXN0ZW5lcjo6fk11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGRv
bS9NdXRhdGlvbkxpc3RlbmVyLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL011dGF0aW9uUmVj
b3JkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRl
Q2hpbGRsaXN0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3Jl
YXRlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6
Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVGbGFnVG9OYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6dGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjppbnNlcnRlZE5vZGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJl
Y29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpuZXdW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6dHlwZUZsYWcpOgorICAg
ICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5pZGw6IEFkZGVkLgorICAgICAgICBNdXRhdGlvblJl
Y29yZHMgYXJlIGFuYWxvZ291cyB0byBFdmVudHM6IHRoZXkgaG9sZCBkYXRhCisgICAgICAgIGFi
b3V0IGEgc2luZ2xlIG11dGF0aW9uLgorICAgICAgICAqIGRvbS9NdXRhdGlvblNjb3BlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZTo6
Y2hpbGRBZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25T
Y29wZTo6d2lsbFJlbW92ZUNoaWxkKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25TY29wZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpz
cGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRBZGRNdXRhdGlvbkxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0Ojp3ZWJraXRSZW1vdmVNdXRh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVl
TXV0YXRpb24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBBZGRlZC4KKyAgICAg
ICAgTXV0YXRpb25UYXJnZXQgaXMgYW5hbG9nb3VzIHRvIEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBt
aXhpbiBmb3IKKyAgICAgICAgRG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQsIGFuZCBFbGVtZW50
LgorICAgICAgICAqIGRvbS9NdXRhdGlvblRhcmdldERhdGEuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6Ok11dGF0aW9uVGFyZ2V0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvblRhcmdldERhdGE6On5NdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUgdGhh
dCB0aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGNo
YW5nZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0byBk
ZWFsIHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRpbWUt
dG8tcnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KIAogICAgICAgICBEdW1wUmVuZGVyVHJlZSBzaG91bGQgYmVnaW4gZWFjaCB0ZXN0
IHdpdGggYW4gZW1wdHkgY29va2llIHN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5k
ZXggNjAyZjg3Y2M3NWJmN2M4NmNjN2FkNTQ4OTZmNDdmZTEwNGJmNWQ1Ny4uMjQ1OTI5MTM1ZDll
YTNkMDNiZGU3NTVjMzJlYTY1ODVlYjc3YjcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cApAQCAtMjQ1LDYgKzI0NSw4IEBACiAjaW5jbHVkZSAiSlNNZXRhZGF0YUNhbGxiYWNrLmNwcCIK
ICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTTXV0YXRpb25FdmVudC5j
cHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvbkxpc3RlbmVyLmNwcCIKKyNpbmNsdWRlICJKU011dGF0
aW9uUmVjb3JkLmNwcCIKICNpbmNsdWRlICJKU05hbWVkTm9kZU1hcC5jcHAiCiAjaW5jbHVkZSAi
SlNOYXZpZ2F0b3IuY3BwIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3Bw
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDA2NjU4ZjkzZDhjZWFhNDgwZDhm
YjdjY2ZkMjVkYWNkNTUyODI1ZS4uNGVlNzIwMjU1ODZmMTdhNTZiODdjNDcxNjhhZTAzMDhiNTI3
ZDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMTcsNiArMzE3LDggQEAg
RE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGFDYWxsYmFjayBcCiAgICAgTW91c2VFdmVudCBc
CiAgICAgTXV0YXRpb25FdmVudCBcCisgICAgTXV0YXRpb25MaXN0ZW5lciBcCisgICAgTXV0YXRp
b25SZWNvcmQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAgICAgTmF2aWdhdG9yIFwKICAgICBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvciBcCkBAIC01NzQsNyArNTc2LDcgQEAgRE9NX0NMQVNTRVMgPSBc
CiAKIC5QSE9OWSA6IGFsbAogCi1KU19ET01fSEVBREVSUz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVyLmggSlNFdmVudFRhcmdldC5oLCQoRE9N
X0NMQVNTRVM6JT1KUyUuaCkpCitKU19ET01fSEVBREVSUz0kKGZpbHRlci1vdXQgSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmggSlNFdmVudExpc3RlbmVyLmggSlNFdmVudFRhcmdldC5oIEpTTXV0
YXRpb25MaXN0ZW5lci5oLCQoRE9NX0NMQVNTRVM6JT1KUyUuaCkpCiAKIFdFQl9ET01fSEVBREVS
UyA6PQogaWZlcSAoJChmaW5kc3RyaW5nIEJVSUxESU5HX1dYLCQoRkVBVFVSRV9ERUZJTkVTKSks
IEJVSUxESU5HX1dYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCAx
NjI0MGRjMzA0OTFkMjdmYmQ5NTgzZTk5YjE5MGQwNjcxMWJkZDZlLi43OWRjNWM4YmMwNjFmMWM3
NGQ3NmU1ODY1YmY5MmQwYmYxMWJlMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cApAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAgICAjIEN1c3RvbSBiaW5kaW5ncyBpbiBi
aW5kaW5ncy92OC9jdXN0b20gZXhpc3QgZm9yIHRoZXNlLgogICAgICAgJy4uL2RvbS9FdmVudExp
c3RlbmVyLmlkbCcsCiAgICAgICAnLi4vZG9tL0V2ZW50VGFyZ2V0LmlkbCcsCisgICAgICAnLi4v
ZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsJywKICAgICAgICcuLi9odG1sL1ZvaWRDYWxsYmFjay5p
ZGwnLAogCiAgICAgICAjIEJpbmRpbmdzIHdpdGggY3VzdG9tIE9iamVjdGl2ZS1DIGltcGxlbWVu
dGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmZDRjYjhkNjE2MTVkZjU0N2MxNTg3YTFhMTE4
YTEzMzJjMzcxOWQ0Li45YmExN2EyODNmYmZmNDNjNDAzOGEwNjAxMzc1MGMwYzZiMzM4MGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0xMTgyLDYgKzExODIsOCBAQAogICAgICAgICAgICAgJ2RvbS9N
ZXNzYWdlUG9ydC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Nb3VzZUV2ZW50LmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL011dGF0aW9uRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdkb20vTXV0YXRp
b25MaXN0ZW5lci5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5pZGwnLAog
ICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaWRsJywKICAgICAgICAgICAgICdkb20vTm9k
ZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlRmlsdGVyLmlkbCcsCkBAIC0yMDg0LDYgKzIw
ODYsOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAnLApAQCAtNTMwMCw2ICs1MzA1
LDE0IEBACiAgICAgICAgICAgICAnZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL011dGF0aW9uRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25F
dmVudC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25MaXN0ZW5lci5oJywKKyAgICAgICAg
ICAgICdkb20vTXV0YXRpb25SZWNvcmQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25S
ZWNvcmQuaCcsCisgICAgICAgICAgICAnZG9tL011dGF0aW9uU2NvcGUuY3BwJywKKyAgICAgICAg
ICAgICdkb20vTXV0YXRpb25TY29wZS5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJn
ZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuaCcsCisgICAgICAgICAg
ICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKICAgICAgICAgICAgICdkb20vTmFtZU5vZGVM
aXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL05hbWVOb2RlTGlzdC5oJywKICAgICAgICAgICAg
ICdkb20vTmFtZWROb2RlTWFwLmNwcCcsCkBAIC01MzQxLDYgKzUzNTQsNyBAQAogICAgICAgICAg
ICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURvY3Vt
ZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5j
cHAnLAorICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oJywKICAg
ICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCcsCiAgICAgICAg
ICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vU2NvcGVk
RXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1MGM3YTBmZWJiOWVjMGI1M2QwMGMzMzY4M2QyYjQ0YzQxNzM5
MmIxLi5kY2U1NmUzYjQ3YmQyOTU5YzhjM2Y4OTYwYjI0NzYwNDgwMWVmZWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDIy
LDkgKzU0MjIsMTkgQEAKIAkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmlj
c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVE
NEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1RTlCNjc3MTA2OTdFMTMwMEM3
QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RTlCNjc2MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4MTZG
IC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmggKi87IH07CisJCUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011
dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAq
LzsgfTsKKwkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzFEQTM5MTNF
MzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi87IH07CisJCUM2NzJBMkQzMTNG
MzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2NzJBMkQyMTNGMzRDNEEwMDk0MjNDRSAvKiBN
dXRhdGlvblRhcmdldERhdGEuaCAqLzsgfTsKKwkJQzY5NkEwODMxNDBFRUMyMjAwMURBQTUyIC8q
IE11dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzY5NkEwODExNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuY3BwICov
OyB9OworCQlDNjk2QTA4NDE0MEVFQzIyMDAxREFBNTIgLyogTXV0YXRpb25TY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY5NkEwODIxNDBFRUMy
MjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAw
MEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBB
NTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OwogCQlDNkY0MTA0NzEzMEM2RTg5MDAzOTNE
RTQgLyogRW50cnlCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovOyB9
OworCQlDNkY2NzE0RTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDAxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLzsgfTsKKwkJQzZGNjcxNTQxM0UzNUU1
RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blRhcmdldC5jcHAgKi87IH07CisJCUM2RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzZGNjcxNUMxM0UzNUVCMjAw
REUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE1QTEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRh
dGlvbkxpc3RlbmVyLmNwcCAqLzsgfTsKKwkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpT
TXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzZGNjcxNUIxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5o
ICovOyB9OwogCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0Ix
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAqLzsgfTsKIAkJQ0EzQkY2N0Ux
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEyMTcyLDkgKzEyMTgyLDI0IEBACiAJCUM1RDRBQTc4MTE2QkFGQjYwMDY5
Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2x5cGhNZXRyaWNzTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1RTlC
Njc2MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYg
LyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25SZWNvcmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzOTEzRTM3MTQ5MDA1NThBRTkgLyog
SlNNdXRhdGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011
dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NzJBMkQyMTNG
MzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlvblRhcmdldERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTXV0YXRpb25UYXJnZXREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUM2OTZBMDgxMTQwRUVDMjIwMDFEQUE1MiAvKiBNdXRhdGlvblNjb3BlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9uU2NvcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjk2QTA4MjE0MEVFQzIyMDAxREFBNTIgLyog
TXV0YXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlv
blNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUQzMDlBQTI4MkUw
MDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9k
aWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2UuY3BwOyBwYXRoID0gZmlsZWFwaS9FbnRy
eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEzRTEzRTM1RTVF
MDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvbkxpc3RlbmVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlvbkxpc3RlbmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzZGNjcxNDAxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9uUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDExM0UzNUU1RTAwREUzQjlD
IC8qIE11dGF0aW9uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11
dGF0aW9uUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQyMTNF
MzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gTXV0YXRpb25SZWNvcmQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJn
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNEIxM0UzNUU1RTAwREUzQjlDIC8q
IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUM2RjY3MTVBMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNdXRhdGlvbkxpc3Rl
bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNUIxM0UzNUVCMjAw
REUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9s
bEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1h
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlE
MzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNj
cmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzIwNiw2ICsxMzIzMSw3
IEBACiAJCQkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRBIC8qIEZpbGVBUEkgKi8sCiAJCQkJQTgz
Qjc5MDgwQ0NBRkYyQjAwMEIwODI1IC8qIEhUTUwgKi8sCiAJCQkJMUM1RkFFQ0EwRENGRDhDOTAw
RDU4Rjc4IC8qIEluc3BlY3RvciAqLywKKwkJCQlDNjcxREE0NDEzRTM3MTY4MDA1NThBRTkgLyog
TXV0YXRpb24gKi8sCiAJCQkJMzM1MDNDOUMxMDE3OUE5QTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlv
bnMgKi8sCiAJCQkJMUFDMjI2MDIwREI2OUVBNzAwODlCNjY5IC8qIE9mZmxpbmUgKi8sCiAJCQkJ
QTlEMjQ3RjkwRDc1N0U0MTAwRkRGOTU5IC8qIFBsdWdpbnMgKi8sCkBAIC0xNTQ1MSw2ICsxNTQ3
Nyw3IEBACiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0MzA1IC8qIEV2ZW50cyAqLywKIAkJCQk4
NUM1NkQwMzBBQThCQUE3MDBEOTU3NTUgLyogSFRNTCAqLywKIAkJCQk4NUU3MTEzRDBBQzVENEEx
MDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCisJCQkJQzY3MURBNUQxM0UzNzFCOTAwNTU4QUU5IC8q
IE11dGF0aW9uICovLAogCQkJCTg1MzhGMDU3MEFENzIyQjkwMDZBODFEMSAvKiBSYW5nZXMgKi8s
CiAJCQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8qIFN0eWxlU2hlZXRzICovLAogCQkJCTg1
QTBGOThFMEFDNzE2RjQwMDE2MUZEQyAvKiBTVkcgKi8sCkBAIC0xODU2NSw2ICsxODU5Miw4IEBA
CiAJCQkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovLAog
CQkJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3Bw
ICovLAogCQkJCThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3Rh
dGUuaCAqLywKKwkJCQlDNkY2NzE1QTEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxpc3Rl
bmVyLmNwcCAqLywKKwkJCQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJOTNCNzBENTAwOUVCMEM3QzAwOUQ4NDY4IC8qIEpT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovLAogCQkJCTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQy
MyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCkBAIC0xOTIyNCw2ICsxOTI1MywyMiBA
QAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDNjcxREE0NDEz
RTM3MTY4MDA1NThBRTkgLyogTXV0YXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUM2NzFEQTM4MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9u
UmVjb3JkLmNwcCAqLywKKwkJCQlDNjcxREEzOTEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlv
blJlY29yZC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBNdXRhdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCUM2NzFEQTVEMTNFMzcxQjkwMDU1OEFFOSAvKiBNdXRhdGlv
biAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkpOworCQkJ
bmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5
QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMTk5ODEsNiArMjAwMjYsMTYgQEAKIAkJCQk4NTAzMUIzMzBB
NDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMzQwQTQ0
RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuaCAqLywKIAkJCQk5M0VFQzFGMzA5QzI4Nzc3
MDBDNTE1RDEgLyogTXV0YXRpb25FdmVudC5pZGwgKi8sCisJCQkJQzZGNjcxM0UxM0UzNUU1RTAw
REUzQjlDIC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLywKKwkJCQlDNkY2NzEzRjEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8sCisJCQkJQzZGNjcxNDAxM0UzNUU1RTAw
REUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywKKwkJCQlDNkY2NzE0MTEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKKwkJCQlDNkY2NzE0MjEzRTM1RTVFMDBERTNC
OUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovLAorCQkJCUM2OTZBMDgxMTQwRUVDMjIwMDFEQUE1
MiAvKiBNdXRhdGlvblNjb3BlLmNwcCAqLywKKwkJCQlDNjk2QTA4MjE0MEVFQzIyMDAxREFBNTIg
LyogTXV0YXRpb25TY29wZS5oICovLAorCQkJCUM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBN
dXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0
aW9uVGFyZ2V0RGF0YS5oICovLAogCQkJCUJDRjM0QTM2MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1l
ZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5v
ZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFw
LmlkbCAqLywKQEAgLTIwMDQ1LDYgKzIwMTAwLDcgQEAKIAkJCQlBODREODI3QjExRDMzM0VEMDA5
NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIz
NjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQlD
NkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCAq
LywKIAkJCQlBNzZFNUY3RTEzNUUwRENGMDBBNjk4MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtl
ci5oICovLAogCQkJCTQ5OThBRUM0MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFjay5oICovLAogCQkJCTQ5OThBRUM1MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgKi8sCkBAIC0yMjEwNCw2ICsyMjE2MCw4IEBA
CiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0
YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZGNjcxNUQxM0UzNUVCMjAwREUzQjlD
IC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBM0YxM0Uz
NzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTlEMjQ3RjgwRDc1N0UzNDAwRkRGOTU5IC8qIEpTTmF2aWdhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMUU1NDVFMDEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjQ3NSw2ICsyMjUzMyw4IEBACiAJCQkJOTMz
MDlERkMwOTlFNjQ5MjAwNTZFNTgxIC8qIE1vdmVTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEEwQTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2RjY3MTU1MTNFMzVFNUUwMERFM0I5QyAvKiBN
dXRhdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MkEyRDMxM0YzNEM0QTAwOTQy
M0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjMw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMzQ1MCw2ICsyMzUxMCw3IEBACiAJCQkJRTQ1MzIyQUMxNDBDRTI2
NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgw
MTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEw
QjY5ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzY5NkEwODQxNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjYyNTAsNiArMjYzMTEsMTAgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2
NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlERTc5MDQx
M0YxNkM3RjAwMDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QzZGNjcxNEUxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUM2RjY3MTU0MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblRhcmdldC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDNkY2NzE1QzEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlv
bkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2NzFEQTNFMTNFMzcxNDkwMDU1OEFF
OSAvKiBKU011dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENkYyNTJDMTNG
NUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUNEMTNGOUQ2QzkwMDkw
QjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjYyNjAsNiArMjYzMjUsNyBAQAogCQkJCUJDRTQzODlBMTQwQjAwNzMwMDVFNDM3RSAv
KiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NTMyMkFCMTQw
Q0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIx
MEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzY5NkEwODMxNDBFRUMyMjAwMURBQTUyIC8qIE11dGF0aW9uU2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTJhNjUwNzM4MmJlYzQ3NGQ0NjJjODNjMTI1NTIz
OGUxMzg3ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUg
IkpTTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJNdXRh
dGlvblJlY29yZC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNNdXRh
dGlvbkxpc3RlbmVyOjpKU011dGF0aW9uTGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09i
amVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIDogbV93
cmFwcGVyKCppc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIpCisgICAgLCBtX2lz
b2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKK3sKKyAgICBpZiAod3JhcHBlcikKKyAgICAgICAg
bV9qc0Z1bmN0aW9uLnNldE1heUJlTnVsbCgqbV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCks
IHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCghZnVuY3Rpb24p
OworCit9CisKK0pTTXV0YXRpb25MaXN0ZW5lcjo6fkpTTXV0YXRpb25MaXN0ZW5lcigpCit7Cit9
CisKK3ZvaWQgSlNNdXRhdGlvbkxpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzT3duUHRyPE11dGF0aW9uUmVjb3Jk
VmVjdG9yPiBwb3BNdXRhdGlvbnMpCit7CisgICAgT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9y
PiBtdXRhdGlvbnMgPSBwb3BNdXRhdGlvbnM7CisgICAgQVNTRVJUKG11dGF0aW9ucyk7CisgICAg
QVNTRVJUKCFtdXRhdGlvbnMtPmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cisg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBK
U09iamVjdCoganNGdW5jdGlvbiA9IG1fanNGdW5jdGlvbi5nZXQoKTsKKworICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBzdGF0aWNf
Y2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CisgICAgRnJhbWUqIGZyYW1lID0gd2lu
ZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIC8vIFRoZSB3aW5kb3cgbXVzdCBzdGlsbCBiZSBhY3RpdmUgaW4gaXRzIGZyYW1lLiBTZWUg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkyMT4uCisgICAgLy8g
RklYTUU6IEEgYmV0dGVyIGZpeCBmb3IgdGhpcyBtYXkgYmUgdG8gY2hhbmdlIERPTVdpbmRvdzo6
ZnJhbWUoKSB0byBub3QgcmV0dXJuIGEgZnJhbWUgdGhlIGRldGFjaGVkIHdpbmRvdyB1c2VkIHRv
IGJlIGluLgorICAgIGlmIChmcmFtZS0+ZG9tV2luZG93KCkgIT0gd2luZG93LT5pbXBsKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG90
aGVyIGNvbnRleHRzPworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IGZyYW1lLT5zY3Jp
cHQoKTsKKyAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNWYWx1ZSBo
YW5kbGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImhhbmRsZUV2ZW50IikpOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsRGF0YSk7
CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICBoYW5kbGVFdmVu
dEZ1bmN0aW9uID0gSlNWYWx1ZSgpOworICAgICAgICBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdl
dENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICB9CisKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5
cGVOb25lKSB7CisgICAgICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcm90ZWN0KHRoaXMp
OworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11dGF0aW9uTGlzdDsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgbXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25z
LT5hdChpKS5nZXQoKSkpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Cisg
ICAgICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0
YXRpb25MaXN0KSk7CisKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBn
bG9iYWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmpl
Y3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworCisg
ICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgaWYgKGhh
bmRsZUV2ZW50RnVuY3Rpb24pCisgICAgICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc0Z1bmN0
aW9uLCBhcmdzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRShhZGFtayk6
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgdGFyZ2V0IHNob3VsZCBiZTsgcHJvYmFibHkgdGhlCisgICAg
ICAgICAgICAvLyBEb2N1bWVudCBvciBET01XaW5kb3c/CisgICAgICAgICAgICBKU1ZhbHVlIGN1
cnJlbnRUYXJnZXQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdCgwKS0+
dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMs
IGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwgYXJncyk7Cisg
ICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKKyAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmVwb3J0Q3VycmVu
dEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisKK2Jvb2wgSlNNdXRhdGlvbkxpc3RlbmVyOjpv
cGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXImIGxpc3RlbmVyKQoreworICAgIGNvbnN0
IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlvbkxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3RlbmVyKTsKKyAgICByZXR1cm4gbV9qc0Z1bmN0
aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9qc0Z1bmN0aW9uOworfQorCit1bnNpZ25lZCBK
U011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQoreworICAgIHJldHVybiBEZWZhdWx0SGFzaDxKU0M6
OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1bmN0aW9uLmdldCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZhMTZjOWYzNzc1ZmMzMmE5OWE2ZWU3YzkyZDc1
OGI3YjJkZTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBKU011dGF0aW9uTGlzdGVuZXJfaAorI2Rl
ZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5o
IgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4K
KyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitj
bGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJsaWMgTXV0YXRpb25MaXN0ZW5lciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNNdXRhdGlvbkxpc3RlbmVyPiBjcmVhdGUoSlND
OjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJX
b3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlvbkxpc3RlbmVyKCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcik7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29y
bGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29ybGQuZ2V0KCk7IH0KKworICAgIEpTQzo6
SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNP
YmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFwcGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVy
LCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPE11dGF0aW9uUmVjb3JkVmVjdG9yPik7CisK
K3ByaXZhdGU6CisgICAgSlNNdXRhdGlvbkxpc3RlbmVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9u
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQp
OworCisgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiBtX2pzRnVu
Y3Rpb247CisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOwor
CisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNNdXRhdGlvbkxpc3RlbmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggZGVhYTVmODgwMDU5ZjkzNDJmMmQ5NThiZDk4ODI4YTFmNmVlMGJkNS4uYzMyOThlYmIz
OTgwNzYxOTYwM2MzODc0ZWE0MGNjMmJmZjZhYzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE5MSw2ICsxOTEsNTAg
QEAgRU5ECiAgICAgcmV0dXJuIEBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJJbXBsOwogfQogCitzdWIg
R2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbAoreworICAgIG15ICRmdW5jdGlvbk5hbWUgPSBz
aGlmdDsKKyAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5nID0gKCRmdW5jdGlvbk5hbWUgZXEgImFk
ZCIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkdHlwZU1hc2tIYW5kbGluZyA9ICgkZnVuY3Rp
b25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVNYXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1
bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRp
bXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3JkLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3si
SlNNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7CisKKyAgICBteSBAR2VuZXJhdGVNdXRhdGlvbkxp
c3RlbmVySW1wbCA9ICgpOworCisgICAgaWYgKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpIHsKKyAg
ICAgICAgcHVzaChAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVySW1wbCwgPDxFTkQpOworICAgIEpT
VmFsdWUganNUeXBlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIGlmICghanNUeXBlcy5pc09i
amVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBhc09iamVjdChqc1R5cGVzKTsKKyAgICB1
aW50OF90IHR5cGVNYXNrID0gMDsKKyAgICBKU1ZhbHVlIGpzQ2hpbGRsaXN0ID0ganNUeXBlc09i
amVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNoaWxkbGlzdCIpKTsKKyAgICBpZiAo
anNDaGlsZGxpc3QuaXNCb29sZWFuKCkgJiYganNDaGlsZGxpc3QuZ2V0Qm9vbGVhbigpKQorICAg
ICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29yZDo6Q2hpbGRsaXN0RmxhZzsKKyAgICBKU1Zh
bHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRyaWJ1dGUuaXNCb29sZWFuKCkgJiYganNB
dHRyaWJ1dGUuZ2V0Qm9vbGVhbigpKQorICAgICAgICB0eXBlTWFzayB8PSBNdXRhdGlvblJlY29y
ZDo6QXR0cmlidXRlRmxhZzsKKyAgICBKU1ZhbHVlIGpzQ2hhcmFjdGVyZGF0YSA9IGpzVHlwZXNP
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGFyYWN0ZXJkYXRhIikpOworICAg
IGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkgJiYganNDaGFyYWN0ZXJkYXRhLmdldEJv
b2xlYW4oKSkKKyAgICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRh
dGFGbGFnOworRU5ECisgICAgfQorCisgICAgcHVzaChAR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVy
SW1wbCwgPDxFTkQpOworICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpbXAtPiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9
TXV0YXRpb25MaXN0ZW5lcihKU011dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIGNhc3RlZFRoaXMsIGN1cnJlbnRXb3JsZChleGVjKSkke3Bhc3NSZWZQdHJIYW5kbGlu
Z30ke3R5cGVNYXNrSGFuZGxpbmd9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworRU5ECisgICAgcmV0dXJuIEBHZW5lcmF0ZU11dGF0aW9uTGlzdGVuZXJJbXBs
OworfQorCisKICMgUGFyYW1zOiAnaWRsRG9jdW1lbnQnIHN0cnVjdAogc3ViIEdlbmVyYXRlTW9k
dWxlCiB7CkBAIC0yMDI2LDYgKzIwNzAsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0
ZW5lckNhbGwoJGNsYXNzTmFtZSwgImFkZCIpKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpIHsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5l
ckNhbGwoJGNsYXNzTmFtZSwgInJlbW92ZSIpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lciIp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlTXV0YXRp
b25MaXN0ZW5lckNhbGwoImFkZCIpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lciIpIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlTXV0YXRpb25M
aXN0ZW5lckNhbGwoInJlbW92ZSIpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBteSAkYXJnc0luZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICAgbXkg
JHBhcmFtSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmM2M2NDQxOGY3OTFmYzcwZDdmNzFkNjliOGU4OGYy
M2YzNmQ2YTIwLi5hNDc2NGQ5ODc2ZDI3NTdmMmY0NmU1NTY0MDkyYWIyMDI1YWQ3ZGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtNDg0LDYgKzQ4NCwxMiBAQCBzdWIgR2V0SW50ZXJuYWxGaWVsZHMKICAgICAgICAgcHVz
aChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJldmVudExpc3RlbmVyQ2FjaGVJbmRleCIpOwogICAg
IH0KIAorICAgIGlmIChJc1N1YlR5cGUoJGRhdGFOb2RlLCAiRWxlbWVudCIpIHx8CisgICAgICAg
IElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpIHx8CisgICAgICAgICRuYW1lIGVxICJE
b2N1bWVudEZyYWdtZW50IikgeworICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywg
Im11dGF0aW9uTGlzdGVuZXJDYWNoZUluZGV4Iik7CisgICAgfQorCiAgICAgaWYgKCRuYW1lIGVx
ICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZW50
ZXJlZElzb2xhdGVkV29ybGRJbmRleCIpOwogICAgIH0KQEAgLTExNDAsNiArMTE0Niw1MyBAQCBF
TkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2sKK3sKKyAg
ICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbk5hbWUgPSBzaGlm
dDsKKyAgICBteSAkbG9va3VwVHlwZSA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICJPckNy
ZWF0ZSIgOiAiT25seSI7CisgICAgbXkgJHBhc3NSZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25O
YW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7CisgICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lB
Y3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiY3JlYXRlIiA6ICJyZW1vdmUiOwor
ICAgIG15ICR0eXBlTWFza0FyZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIsIHR5cGVN
YXNrIiA6ICIiOworICAgIG15ICRwcmVmaXhlZEZ1bmN0aW9uTmFtZSA9ICJ3ZWJraXQiIC4gdWNm
aXJzdCgkZnVuY3Rpb25OYW1lKTsKKworICAgICRpbXBsSW5jbHVkZXN7Ik11dGF0aW9uUmVjb3Jk
LmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhNdXRhdGlvbkxpc3RlbmVyLmgifSA9IDE7
CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFz
c05hbWV9LiR7cHJlZml4ZWRGdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CisgICAgUmVm
UHRyPE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlv
bkxpc3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZCR7bG9va3VwVHlwZX0pOworICAgIGlmICgh
bGlzdGVuZXIpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CitFTkQKKyAgICBpZiAo
JGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCA8PEVORCk7CisgICAgdWludDhfdCB0eXBlTWFzayA9IDA7CisgICAgaWYgKCFpc1VuZGVmaW5l
ZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzFdKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhDaGlsZGxpc3QgPSBvYmpl
Y3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlzdCIpKTsKKyAgICAgICAgaWYgKCF2OENo
aWxkbGlzdC5Jc0VtcHR5KCkgJiYgdjhDaGlsZGxpc3QtPkJvb2xlYW5WYWx1ZSgpKQorICAgICAg
ICAgICAgdHlwZU1hc2sgfD0gTXV0YXRpb25SZWNvcmQ6OkNoaWxkbGlzdEZsYWc7CisgICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmlu
Zzo6TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgp
ICYmIHY4QXR0cmlidXRlLT5Cb29sZWFuVmFsdWUoKSkKKyAgICAgICAgICAgIHR5cGVNYXNrIHw9
IE11dGF0aW9uUmVjb3JkOjpBdHRyaWJ1dGVGbGFnOworICAgICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoYXJh
Y3RlcmRhdGEiKSk7CisgICAgICAgIGlmICghdjhDaGFyYWN0ZXJkYXRhLklzRW1wdHkoKSAmJiB2
OENoYXJhY3RlcmRhdGEtPkJvb2xlYW5WYWx1ZSgpKQorICAgICAgICAgICAgdHlwZU1hc2sgfD0g
TXV0YXRpb25SZWNvcmQ6OkNoYXJhY3RlcmRhdGFGbGFnOworICAgIH0KK0VORAorICAgIH0KKyAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgVjgke2ltcGxDbGFzc05hbWV9
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtwcmVmaXhlZEZ1bmN0aW9uTmFtZX1NdXRhdGlv
bkxpc3RlbmVyKGxpc3RlbmVyJHtwYXNzUmVmUHRySGFuZGxpbmd9JHt0eXBlTWFza0FyZ30pOwor
ICAgICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVy
KCksIGFyZ3NbMF0sIFY4JHtpbXBsQ2xhc3NOYW1lfTo6bXV0YXRpb25MaXN0ZW5lckNhY2hlSW5k
ZXgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK0VORAorfQorCiBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiB7CiAgICAgbXkgJG51bVBhcmFtZXRlcnMg
PSBzaGlmdDsKQEAgLTEyNDUsNiArMTI5OCwxNCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxi
YWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoJG5hbWUgZXEgIndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIiKSB7CisgICAgICAgIEdlbmVyYXRlTXV0YXRpb25MaXN0ZW5lckNh
bGxiYWNrKCRpbXBsQ2xhc3NOYW1lLCAiYWRkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVs
c2lmICgkbmFtZSBlcSAid2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lciIpIHsKKyAgICAgICAg
R2VuZXJhdGVNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2soJGltcGxDbGFzc05hbWUsICJyZW1vdmUi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
IDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0zMTYwLDcgKzMyMjEsOCBAQCBteSAlbm9u
X3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0lEQktleScgPT4gMSwKICAgICAnT3B0aW9uc09iamVj
dCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKLSAgICAnTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcicg
PT4gMQorICAgICdNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJyA9PiAxLAorICAgICdNdXRhdGlvbkxp
c3RlbmVyJyA9PiAxCiApOwogCiAKQEAgLTMyNjEsNiArMzMyMywxMSBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlCiAgICAgICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
c3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3Rl
bmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgOiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4odjg6Ok51bGwoKSkiOwogICAgIH0KIAorICAgIGlmICgkdHlwZSBlcSAiTXV0YXRp
b25MaXN0ZW5lciIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siVjhNdXRhdGlvbkxpc3RlbmVy
LmgifSA9IDE7CisgICAgICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oc3RhdGljX2Nhc3Q8VjhNdXRhdGlvbkxpc3RlbmVyKj4oJHt2YWx1ZX0pLT5nZXRMaXN0ZW5l
ck9iamVjdCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSI7CisgICAgfQor
CiAgICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CiAgICAgICAgIHJldHVybiAiJHZhbHVlLT5kZXNl
cmlhbGl6ZSgpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
CmluZGV4IDA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFlN2Y1MmQwN2UzZGY4MWMuLjg2MGYwMTNj
NzA1NTc2OGNjYjFlMTcyZGRlZGM0Y2FiZTZlZGZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2luY2x1ZGUgIlY4
TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiVjhNZXNz
YWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUg
IlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5o
IgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5o
IgpAQCAtNDgxLDYgKzQ4MywxOSBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3Jh
cHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogI2VuZGlmCiB9
CiAKK1Bhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlv
bkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBMaXN0ZW5lckxvb2t1cFR5cGUg
bG9va3VwKQoreworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29u
dGV4dDo6R2V0Q3VycmVudCgpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKGxvb2t1cCA9PSBMaXN0ZW5lckZpbmRPbmx5KQorICAgICAgICBy
ZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZFdyYXBwZXIodmFsdWUpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsUHJvdG90eXBlID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChjb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOworICAgIGlm
IChnbG9iYWxPYmplY3RQcm90b3R5cGVJc0RPTVdpbmRvdyhnbG9iYWxQcm90b3R5cGUpKQorICAg
ICAgICByZXR1cm4gVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZmluZE9yQ3JlYXRlV3JhcHBl
cih2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZiBFTkFCTEUoWFBBVEgpCiAvLyBYUGF0
aC1yZWxhdGVkIHV0aWxpdGllcwogUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gVjhET01XcmFwcGVy
OjpnZXRYUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWOFByb3h5
KiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXgg
ZWIyMjA1MTcyYjNjOTRiMDhhZTY3ZjU1NGIyMGFlZTI4ODE0OWY5MC4uOWZmMDc1ZGJiOTQ5MDE4
MGUxZjE0NmM1YzE3NTFkYTk3YTg0ZjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKICAgICBjbGFzcyBGcmFt
ZTsKKyAgICBjbGFzcyBNdXRhdGlvbkxpc3RlbmVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xh
c3MgVjhQcm94eTsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwpAQCAtODksNiArOTAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCopOwogCiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlwZSBs
b29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBnZXRN
dXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBMaXN0ZW5lckxvb2t1cFR5cGUp
OwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAvLyBYUGF0aC1yZWxhdGVkIHV0aWxpdGll
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1l
LmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5MmQxZjY0MDJhMjc0ZjAzZi4uZDNhYmIw
MWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCkBAIC0zOSw2ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVjdFByb3RvdHlwZSkgXAogICAgIFYobGlz
dGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCisgICAgVihtdXRhdGlvbkxpc3Rl
bmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAgIFYoZGV2dG9vbHNJbmplY3RlZFNjcmlw
dCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkMDJmMjBhMDg0ODJk
MDU5NDhjNmQ2OWEwYWNkNGVjNDBlMjlhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwxMTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlv
bkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIKKyNpbmNsdWRlICJWOE11
dGF0aW9uUmVjb3JkLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVjhNdXRhdGlvbkxpc3RlbmVy
OjpWOE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25z
dCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKKyAgICA6IG1fbGlzdGVuZXIodjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhsaXN0ZW5lcikpCisgICAgLCBtX3dvcmxkQ29u
dGV4dCh3b3JsZENvbnRleHQpCit7CisgICAgbV9saXN0ZW5lci5NYWtlV2Vhayh0aGlzLCAmd2Vh
a011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayk7Cit9CisKK1Y4TXV0YXRpb25MaXN0ZW5lcjo6flY4
TXV0YXRpb25MaXN0ZW5lcigpCit7CisgICAgaWYgKCFtX2xpc3RlbmVyLklzRW1wdHkoKSkgewor
ICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIFY4TXV0YXRpb25M
aXN0ZW5lck1hbmFnZXI6OmNsZWFyV3JhcHBlcihsaXN0ZW5lcik7CisgICAgfQorICAgIGRpc3Bv
c2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011
dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBw
YXJhbWV0ZXIpCit7CisgICAgVjhNdXRhdGlvbkxpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PFY4TXV0YXRpb25MaXN0ZW5lcio+KHBhcmFtZXRlcik7CisgICAgbGlzdGVuZXItPmRpc3Bv
c2VMaXN0ZW5lck9iamVjdCgpOworfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5lcjo6ZGlzcG9z
ZUxpc3RlbmVyT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fbGlzdGVuZXIuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fbGlzdGVuZXIuRGlzcG9zZSgpOworICAgICAgICBtX2xpc3RlbmVyLkNsZWFyKCk7
CisgICAgfQorfQorCit2b2lkIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rv
cj4gcG9wTXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4gbXV0
YXRpb25zID0gcG9wTXV0YXRpb25zOworCisgICAgLy8gRG9uJ3QgcmVlbnRlciBWOCBpZiBleGVj
dXRpb24gd2FzIHRlcm1pbmF0ZWQgaW4gdGhpcyBpbnN0YW5jZSBvZiBWOC4KKyAgICBpZiAoY29u
dGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQobXV0YXRpb25zKTsKKyAgICBBU1NFUlQoIW11dGF0aW9ucy0+aXNFbXB0eSgpKTsKKwor
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29udGV4dCwgbV93b3JsZENvbnRleHQpOwor
ICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6
Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiBqc011dGF0aW9ucyA9IHY4OjpBcnJheTo6TmV3KG11dGF0aW9ucy0+c2l6ZSgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+c2l6ZSgpOyArK2kpCisgICAgICAgIGpz
TXV0YXRpb25zLT5TZXQodjg6OkludGVnZXI6Ok5ldyhpKSwgdG9WOChtdXRhdGlvbnMtPmF0KGkp
LmdldCgpKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAg
ICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVu
ZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJvb2wgaWdub3JlZFJldHVyblZhbHVlID0g
ZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVuZXIsIDEsIGFyZ3YsIGlnbm9yZWRSZXR1
cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVkIFY4TXV0YXRpb25MaXN0ZW5lcjo6aGFz
aCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4TXV0YXRpb25MaXN0ZW5lcio+OjpIYXNo
OjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjOTJl
ODQyZWE1NjNkMTZlOTM5M2U4YjIxOTVmYWMzYzdlOGE2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBWOE11dGF0aW9uTGlz
dGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIldvcmxk
Q29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIE11dGF0aW9uTGlzdGVuZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGNyZWF0
ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRs
ZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11
dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29udGV4dCkpOworICAgIH0KKyAgICB2aXJ0
dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rv
cj4pOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVuZXIm
IG90aGVyKSB7IHJldHVybiB0aGlzID09ICZvdGhlcjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQg
aGFzaCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdldExpc3RlbmVyT2JqZWN0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD46Ok5ldyhtX2xpc3Rl
bmVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVjhNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJik7CisgICAg
c3RhdGljIHZvaWQgd2Vha011dGF0aW9uTGlzdGVuZXJDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2
ODo6VmFsdWU+LCB2b2lkKik7CisgICAgdm9pZCBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKKwor
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fbGlzdGVuZXI7CisgICAgV29ybGRDb250
ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVjhNdXRhdGlvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YTFiYjUxNWM4ZDYzNmMwODdiNzVlNzgyNjM4MTAzMjI3MTQ5ODk3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5o
CkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorI2Rl
ZmluZSBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKKworI2luY2x1ZGUgIlY4SGlkZGVuUHJv
cGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRl
IDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gVGhpcyBpcyBhIGNvbnRhaW5lciBmb3IgVjhNdXRhdGlvbkxpc3RlbmVyIG9iamVj
dHMgdGhhdCB1c2VzIGhpZGRlbiBwcm9wZXJ0aWVzIG9mIHY4OjpPYmplY3QgdG8gc3BlZWQgdXAg
bG9va3Vwcy4KK2NsYXNzIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IGZpbmRXcmFwcGVyKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSk7CisgICAgICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZG9GaW5kV3JhcHBlcih2ODo6TG9jYWw8djg6
Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
dXRhdGlvbkxpc3RlbmVyPiBmaW5kT3JDcmVhdGVXcmFwcGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+
KTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGxpc3RlbmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbGlzdGVuZXJPYmplY3QtPkRlbGV0ZUhp
ZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRhdGlvbkxpc3RlbmVyKCkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTXV0YXRpb25MaXN0ZW5lciogZG9GaW5kV3JhcHBl
cih2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHY4
OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGlzdGVuZXIgPSBvYmplY3QtPkdldEhpZGRl
blZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjptdXRhdGlvbkxpc3RlbmVyKCkpOworICAgICAg
ICBpZiAobGlzdGVuZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNdXRhdGlvbkxpc3RlbmVyKj4odjg6OkV4dGVybmFsOjpVbndy
YXAobGlzdGVuZXIpKTsKKyAgICB9Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxNdXRhdGlvbkxp
c3RlbmVyPiBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5D
b250ZXh0KCkpOworICAgIGlmICghdmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh2YWx1ZSk7CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyKiB3cmFwcGVyID0gZG9G
aW5kV3JhcHBlcihvYmplY3QpOworICAgIGlmICh3cmFwcGVyKQorICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiB3cmFwcGVyUHRyID0gVjhNdXRh
dGlvbkxpc3RlbmVyOjpjcmVhdGUob2JqZWN0LCBXb3JsZENvbnRleHRIYW5kbGUoVXNlQ3VycmVu
dFdvcmxkKSk7CisgICAgaWYgKHdyYXBwZXJQdHIpCisgICAgICAgIG9iamVjdC0+U2V0SGlkZGVu
VmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSwgdjg6OkV4dGVy
bmFsOjpXcmFwKHdyYXBwZXJQdHIuZ2V0KCkpKTsKKworICAgIHJldHVybiB3cmFwcGVyUHRyLnJl
bGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhNdXRh
dGlvbkxpc3RlbmVyTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5jcHAKaW5kZXggNGY3ODNiNjE1M2UzNThjMWEzZmI4NzQyMjAwMTA3YjBlMjQ0YjhlNS4u
ODZlNGI0YjBhMjk1MWVhY2VjYmE5ZjUyNjc3NWMzMjhiMzUyMjQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAtNjYsNiArNjYsNyBAQCBWOExvY2Fs
Q29udGV4dDo6flY4TG9jYWxDb250ZXh0KCkKIC8vIEEgdmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUg
dGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9pZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgaW50IGNhY2hlSW5kZXgpCiB7CisgICAgQVNTRVJUKG9iamVjdC0+SW50ZXJuYWxGaWVsZENv
dW50KCkgPiBjYWNoZUluZGV4KTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNoZSA9IG9i
amVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4KTsKICAgICBpZiAoY2FjaGUtPklzTnVs
bCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGNhY2hlID0gdjg6OkFycmF5
OjpOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbVZvaWRDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCmluZGV4IDExZjMwOWI2OTk0YTEwODkwMDJhMTEy
YjVmZjA1OTQ4NzdhZGU5NzkuLmY1Y2YyZGRlYTY0ZWJjNzJkZGUxNWRhNjFlYTM0ZDQ4MTAyYzM4
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bVZvaWRDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcApAQCAtNjMsMTQgKzYzLDE0IEBAIHZvaWQgVjhDdXN0
b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAgICBpbnZva2VDYWxsYmFjayhtX2NhbGxi
YWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Z2V0KCkpOwogfQogCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9v
bCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKK2Jvb2wgaW52b2tlQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wm
IGNhbGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCiB7CiAgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CiAgICAg
ZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICBpZiAoY2FsbGJhY2stPklzRnVuY3Rpb24o
KSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
Ok5ldyh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChjYWxsYmFjaykpOwogICAgIH0gZWxzZSBpZiAoY2Fs
bGJhY2stPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxl
RXZlbnRGdW5jdGlvbiA9IGNhbGxiYWNrLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJoYW5k
bGVFdmVudCIpKTsKICAgICAgICAgaWYgKGhhbmRsZUV2ZW50RnVuY3Rpb24tPklzRnVuY3Rpb24o
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bVZvaWRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmgKaW5kZXggOTRiYjc4MjFjNjUzNTc1N2MzNGQ1YTJjYzNjMTAxNTVj
ODU5NTc4Yy4uM2M4MDNjMjIxOWM0YmU4NzBjOTk5MTZkNTBmYzRkOWVkMmEwMmI0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxi
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9p
ZENhbGxiYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFJldHVybnMg
ZmFsc2UgaWYgY2FsbGJhY2sgZmFpbGVkIChudWxsLCB3cm9uZyB0eXBlLCBvciB0aHJldyBleGNl
cHRpb24pLgotYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBj
YWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNh
bGxiYWNrUmV0dXJuVmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNh
bGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2Fs
bGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3NDAx
YzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZlLi5iYjQ2MDRiMjM2Njc5MjJhMTJj
M2FiYWQ3NWE0ZjlmZGVmN2JiZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJN
dXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0x
OTgsNiArMjAwLDEwIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50
KFN0cmluZ0ltcGwqIG9sZERhdGEpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZChkb2N1bWVudCgpLCB0aGlz
KTsKICNlbmRpZgorICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBNdXRhdGlv
blJlY29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMpOworICAgIGlmIChwYXJlbnROb2Rl
KCkgJiYgcGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHRvRWxlbWVudChw
YXJlbnROb2RlKCkpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIG93bmVyRG9jdW1l
bnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRh
OjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggM2VhNDk5MzY5MzU3NDli
MTMxOTJiNzYzNDFkNTA5YjE1MzhlNGMwYy4uNGM3YTBmYjQyMWI4ODM5MTI1YTUyMzRiODFhMjQ0
OWEyYjZkNDBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjcsNiAr
MjcsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgpAQCAtMzUsMTEgKzM3LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5o
IgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xNDEsNiArMTQ1LDggQEAgYm9vbCBD
b250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9k
ZSogcmVmQ2hpbGQsIEV4Y2UKICAgICBpZiAocmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpID09
IG5ld0NoaWxkIHx8IHJlZkNoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0
YXRpb24odGhpcyk7CisKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IHJlZkNoaWxkOwogICAgIFJl
ZlB0cjxOb2RlPiByZWZDaGlsZFByZXZpb3VzU2libGluZyA9IHJlZkNoaWxkLT5wcmV2aW91c1Np
YmxpbmcoKTsKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0
cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0KSB7CkBAIC0yNzIsNiArMjc4LDgg
QEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdD
aGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAorICAgIENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOworCiAg
ICAgUmVmUHRyPE5vZGU+IHByZXYgPSBvbGRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAg
UmVmUHRyPE5vZGU+IG5leHQgPSBvbGRDaGlsZC0+bmV4dFNpYmxpbmcoKTsKIApAQCAtNDAwLDYg
KzQwOCw4IEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZHJlbihDb250YWluZXJOb2RlKiBj
b250YWluZXIpCiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAgICBjb2xsZWN0Tm9kZXMoY29u
dGFpbmVyLCBjaGlsZHJlbik7CiAKKyAgICBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSBt
dXRhdGlvbihjb250YWluZXIpOworCiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyBpdCsrKSB7CiAg
ICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwogICAgICAgICAvLyBmaXJlIHJlbW92ZWQg
ZnJvbSBkb2N1bWVudCBtdXRhdGlvbiBldmVudHMuCkBAIC02MTEsNiArNjIxLDggQEAgYm9vbCBD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNl
cHRpb25Db2RlJiBlYywgYm8KICAgICBpZiAodGFyZ2V0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCisgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0YXRpb24o
dGhpcyk7CisKICAgICAvLyBOb3cgYWN0dWFsbHkgYWRkIHRoZSBjaGlsZChyZW4pCiAgICAgUmVm
UHRyPE5vZGU+IHByZXYgPSBsYXN0Q2hpbGQoKTsKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0
KSB7CkBAIC0xMDk1LDYgKzExMDcsMTEgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2Vy
dGlvbkV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAorICAgIGlm
IChjLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2Nv
cGUgbXV0YXRpb24oYy0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgbXV0YXRpb24uY2hpbGRBZGRl
ZChjLmdldCgpKTsKKyAgICB9CisKICAgICBpZiAoYy0+cGFyZW50Tm9kZSgpICYmIGRvY3VtZW50
LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTU5PREVJTlNFUlRFRF9MSVNURU5FUikpCiAg
ICAgICAgIGMtPmRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CiAK
QEAgLTExMTYsNiArMTEzMywxMSBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2
ZW50cyhOb2RlKiBjaGlsZCkKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0
cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAorICAgIGlmIChjLT5w
YXJlbnROb2RlKCkpIHsKKyAgICAgICAgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUgbXV0
YXRpb24oYy0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92ZUNoaWxk
KGMpOworICAgIH0KKwogICAgIC8vIGRpc3BhdGNoIHByZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50
cwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShE
b2N1bWVudDo6RE9NTk9ERVJFTU9WRURfTElTVEVORVIpKQogICAgICAgICBjLT5kaXNwYXRjaFNj
b3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92
ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBlMzI5ODUyZDBlMGJkMDE0YmFjYTExOTEzODkwYjc5ZmYwZGZlYjVkLi5iYzliNTJjYTE4
ZmJmZmQyM2NlMGMzNzIzNDM5YjNhNWYyOTUyYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5o
IgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCiAjaW5jbHVkZSAiTmV3
WE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTUwOTEsNCArNTA5MiwxMSBAQCBEb2N1bWVudExvYWRl
ciogRG9jdW1lbnQ6OmxvYWRlcigpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAorTXV0
YXRpb25UYXJnZXREYXRhKiBEb2N1bWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKK3sK
KyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXREYXRhKQorICAgICAgICBtX211dGF0aW9uVGFyZ2V0
RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRhcmdldERhdGEpOworICAgIHJldHVybiBtX211
dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAzZTg0NjEyNmVhN2MwNzUwZGFmODAzYmMyZjU1ZTNjNjRhM2I0
NWU0Li5kMTE0YTlmZTNiZGFlMjM3NjdmZGM2ZTdjMzZhYTRhYzEzYWQyYTFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKKyNpbmNsdWRlICJNdXRh
dGlvblRhcmdldC5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpA
QCAtMTAzLDYgKzEwNCw3IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1l
ZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOwogY2xhc3MgTm9k
ZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CkBAIC0yMDYsNyArMjA4
LDcgQEAgZW51bSBQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UgewogCiBlbnVtIFN0eWxlU2VsZWN0
b3JVcGRhdGVGbGFnIHsgUmVjYWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNhbGNTdHlsZSB9
OwogCi1jbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IHsKK2NsYXNzIERvY3VtZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBNdXRhdGlvblRhcmdldCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKICAgICB7CkBAIC0xMTAxLDYgKzExMDMsOSBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0K
IAorICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKSB7
IHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsgfQorICAgIHZpcnR1YWwgTXV0YXRp
b25UYXJnZXREYXRhKiBlbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAK
QEAgLTE0MDksNiArMTQxNCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworCisgICAgT3duUHRy
PE11dGF0aW9uVGFyZ2V0RGF0YT4gbV9tdXRhdGlvblRhcmdldERhdGE7CiB9OwogCiAvLyBQdXQg
dGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVm
aW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKaW5kZXggNWM2ODM4ZWM1ZjVmMDQzNTExOGE4NWY2ZDE0ZjJlYTMwOTAxZDAzNi4u
MTdkOTQzMzBjM2VkNGQ3ZTAzNTRiMDk5MDllNjg3ZjBlYTE0NjdmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCkBAIC0yNDUsNiArMjQ1LDExIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogCiAj
aWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVf
QworICAgICAgICB2b2lkIHdlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0
ZW5lciBsaXN0ZW5lciwgaW4gRE9NT2JqZWN0IHR5cGVzKTsKKyAgICAgICAgdm9pZCB3ZWJraXRS
ZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIpOworI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09C
SkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAg
ICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwogICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYmx1cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCAyM2Q4YzIwNDNlMzhhOGRiMThmMmZjZGVjZGY0
MDJkMzViMWRiYzg2Li4yYWIzNzkyOGRhNTBkODU0Y2QwNTlmYjJhNTEzYTc5Y2ZhYWIzZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5o
IgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgogI2luY2x1ZGUgIk5ld1hNTERvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC05MCw0ICs5MSwxMSBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0
cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRgogI2VuZGlmCiB9CiAKK011
dGF0aW9uVGFyZ2V0RGF0YSogRG9jdW1lbnRGcmFnbWVudDo6ZW5zdXJlTXV0YXRpb25UYXJnZXRE
YXRhKCkKK3sKKyAgICBpZiAoIW1fbXV0YXRpb25UYXJnZXREYXRhKQorICAgICAgICBtX211dGF0
aW9uVGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRhcmdldERhdGEpOworICAgIHJl
dHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3ODRhMTIxYzlhM2JkMDhjODA4YzgyMzYy
YTA0ZmYzMC4uNmVmZDc3MDM0YTU0NjZiODNiYzlkNGQwYjljYTAyNGYyMDllOTUzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0yNiwxMCArMjYsMTQgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudEZyYWdtZW50IDog
cHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworCitjbGFz
cyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBNdXRhdGlv
blRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDEwICs0NiwxNSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVO
YW1lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25U
YXJnZXREYXRhKCkgeyByZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7IH0KKyAgICB2
aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CisKKyAgICBPd25QdHI8TXV0
YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFyZ2V0RGF0YTsKIH07CiAKIH0gLy9uYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAppbmRleCA4ODJiNjJkYjM5
ZWI3ZjJlMDUwNDc4MjA0OTJiN2U5MzYxYThlZGVkLi5iNzViODVmYmQ2ZDI1MjBmZDRjYjZmMGM3
YTY4ZjBmMWJjNzg2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRs
CkBAIC0yNSw2ICsyNSwxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChpbiBET01TdHJp
bmcgc2VsZWN0b3JzKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyNpZiAh
ZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisg
ICAgICAgIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxpc3RlbmVy
IGxpc3RlbmVyLCBpbiBET01PYmplY3QgdHlwZXMpOworICAgICAgICB2b2lkIHdlYmtpdFJlbW92
ZU11dGF0aW9uTGlzdGVuZXIoaW4gTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisjZW5kaWYK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzE2OGUxMmJiNGJkODQ2ODFi
MTVmOGQ1MTc3MTZiYjAzM2QwODllYi4uYTc2NTdmOTcwNDE2Mzc3YjhiODA0ODhmYTkzY2FiNTNk
NjNkZjA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5o
IgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKQEAgLTY5OSw2ICs3MDAsMTAgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1
dGUoKSkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRy
KGRvY3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
IG11dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywg
bG9jYWxOYW1lKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIG93bmVyRG9j
dW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiArNzM3LDEwIEBAIHZvaWQgRWxlbWVu
dDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUsCiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1l
bnQoKSwgdGhpcyk7CiAjZW5kaWYKKworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRp
b24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxv
Y2FsTmFtZSgpKTsKKyAgICBlbnF1ZXVlTXV0YXRpb24obXV0YXRpb24pOworICAgIG93bmVyRG9j
dW1lbnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRy
aWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMjA1Miw0ICsyMDYxLDE0IEBAIFBhc3NS
ZWZQdHI8V2ViS2l0QW5pbWF0aW9uTGlzdD4gRWxlbWVudDo6d2Via2l0R2V0QW5pbWF0aW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIGFuaW1Db250cm9sbGVyLT5hbmltYXRpb25zRm9yUmVuZGVyZXIo
cmVuZGVyZXIoKSk7CiB9CiAKK011dGF0aW9uVGFyZ2V0RGF0YSogRWxlbWVudDo6bXV0YXRpb25U
YXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVEYXRhKCktPm11
dGF0aW9uVGFyZ2V0RGF0YSgpIDogMDsKK30KKworTXV0YXRpb25UYXJnZXREYXRhKiBFbGVtZW50
OjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLT5lbnN1cmVNdXRhdGlvblRhcmdldERhdGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMTkyM2IwNmIwYjA4MjViMTZlYjAxNmI4ZTc0ODEz
MjZlY2JlOGM5Yi4uZTBjOTgxMmQ1NzRkMjE3ODhkZmQ3NWViN2Y3YmU5MGYyN2JlNmJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2lu
Y2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAKQEAgLTQ5
LDcgKzUwLDcgQEAgZW51bSBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgewogICAgIFNwZWxsY2hl
Y2tBdHRyaWJ1dGVEZWZhdWx0CiB9OwogCi1jbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUgeworY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgTXV0
YXRpb25UYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5FbGVt
ZW50KCk7CkBAIC0zODEsNiArMzgyLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbVRyZWUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAorICAgIHZpcnR1
YWwgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlvblRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFs
IE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisKICAgICAv
LyBUaGUgaW1wbGVtZW50YXRpb24gb2YgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgpIGNhbGxz
IHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucy4KICAgICAvLyBUaGV5IGFyZSBzZXBhcmF0ZWQg
dG8gYWxsb3cgYSBkaWZmZXJlbnQgZmxvdyBvZiBjb250cm9sIGluIFN0eWxlZEVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoKS4KICAgICB2b2lkIHJlY2FsY1N0eWxlSWZOZWVkZWRBZnRlckF0dHJp
YnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggOWViYjAy
YTU5MmY3MTgzMjZjMTZlMDJmMTk4MWI0MWQ5Yzg4OTBlYy4uNzI3NzE4YTZlNTY2MzNkYjczM2Y4
YmQ3MGViZjQxOWZmYTliOTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTQwLDYgKzE0
MCwxMSBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09C
SkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKKyAgICAgICAgdm9pZCB3ZWJraXRB
ZGRNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIsIGluIERPTU9i
amVjdCB0eXBlcyk7CisgICAgICAgIHZvaWQgd2Via2l0UmVtb3ZlTXV0YXRpb25MaXN0ZW5lcihp
biBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoTEFO
R1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBF
dmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1d
IEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZl
bnRMaXN0ZW5lciBvbmJsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXgg
MWNhY2NkNDk0ZjEwZjJhNmMzMDZlNjBiZTEzNDRhNzU0NjVlMjk2Zi4uYWVkZDU2YTk0MjEyYzEw
MDJkYmNkOTRlYTM4YzdlZGI3NTQxNTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNsYXNzTGlzdC5oIgogI2luY2x1ZGUg
IkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
TXV0YXRpb25UYXJnZXREYXRhLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCkBAIC0zOSw2ICs0MCwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogCisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBtdXRhdGlv
blRhcmdldERhdGEoKSB7IHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQoKTsgfQorICAg
IE11dGF0aW9uVGFyZ2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkKKyAgICB7Cisg
ICAgICAgIGlmICghbV9tdXRhdGlvblRhcmdldERhdGEpCisgICAgICAgICAgICBtX211dGF0aW9u
VGFyZ2V0RGF0YSA9IGFkb3B0UHRyKG5ldyBNdXRhdGlvblRhcmdldERhdGEpOworICAgICAgICBy
ZXR1cm4gbV9tdXRhdGlvblRhcmdldERhdGEuZ2V0KCk7CisgICAgfQorCisKICAgICB1c2luZyBO
b2RlUmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwog
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29u
QWZ0ZXJBdHRhY2g7CiAKQEAgLTU1LDYgKzY1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsKICNlbmRp
ZgorcHJpdmF0ZToKKyAgICBPd25QdHI8TXV0YXRpb25UYXJnZXREYXRhPiBtX211dGF0aW9uVGFy
Z2V0RGF0YTsKIH07CiAKIGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZDhk
ODg0MTA0NTFkMjg2MzU3ZGVlMGE1NWQxMzNkNDY2OTZhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBNdXRhdGlvbkxpc3RlbmVyX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uUmVjb3JkOworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IE11
dGF0aW9uUmVjb3JkVmVjdG9yOworCitjbGFzcyBNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4geworcHVibGljOgorICAgIHZpcnR1YWwgfk11dGF0
aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlvbkxpc3RlbmVyJikgPSAw
OworICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpID0gMDsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25MaXN0ZW5lci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFkMDFmOGQz
YjY2ZmYxOWQzZDM4MWIyNmQ3NGZlY2I3ZGM2ZjdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIFB1cmVJbnRlcmZhY2UsCisgICAgICAg
IE9taXRDb25zdHJ1Y3RvcgorICAgIF0gTXV0YXRpb25MaXN0ZW5lciB7CisgICAgICAgIC8vIHZv
aWQgaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRbXSBtdXRhdGlvbnMpCisgICAgICAgIHZv
aWQgaGFuZGxlRXZlbnQoaW4gQXJyYXkgbXV0YXRpb25zKTsKKyAgICB9OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwOGJkYmRiODA4MDNlNjM2NjMx
ZTJmZGU2ZTVhMDU0YmYzNTc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXREYXRh
LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEVtcHR5Tm9kZUxp
c3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0
eU5vZGVMaXN0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdCB7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgRW1wdHlOb2RlTGlz
dCgpIHsgfQorfTsKKworfQorCitQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgdW5z
aWduZWQgYWRkZWRDb3VudCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgdW5zaWduZWQg
Y2hpbGRsaXN0SW5kZXgpCit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9
IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGlsZGxpc3RGbGFnLCB0YXJnZXQpKTsKKyAg
ICBtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhID0gYWRvcHRQdHIobmV3IENoaWxkbGlzdERhdGEp
OworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPmFkZGVkQ291bnQgPSBhZGRlZENvdW50
OworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPnJlbW92ZWROb2RlcyA9IHJlbW92ZWQ7
CisgICAgaWYgKCFtdXRhdGlvbi0+bV9jaGlsZGxpc3REYXRhLT5yZW1vdmVkTm9kZXMpCisgICAg
ICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPnJlbW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxp
c3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX2NoaWxkbGlzdERhdGEtPmNoaWxkbGlzdElu
ZGV4ID0gY2hpbGRsaXN0SW5kZXg7CisgICAgcmV0dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30K
KworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJp
YnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
YXR0ck5hbWUpCit7CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IGFkb3B0
UmVmKG5ldyBNdXRhdGlvblJlY29yZChBdHRyaWJ1dGVGbGFnLCB0YXJnZXQpKTsKKyAgICBtdXRh
dGlvbi0+bV9hdHRyTmFtZSA9IGF0dHJOYW1lOworICAgIHJldHVybiBtdXRhdGlvbi5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChDaGFyYWN0ZXJkYXRhRmxhZywgdGFyZ2V0KSk7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRpb25SZWNvcmQ6OnR5cGUoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGlsZGxpc3QsICgiY2hpbGRsaXN0
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdHRyaWJ1dGUsICgi
YXR0cmlidXRlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGFy
YWN0ZXJkYXRhLCAoImNoYXJhY3RlcmRhdGEiKSk7CisKKyAgICBzd2l0Y2ggKG1fdHlwZUZsYWcp
IHsKKyAgICBjYXNlIE11dGF0aW9uUmVjb3JkOjpDaGlsZGxpc3RGbGFnOgorICAgICAgICByZXR1
cm4gY2hpbGRsaXN0OworICAgIGNhc2UgTXV0YXRpb25SZWNvcmQ6OkF0dHJpYnV0ZUZsYWc6Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGU7CisgICAgY2FzZSBNdXRhdGlvblJlY29yZDo6Q2hhcmFj
dGVyZGF0YUZsYWc6CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJkYXRhOworICAgIH0KKyAgICBB
U1NFUlQoZmFsc2UpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisKK011dGF0aW9uUmVjb3Jk
OjpNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVGbGFnIHR5cGVGbGFnLCBQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCkKKyAgICA6IG1fdHlwZUZsYWcodHlwZUZsYWcpCisgICAgLCBtX3RhcmdldCh0
YXJnZXQpCisgICAgLCBtX3dhc0luRG9jdW1lbnQobV90YXJnZXQtPmluRG9jdW1lbnQoKSkKKyAg
ICAsIG1fb3duZXJEb2N1bWVudChtX3RhcmdldC0+b3duZXJEb2N1bWVudCgpKQoreworfQorCitN
dXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDljZTQw
MTEzYzMzNmUzY2FiZTM3NTdiMTFkYTdlMzZhMGUwZTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE11dGF0aW9uUmVjb3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisjaW5jbHVkZSAi
Tm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgTXV0YXRp
b25SZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblJlY29yZD4geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVDaGlsZGxpc3RDaGFu
Z2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCB1bnNpZ25lZCBhZGRlZENvdW50LCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiByZW1vdmVkLCB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IGNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQo
UGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworCisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQo
KTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworICAgIE5vZGUqIHRhcmdldCgp
IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisgICAgYm9vbCB3YXNJbkRvY3VtZW50KCkgeyBy
ZXR1cm4gbV93YXNJbkRvY3VtZW50OyB9CisgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSB7
IHJldHVybiBtX293bmVyRG9jdW1lbnQuZ2V0KCk7IH0KKworICAgIC8vIEZvciB0eXBlID09ICdj
aGlsZGxpc3QnCisgICAgdW5zaWduZWQgYWRkZWRDb3VudCgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5hZGRlZENvdW50IDogMDsKKyAg
ICB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpCisgICAgeworICAgICAgICByZXR1cm4g
bV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5yZW1vdmVkTm9kZXMuZ2V0KCkgOiAw
OworICAgIH0KKyAgICB1bnNpZ25lZCBjaGlsZGxpc3RJbmRleCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9jaGlsZGxpc3REYXRhID8gbV9jaGlsZGxpc3REYXRhLT5jaGlsZGxpc3RJbmRleCA6
IDA7CisgICAgfQorCisgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJOYW1lKCkgeyByZXR1cm4gbV9hdHRyTmFtZTsgfQorCisgICAgLy8g
Tm90IHBhcnQgb2YgdGhlIElETCwgYnV0IHVzZWQgaW50ZXJuYWxseSBmb3IgZmFzdCB0eXBlLWJh
c2VkIG9wZXJhdGlvbnMuCisgICAgZW51bSBNdXRhdGlvblR5cGVGbGFnIHsKKyAgICAgICAgQ2hp
bGRsaXN0RmxhZyA9ICgxIDw8IDApLAorICAgICAgICBBdHRyaWJ1dGVGbGFnID0gKDEgPDwgMSks
CisgICAgICAgIENoYXJhY3RlcmRhdGFGbGFnID0gKDEgPDwgMikKKyAgICB9OworICAgIE11dGF0
aW9uVHlwZUZsYWcgdHlwZUZsYWcoKSB7IHJldHVybiBtX3R5cGVGbGFnOyB9CisKK3ByaXZhdGU6
CisgICAgTXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlRmxhZywgUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQpOworCisgICAgc3RydWN0IENoaWxkbGlzdERhdGEgeworICAgICAgICB1bnNpZ25lZCBh
ZGRlZENvdW50OworICAgICAgICBSZWZQdHI8Tm9kZUxpc3Q+IHJlbW92ZWROb2RlczsKKyAgICAg
ICAgdW5zaWduZWQgY2hpbGRsaXN0SW5kZXg7CisgICAgfTsKKworICAgIE11dGF0aW9uVHlwZUZs
YWcgbV90eXBlRmxhZzsKKyAgICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgYm9vbCBtX3dh
c0luRG9jdW1lbnQ7CisgICAgUmVmUHRyPERvY3VtZW50PiBtX293bmVyRG9jdW1lbnQ7CisgICAg
QXRvbWljU3RyaW5nIG1fYXR0ck5hbWU7CisgICAgT3duUHRyPENoaWxkbGlzdERhdGE+IG1fY2hp
bGRsaXN0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjExYzZiM2U3YTczNTA4
NzY2OThlNDliODc0NWNlYmExZDUzMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgewor
ICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAg
ICAgICAgICAgdGFyZ2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAg
ICAgd2FzSW5Eb2N1bWVudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50ICAg
ICAgIG93bmVyRG9jdW1lbnQ7CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0gJ2NoaWxkbGlzdCcK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgIGFkZGVkQ291bnQ7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAgICAgICByZW1vdmVkTm9kZXM7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICBjaGlsZGxpc3RJbmRleDsK
KworICAgICAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgYXR0ck5hbWU7CisgICAgfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblNjb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2U4ZWIyYzYxOTBlMTA0YzY5OWU3NGI4
NTg3M2UzNThlODNkNTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uU2NvcGUuY3BwCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk11dGF0aW9uU2NvcGUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
KyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNz
IENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24pOworcHVibGljOgorICAgIENoaWxkbGlzdENo
YW5nZWRBY2N1bXVsYXRpb24oUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOworICAgIH5DaGlsZGxp
c3RDaGFuZ2VkQWNjdW11bGF0aW9uKCk7CisKKyAgICB2b2lkIGNoaWxkQWRkZWQoTm9kZSogY2hp
bGQpOworICAgIHZvaWQgd2lsbFJlbW92ZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQpOwor
ICAgIHZvaWQgZGlzcGF0Y2goKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAg
ICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fcmVt
b3ZlZE5vZGVzOworICAgIHVuc2lnbmVkIG1fYWRkZWROb2RlQ291bnQ7CisgICAgaW50IG1fY2hp
bGRsaXN0SW5kZXg7CisgICAgUmVmUHRyPE5vZGU+IG1fbGFzdFJlbW92ZWQ7CisgICAgUmVmUHRy
PE5vZGU+IG1fbGFzdEFkZGVkOworfTsKKworY2xhc3MgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxh
dG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0
b3IpOworcHVibGljOgorICAgIH5DaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsKKworICAg
IHN0YXRpYyBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IqIGluc3RhbmNlKCk7CisKKyAgICB2
b2lkIGluY3JlbWVudFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpOworICAgIHZvaWQgZGVjcmVt
ZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCk7CisKKyAgICB2b2lkIGNoaWxkQWRkZWQoTm9k
ZSogdGFyZ2V0LCBOb2RlKiBjaGlsZCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQ2hpbGQoTm9kZSog
dGFyZ2V0LCBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkKTsKKworcHJpdmF0ZToKKyAgICBDaGlsZGxp
c3RDaGFuZ2VzQWNjdW11bGF0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisK
KyAgICBIYXNoTWFwPE5vZGUqLCB1bnNpZ25lZD4gbV9zY29waW5nTGV2ZWxzOworICAgIEhhc2hN
YXA8Tm9kZSosIENoaWxkbGlzdENoYW5nZWRBY2N1bXVsYXRpb24qPiBtX2FjY3VtdWxhdGlvbnM7
CisKKyAgICBzdGF0aWMgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yKiBzX2luc3RhbmNlOwor
fTsKKworQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6Q2hpbGRsaXN0Q2hhbmdlZEFjY3Vt
dWxhdGlvbihQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdGFyZ2V0KHRhcmdldCkK
K3sKKyAgICBjbGVhcigpOworfQorCitDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uOjp+Q2hp
bGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbigpCit7CisgICAgQVNTRVJUKG1fcmVtb3ZlZE5vZGVz
LmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6Y2hp
bGRBZGRlZChOb2RlKiBjaGlsZCkKK3sKKyAgICBpZiAobV9jaGlsZGxpc3RJbmRleCA+PSAwICYm
IG1fbGFzdEFkZGVkICE9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgZGlzcGF0
Y2goKTsKKworICAgIGlmIChtX2NoaWxkbGlzdEluZGV4IDwgMCkgeworICAgICAgbV9jaGlsZGxp
c3RJbmRleCA9IDA7CisgICAgICBmb3IgKE5vZGUqIG4gPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5n
KCk7IG47IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgICArK21fY2hpbGRsaXN0
SW5kZXg7CisgICAgfQorCisgICAgKyttX2FkZGVkTm9kZUNvdW50OworICAgIG1fbGFzdEFkZGVk
ID0gY2hpbGQ7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6d2lsbFJl
bW92ZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQpCit7CisgICAgQVNTRVJUKCFtX2FkZGVk
Tm9kZUNvdW50KTsKKyAgICBpZiAobV9jaGlsZGxpc3RJbmRleCA8IDApIHsKKyAgICAgICAgbV9j
aGlsZGxpc3RJbmRleCA9IDA7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKTsgbjsgbiA9IG4tPnByZXZpb3VzU2libGluZygpKQorICAgICAgICAgICAgKytt
X2NoaWxkbGlzdEluZGV4OworCisgICAgICAgIG1fbGFzdEFkZGVkID0gY2hpbGQtPnByZXZpb3Vz
U2libGluZygpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlQobV9sYXN0UmVtb3ZlZCA9PSBj
aGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOworCisgICAgbV9sYXN0UmVtb3ZlZCA9IGNoaWxkOwor
ICAgIG1fcmVtb3ZlZE5vZGVzLmFwcGVuZChtX2xhc3RSZW1vdmVkKTsKK30KKwordm9pZCBDaGls
ZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uOjpkaXNwYXRjaCgpCit7CisgICAgTm9kZSogdGFyZ2V0
ID0gbV90YXJnZXQuZ2V0KCk7CisgICAgaWYgKCFtX2FkZGVkTm9kZUNvdW50ICYmIG1fcmVtb3Zl
ZE5vZGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBtdXRhdGlvbiA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxpc3RDaGFuZ2Vk
KG1fdGFyZ2V0LCBtX2FkZGVkTm9kZUNvdW50LCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobV9yZW1v
dmVkTm9kZXMpLCBtX2NoaWxkbGlzdEluZGV4KTsKKyAgICBpZiAodGFyZ2V0LT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgIHRvRWxlbWVudCh0YXJnZXQpLT5lbnF1ZXVlTXV0YXRpb24obXV0YXRp
b24pOworICAgIGVsc2UgaWYgKHRhcmdldC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9G
UkFHTUVOVF9OT0RFKQorICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdtZW50Kj4odGFy
Z2V0KS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKyAgICB0YXJnZXQtPm93bmVyRG9jdW1l
bnQoKS0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKKworICAgIGNsZWFyKCk7Cit9CisKK3Zv
aWQgQ2hpbGRsaXN0Q2hhbmdlZEFjY3VtdWxhdGlvbjo6Y2xlYXIoKQoreworICAgIG1fYWRkZWRO
b2RlQ291bnQgPSAwOworICAgIG1fY2hpbGRsaXN0SW5kZXggPSAtMTsKKyAgICBtX2xhc3RSZW1v
dmVkID0gMDsKKyAgICBtX2xhc3RBZGRlZCA9IDA7CisgICAgaWYgKCFtX3JlbW92ZWROb2Rlcy5p
c0VtcHR5KCkpCisgICAgICAgIG1fcmVtb3ZlZE5vZGVzLmNsZWFyKCk7Cit9CisKK0NoaWxkbGlz
dENoYW5nZXNBY2N1bXVsYXRvciogQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpzX2luc3Rh
bmNlID0gMDsKKworQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpDaGlsZGxpc3RDaGFuZ2Vz
QWNjdW11bGF0b3IoKQoreworfQorCisvLyBDYW4gdGhpcyBnZXQgY2FsbGVkCitDaGlsZGxpc3RD
aGFuZ2VzQWNjdW11bGF0b3I6On5DaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IoKQoreworICAg
IEFTU0VSVChtX3Njb3BpbmdMZXZlbHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9hY2N1bXVs
YXRpb25zLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgQ2hpbGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9y
Ojppbml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOworICAgIE93blB0cjxD
aGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I+IGluc3RhbmNlID0gYWRvcHRQdHIobmV3IENoaWxk
bGlzdENoYW5nZXNBY2N1bXVsYXRvcik7CisgICAgc19pbnN0YW5jZSA9IGluc3RhbmNlLmxlYWtQ
dHIoKTsKK30KKworCitDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3IqIENoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKQoreworICAgIGlmICghc19pbnN0YW5jZSkKKyAgICAg
ICAgaW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIHNfaW5zdGFuY2U7Cit9CisKK3ZvaWQgQ2hp
bGRsaXN0Q2hhbmdlc0FjY3VtdWxhdG9yOjpjaGlsZEFkZGVkKE5vZGUqIHRhcmdldCwgTm9kZSog
Y2hpbGQpCit7CisgICAgQVNTRVJUKG1fYWNjdW11bGF0aW9ucy5jb250YWlucyh0YXJnZXQpKTsK
KyAgICBDaGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uKiByZWNvcmQgPSBtX2FjY3VtdWxhdGlv
bnMuZ2V0KHRhcmdldCk7CisgICAgaWYgKHJlY29yZCkKKyAgICAgICAgcmVjb3JkLT5jaGlsZEFk
ZGVkKGNoaWxkKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6OndpbGxS
ZW1vdmVDaGlsZChOb2RlKiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQpCit7CisgICAg
QVNTRVJUKG1fYWNjdW11bGF0aW9ucy5jb250YWlucyh0YXJnZXQpKTsKKyAgICBDaGlsZGxpc3RD
aGFuZ2VkQWNjdW11bGF0aW9uKiByZWNvcmQgPSBtX2FjY3VtdWxhdGlvbnMuZ2V0KHRhcmdldCk7
CisgICAgaWYgKHJlY29yZCkKKyAgICAgICAgcmVjb3JkLT53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQp
OworfQorCit2b2lkIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5jcmVtZW50U2NvcGlu
Z0xldmVsKE5vZGUqIHRhcmdldCkKK3sKKyAgICB1bnNpZ25lZCBzY29waW5nTGV2ZWw7CisKKyAg
ICBpZiAobV9zY29waW5nTGV2ZWxzLmNvbnRhaW5zKHRhcmdldCkpCisgICAgICAgIHNjb3BpbmdM
ZXZlbCA9IG1fc2NvcGluZ0xldmVscy5nZXQodGFyZ2V0KSArIDE7CisgICAgZWxzZSB7CisgICAg
ICAgIHNjb3BpbmdMZXZlbCA9IDE7CisgICAgICAgIGJvb2wgaGFzTGlzdGVuZXJzID0gdGFyZ2V0
LT5vd25lckRvY3VtZW50KCktPmhhc011dGF0aW9uTGlzdGVuZXJzKCk7CisKKyAgICAgICAgaWYg
KCFoYXNMaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQtPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgICAgICAgICBoYXNMaXN0ZW5lcnMgPSB0b0VsZW1lbnQodGFyZ2V0KS0+aGFz
TXV0YXRpb25MaXN0ZW5lcnMoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldC0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgIGhh
c0xpc3RlbmVycyA9IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPih0YXJnZXQpLT5oYXNN
dXRhdGlvbkxpc3RlbmVycygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhc0xpc3RlbmVy
cykKKyAgICAgICAgICAgIG1fYWNjdW11bGF0aW9ucy5zZXQodGFyZ2V0LCBuZXcgQ2hpbGRsaXN0
Q2hhbmdlZEFjY3VtdWxhdGlvbih0YXJnZXQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9hY2N1bXVsYXRpb25zLnNldCh0YXJnZXQsIDApOworICAgIH0KKworICAgIG1fc2NvcGluZ0xl
dmVscy5zZXQodGFyZ2V0LCBzY29waW5nTGV2ZWwpOworfQorCit2b2lkIENoaWxkbGlzdENoYW5n
ZXNBY2N1bXVsYXRvcjo6ZGVjcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKK3sKKyAg
ICBBU1NFUlQobV9zY29waW5nTGV2ZWxzLmNvbnRhaW5zKHRhcmdldCkpOworICAgIHVuc2lnbmVk
IHNjb3BpbmdMZXZlbCA9IG1fc2NvcGluZ0xldmVscy5nZXQodGFyZ2V0KSAtIDE7CisKKyAgICBp
ZiAoc2NvcGluZ0xldmVsID4gMCkgeworICAgICAgICBtX3Njb3BpbmdMZXZlbHMuc2V0KHRhcmdl
dCwgc2NvcGluZ0xldmVsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE93blB0cjxD
aGlsZGxpc3RDaGFuZ2VkQWNjdW11bGF0aW9uPiByZWNvcmQgPSBhZG9wdFB0cihtX2FjY3VtdWxh
dGlvbnMudGFrZSh0YXJnZXQpKTsKKyAgICBtX3Njb3BpbmdMZXZlbHMucmVtb3ZlKHRhcmdldCk7
CisKKyAgICBpZiAocmVjb3JkKQorICAgICAgICByZWNvcmQtPmRpc3BhdGNoKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlCisKK0NoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlOjpDaGlsZGxpc3RD
aGFuZ2VkTXV0YXRpb25TY29wZShQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCkKKyAgICA6IG1fdGFy
Z2V0KHRhcmdldCkKK3sKKyAgICBDaGlsZGxpc3RDaGFuZ2VzQWNjdW11bGF0b3I6Omluc3RhbmNl
KCktPmluY3JlbWVudFNjb3BpbmdMZXZlbChtX3RhcmdldC5nZXQoKSk7Cit9CisKK0NoaWxkbGlz
dENoYW5nZWRNdXRhdGlvblNjb3BlOjp+Q2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2NvcGUoKQor
eworICAgIENoaWxkbGlzdENoYW5nZXNBY2N1bXVsYXRvcjo6aW5zdGFuY2UoKS0+ZGVjcmVtZW50
U2NvcGluZ0xldmVsKG1fdGFyZ2V0LmdldCgpKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2Vk
TXV0YXRpb25TY29wZTo6Y2hpbGRBZGRlZChOb2RlKiBjaGlsZCkKK3sKKyAgICBDaGlsZGxpc3RD
aGFuZ2VzQWNjdW11bGF0b3I6Omluc3RhbmNlKCktPmNoaWxkQWRkZWQobV90YXJnZXQuZ2V0KCks
IGNoaWxkKTsKK30KKwordm9pZCBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZTo6d2lsbFJl
bW92ZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGQpCit7CisgICAgQ2hpbGRsaXN0Q2hhbmdl
c0FjY3VtdWxhdG9yOjppbnN0YW5jZSgpLT53aWxsUmVtb3ZlQ2hpbGQobV90YXJnZXQuZ2V0KCks
IGNoaWxkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRjZjFkMGQ1ODI0ZTA2Nzk2NjhhMDkxYmNiMDNmYjcxOTlm
ZDU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblNjb3Bl
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTXV0YXRpb25TY29wZV9oCisjZGVmaW5lIE11dGF0
aW9uU2NvcGVfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTm9kZTsKKworY2xhc3MgQ2hpbGRsaXN0Q2hhbmdlZE11dGF0aW9uU2Nv
cGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNj
b3BlKTsKK3B1YmxpYzoKKyAgICBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZShQYXNzUmVm
UHRyPE5vZGU+IHRhcmdldCk7CisgICAgfkNoaWxkbGlzdENoYW5nZWRNdXRhdGlvblNjb3BlKCk7
CisKKyAgICB2b2lkIGNoaWxkQWRkZWQoTm9kZSopOworICAgIHZvaWQgd2lsbFJlbW92ZUNoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4pOworCitwcml2YXRlOgorICAgIFJlZlB0cjxOb2RlPiBtX3Rhcmdl
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uVGFyZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmYxNGMxZTAwYmIxNzYxNmM5YjNhZmIy
YTZiMzM0MmNhMDY4MmMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uVGFyZ2V0LmNwcApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKyNp
bmNsdWRlICJNdXRhdGlvblRhcmdldERhdGEuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRp
b25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1Y3Qg
TXV0YXRpb25Db250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1bWVu
dD4gZCwgUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3VtZW50
KGQpCisgICAgICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7
Cit9OworCitzdHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAgICByZXR1
cm4gSW50SGFzaDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8
RG9jdW1lbnQqPjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxpc3Rl
bmVyLT5oYXNoKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11dGF0
aW9uQ29udGV4dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEtPmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAqYi0+
bGlzdGVuZXI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlvbkNv
bnRleHQqLCBNdXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+IENv
bnRleHRWZWN0b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVjdG9y
TWFwJiBjb250ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRl
eHRWZWN0b3JNYXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVlPE93
blB0cjxNdXRhdGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwgYWN0
aXZlQ29udGV4dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3ZvaWQg
c3Bpbk11dGF0aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250ZXh0
cygpLmlzRW1wdHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0
ID0gYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25QdHI8
TXV0YXRpb25SZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCkudGFr
ZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVFdmVu
dChjb250ZXh0LT5kb2N1bWVudC5nZXQoKSwgdi5yZWxlYXNlKCkpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgZW5zdXJlTXV0YXRpb25RdWV1ZWQoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVy
PiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7
CisgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbiA9IHBycE11dGF0aW9uOworICAg
IEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0KCkpOworICAgIEFTU0VSVChtdXRhdGlvbi0+dGFyZ2V0
KCktPmRvY3VtZW50KCkpOworICAgIE93blB0cjxNdXRhdGlvbkNvbnRleHQ+IGNvbnRleHQgPSBh
ZG9wdFB0cihuZXcgTXV0YXRpb25Db250ZXh0KG11dGF0aW9uLT50YXJnZXQoKS0+ZG9jdW1lbnQo
KSwgcHJwTGlzdGVuZXIpKTsKKworICAgIHBhaXI8Q29udGV4dFZlY3Rvck1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IGNvbnRleHRWZWN0b3JNYXAoKS5hZGQoY29udGV4dC5nZXQoKSwgMCk7
CisgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQg
PSBuZXcgTXV0YXRpb25SZWNvcmRWZWN0b3I7CisgICAgICAgIGFjdGl2ZU11dGF0aW9uQ29udGV4
dHMoKS5hcHBlbmQoY29udGV4dC5yZWxlYXNlKCkpOworICAgIH0KKyAgICBNdXRhdGlvblJlY29y
ZFZlY3RvciogdiA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICh2LT5pc0VtcHR5KCkg
fHwgdi0+bGFzdCgpICE9IG11dGF0aW9uKQorICAgICAgICB2LT5hcHBlbmQobXV0YXRpb24pOwor
fQorCitNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KCkKK3sKK30KKwordm9pZCBNdXRh
dGlvblRhcmdldDo6d2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+IHBycExpc3RlbmVyLCB1aW50OF90IHR5cGVNYXNrKQoreworICAgIFJlZ2lzdGVy
ZWRNdXRhdGlvbkxpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihwcnBMaXN0ZW5lciwgdHlwZU1h
c2spOworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IGVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0
YSgpOworICAgIHNpemVfdCBpbmRleCA9IGQtPmxpc3RlbmVycy5maW5kKHJlZ2lzdGVyZWRMaXN0
ZW5lcik7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBkLT5saXN0ZW5lcnMu
YXBwZW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBkLT5saXN0ZW5l
cnNbaW5kZXhdLnR5cGVzIHw9IHR5cGVNYXNrOworfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0Ojp3
ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlzdGVuZXIqIGxpc3RlbmVyKQor
eworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOworICAg
IGlmICghZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
LT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCpkLT5saXN0ZW5lcnNbaV0u
bGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7CisgICAgICAgICAgICBkLT5saXN0ZW5lcnMucmVtb3Zl
KGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE11
dGF0aW9uVGFyZ2V0OjpoYXNNdXRhdGlvbkxpc3RlbmVycygpCit7CisgICAgTXV0YXRpb25UYXJn
ZXREYXRhKiBkID0gbXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgcmV0dXJuIGQgJiYgIWQtPmxp
c3RlbmVycy5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OmVucXVldWVNdXRh
dGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBBU1NF
UlQocHJwTXV0YXRpb24pOworCisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0gbXV0YXRpb25U
YXJnZXREYXRhKCk7CisgICAgaWYgKCFkIHx8IGQtPmxpc3RlbmVycy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBN
dXRhdGlvbjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQtPmxpc3RlbmVycy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoZC0+bGlzdGVuZXJzW2ldLnR5cGVzICYgbXV0YXRpb24tPnR5
cGVGbGFnKCkpCisgICAgICAgICAgICBlbnN1cmVNdXRhdGlvblF1ZXVlZChkLT5saXN0ZW5lcnNb
aV0ubGlzdGVuZXIsIG11dGF0aW9uKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NlYzhhZjk5ZTE4
ZjkxNzllNTJlZTYwZTYxODFjMTM4ZTdiYzc4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0
aW9uVGFyZ2V0X2gKKyNkZWZpbmUgTXV0YXRpb25UYXJnZXRfaAorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvbkxpc3Rl
bmVyOworY2xhc3MgTXV0YXRpb25SZWNvcmQ7CitjbGFzcyBNdXRhdGlvblRhcmdldERhdGE7CisK
K2NsYXNzIE11dGF0aW9uVGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB2b2lkIHdlYmtpdEFkZE11dGF0
aW9uTGlzdGVuZXIoUGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiwgdWludDhfdCB0eXBlTWFz
ayk7CisgICAgdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlzdGVu
ZXIqKTsKKworICAgIHZvaWQgZW5xdWV1ZU11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+KTsKKyAgICBib29sIGhhc011dGF0aW9uTGlzdGVuZXJzKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIH5NdXRhdGlvblRhcmdldCgpOworCisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdl
dERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFy
Z2V0RGF0YSogZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCkgPSAwOworfTsKKwordm9pZCBzcGlu
TXV0YXRpb25RdWV1ZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBN
dXRhdGlvblRhcmdldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25U
YXJnZXREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXREYXRhLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDBiZTEwYzMwZDJlMGEzYjk0NDkwMGRiNWU0YTI4ZGYxNmJhZmFiOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldERhdGFfaAorI2RlZmluZSBNdXRhdGlv
blRhcmdldERhdGFfaAorCisjaW5jbHVkZSAiUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWdpc3RlcmVkTXV0YXRp
b25MaXN0ZW5lcj4gTXV0YXRpb25MaXN0ZW5lclZlY3RvcjsKK3N0cnVjdCBNdXRhdGlvblRhcmdl
dERhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGF0aW9uVGFyZ2V0RGF0YSk7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTXV0YXRpb25UYXJnZXRE
YXRhKCkgeyB9CisgICAgfk11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgfQorCisgICAgTXV0YXRpb25M
aXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBNdXRhdGlvblRhcmdldERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDBlOGNi
YWZhYzA1YWVmZjk1YTJkNDNiNGViODdjYWFjMTcwNmY5NTYuLjNiOGZiNmRhZjNjNzdjNTRkNmZl
ZWRiZWIzZGQwMDcyYTc3ZTM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
Ik11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
TmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9k
ZVJhcmVEYXRhLmgiCkBAIC0yMTI2LDYgKzIxMjcsOCBAQCB2b2lkIE5vZGU6OnNldFRleHRDb250
ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2Ug
RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgY2FzZSBTSEFET1dfUk9PVF9OT0RFOiB7
CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0b0NvbnRhaW5lck5vZGUo
dGhpcyk7CisgICAgICAgICAgICBDaGlsZGxpc3RDaGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlv
bihjb250YWluZXIpOworCiAgICAgICAgICAgICBjb250YWluZXItPnJlbW92ZUNoaWxkcmVuKCk7
CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUodGV4dCksIGVjKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzZlZWM4MTRjYzg5OGQ2Y2U3NGQxNDYwYzExZTM3ZmI3Njg5MzE5OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyX2gK
KyNkZWZpbmUgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRp
b25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSZWdpc3RlcmVkTXV0
YXRpb25MaXN0ZW5lciB7CisgICAgUmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIoUGFzc1JlZlB0
cjxNdXRhdGlvbkxpc3RlbmVyPiBsLCB1aW50OF90IHR5cGVNYXNrKQorICAgICAgICA6IGxpc3Rl
bmVyKGwpCisgICAgICAgICwgdHlwZXModHlwZU1hc2spIHsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAqbGlzdGVuZXIgPT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKwor
ICAgIFJlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVz
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXgg
MDA4MjMyYTcwNDNkMThmY2Q0ZGI2MjVlOTllMjY0NzE1ODFhMGQxYS4uOTIzOWMwNTA3NjE5Yzg3
OTNhOWYwN2JiNjBjN2UyOGZhYjFhYjRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29yZEJyZWFr
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkBAIC0zMTgsNiArMzE5LDggQEAgc3RhdGljIGlubGluZSBib29sIGhhc09uZVRleHRDaGls
ZChDb250YWluZXJOb2RlKiBub2RlKQogCiBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRo
RnJhZ21lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIENoaWxkbGlzdENoYW5nZWRN
dXRhdGlvblNjb3BlIG11dGF0aW9uKGVsZW1lbnQpOworCiAgICAgaWYgKCFmcmFnbWVudC0+Zmly
c3RDaGlsZCgpKSB7CiAgICAgICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTMzOSw2ICszNDIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5X
aXRoRnJhZ21lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RG9jdW1lbgogCiBz
dGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChIVE1MRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBDaGlsZGxpc3RD
aGFuZ2VkTXV0YXRpb25TY29wZSBtdXRhdGlvbihlbGVtZW50KTsKICAgICBpZiAoaGFzT25lVGV4
dENoaWxkKGVsZW1lbnQpKSB7CiAgICAgICAgIHN0YXRpY19jYXN0PFRleHQqPihlbGVtZW50LT5m
aXJzdENoaWxkKCkpLT5zZXREYXRhKHRleHQsIGVjKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDQzYzIzNzVjNjFmYzM5ZTQzNzEwN2NlMWFiODU0NDVk
MTg1MGI3ZDYuLmE5MTFmY2RmNTk5ZGQ3YmY4M2EyNmEwYTIwMzc4YTlkOTY4ZDY4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJNZWRp
YVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTXV0YXRpb25UYXJnZXQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xODgzLDQgKzE4ODQsOSBAQCBTdG9yYWdlSW5mbyogRE9NV2luZG93Ojp3ZWJr
aXRTdG9yYWdlSW5mbygpIGNvbnN0CiB9CiAjZW5kaWYKIAordm9pZCBET01XaW5kb3c6OnNwaW5N
dXRhdGlvblF1ZXVlKCkKK3sKKyAgICA6OldlYkNvcmU6OnNwaW5NdXRhdGlvblF1ZXVlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGEy
YWQ4MDlhOWYwNjZmYzI4ZjVhZWViZTg3MWNlNjBkYzhhODVhZmQuLmRjOWIwMWRjNWNjYWM2NDk4
ZmNhZGYyM2VhMjdiNzczYjc0N2E0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDE0
LDYgKzQxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGVyZm9ybWFuY2UqIHBl
cmZvcm1hbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgICAgICB2b2lkIHNwaW5NdXRhdGlvblF1
ZXVlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGMyMzg0ZDE1YTVkN2E5NWQ0Y2Y0MGNkNTY5M2Rm
ZDE3YTdiNmQ5ODIuLjIzNDJhZGY1ZGJlYmYzOWY2ZDU0NzAwNTBjY2YzYjU3NWZiOGZiZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTgwNSw2ICs4MDUsMTEgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIC8vIHdpbmRvdy50b1N0cmluZygpIHJlcXVpcmVzIHNwZWNpYWwgaGFu
ZGxpbmcgaW4gVjgKICAgICAgICAgW1Y4RG9Ob3RDaGVja1NpZ25hdHVyZSwgRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5LCBDdXN0b20sIERvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKICNl
bmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCisKKyAgICAgICAgLy8gRklYTUUoYWRhbWspOiBE
TyBOT1QgU1VCTUlUCisgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZXhwb3NlZCB0byBKUyB1
bnRpbCBlbWJlZGRlcnMgYXJlIG1vZGlmaWVkIHRvIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUoKQor
ICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIGVhY2ggdGFzay4KKyAgICAgICAgdm9pZCBzcGluTXV0
YXRpb25RdWV1ZSgpOwogICAgIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>