<?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>177959</bug_id>
          
          <creation_ts>2017-10-05 12:29:34 -0700</creation_ts>
          <short_desc>Support integrity=&quot;&quot; on module scripts</short_desc>
          <delta_ts>2017-10-12 06:12:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178162</dependson>
          <blocked>147340</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Domenic Denicola">d</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357170</commentid>
    <comment_count>0</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2017-10-05 12:29:34 -0700</bug_when>
    <thetext>This was recently added to the spec in https://github.com/whatwg/html/commit/9275d955dcd604e959cfcc672e0c234b1b8c00db . It applies to the top-level fetch only.

Spec: https://html.spec.whatwg.org/#prepare-a-script step 18 and step 22.6.

Test: http://w3c-test.org/html/semantics/scripting-1/the-script-element/module/integrity.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358350</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-09 12:52:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34892850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359190</commentid>
    <comment_count>2</comment_count>
      <attachid>323420</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-11 08:48:16 -0700</bug_when>
    <thetext>Created attachment 323420
Patch

WIP: Works in GTK with WPT. Need to add files to Xcode project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359307</commentid>
    <comment_count>3</comment_count>
      <attachid>323439</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-11 12:09:18 -0700</bug_when>
    <thetext>Created attachment 323439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359529</commentid>
    <comment_count>4</comment_count>
      <attachid>323439</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-11 22:37:24 -0700</bug_when>
    <thetext>Comment on attachment 323439
Patch

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

Thanks so much for tackling this!

The high level approach I was thinking of taking was to to pass integrity down from LoadableModuleScript -&gt; LoadableScript -&gt; ScriptElementCachedScriptFetcher -&gt; CachedScriptFetcher (and modify LoadableClassicScript to also pass it down). Then in ScriptModuleLoader::notifyFinished, get the integrity off the CachedScriptFetcher which is already available from the CachedModuleScriptLoader.

What is the benefit of adding the new &apos;parameters&apos; object in addition to the existing &apos;scriptFetcher&apos;?

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        can use thsi parameters to fetch modules.

thsi -&gt; this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359537</commentid>
    <comment_count>5</comment_count>
      <attachid>323439</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-11 22:56:05 -0700</bug_when>
    <thetext>Comment on attachment 323439
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        We separately pass this parameters to the pipeline along with the script fetcher.
&gt; +        The script fetcher is only one for module graph since this is the initiator of
&gt; +        this module graph loading. On the other hand, this parameters is for each
&gt; +        module fetching.

Yeah, that&apos;s super good question!
We add `parameters` in addition to script fetcher. This is because script fetcher is a `per-module-graph`.
This script fetcher is shared among all the modules in the given module graph.
While it is sufficient to pass parameters to top-level-module&apos;s fetching, it is not enough for the future extension.

In the future, we will investigate a way to pass parameters to each non-top-level module.
At that time, this `parameters` should be per-module. This is because `integrity` value should be different for each module.
For example, we will accept some form of syntax to add parameters to `import`. Some proposed syntax is like https://discourse.wicg.io/t/specifying-nonce-or-integrity-when-importing-modules/1861

import &quot;./xxx.js&quot; integrity &quot;xxxxxxx&quot;

In this case, this `parameters` will be passed to &quot;./xxx.js&quot; module fetching. This `parameters` should be different from the one of top-level-module&apos;s one. That&apos;s why we need per-module `parameters` and why this patch adds `parameters` to the module pipeline.

On the other hand, we also want to keep script fetcher. This `per-module-graph` thing is important to offer module-graph-wide information.
For example, import.meta would have `import.meta.scriptElement`, which is the script element fetching the module graph including this.
That&apos;s why we keep both.
https://github.com/tc39/proposal-import-meta

&gt;&gt; Source/JavaScriptCore/ChangeLog:21
&gt;&gt; +        can use thsi parameters to fetch modules.
&gt; 
&gt; thsi -&gt; this.

Oops, fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359538</commentid>
    <comment_count>6</comment_count>
      <attachid>323439</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-11 23:08:01 -0700</bug_when>
    <thetext>Comment on attachment 323439
Patch

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

&gt; Source/JavaScriptCore/builtins/ModuleLoaderPrototype.js:250
&gt; +                return this.requestSatisfy(depKey, @undefined, fetcher).then((entry) =&gt; {

And this is important point. When fetching dependent modules, currently we pass `@undefined` as `parameters`.
This should be changed to per-module parameters once the way to take per-module parameters are defined in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359571</commentid>
    <comment_count>7</comment_count>
      <attachid>323519</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-12 03:45:52 -0700</bug_when>
    <thetext>Created attachment 323519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359579</commentid>
    <comment_count>8</comment_count>
      <attachid>323519</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-12 05:14:13 -0700</bug_when>
    <thetext>Comment on attachment 323519
Patch

Thanks for the detailed explanation! Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359581</commentid>
    <comment_count>9</comment_count>
      <attachid>323519</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-12 05:30:13 -0700</bug_when>
    <thetext>Comment on attachment 323519
Patch

Thank you for your reviews ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359589</commentid>
    <comment_count>10</comment_count>
      <attachid>323519</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-12 06:12:53 -0700</bug_when>
    <thetext>Comment on attachment 323519
Patch

Clearing flags on attachment: 323519

Committed r223237: &lt;https://trac.webkit.org/changeset/223237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359590</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-12 06:12:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323420</attachid>
            <date>2017-10-11 08:48:16 -0700</date>
            <delta_ts>2017-10-11 12:09:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177959-20171012004815.patch</filename>
            <type>text/plain</type>
            <size>87767</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Y2RkMGQyM2ZlODA0Mzc3ZTIwOTNjNjNhMWVlNzllMjg5Yzg1MTQyLi5kZjE1MDRkM2M1NGU5MDVh
NjZkMWM2NjY3MDAxNDgwMTExYWIyMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NyBAQAogMjAxNy0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBTdXBwb3J0IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2NyaXB0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanM6CisgICAg
ICAgIChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdEluc3RhbnRpYXRlKToKKyAgICAg
ICAgKHJlcXVlc3RTYXRpc2Z5KToKKyAgICAgICAgKGxvYWRNb2R1bGUpOgorICAgICAgICAobG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKTogRGVsZXRlZC4KKyAg
ICAgICAgKHJlcXVlc3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6CisgICAg
ICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKGZ1bmN0aW9u
TG9hZE1vZHVsZSk6CisgICAgICAgIChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToK
KyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6
CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6
OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjps
b2FkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRN
b2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKiBydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmg6CisgICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6ZGVz
dHJveSk6CisgICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6cGFyYW1ldGVycyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpKU1NjcmlwdEZldGNoUGFyYW1l
dGVycyk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01v
ZHVsZUxvYWRlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclByb3Rv
dHlwZUZldGNoKToKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjp+U2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKKzIwMTctMTAtMTEgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gRHJvcCBJbnN0YW50
aWF0ZSBob29rIGluIEVTNiBtb2R1bGUgbG9hZGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZDU1MmM2MWZh
OTliZjUxNWYzYzVhNjRkZjE1ZjUzMzM4MjI0ZGIuLmI3YjBlNTI0MTFiNDRlZmUzMWZlMDRiNDcy
M2QxNzc2ZDJmNGNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NyBAQAogMjAxNy0xMC0xMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBTdXBwb3J0
IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2NyaXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRl
Z3JpdHkvc3JpLW1vZHVsZS5odG1sCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6
CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3Jp
cHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1
bGVTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRN
b2R1bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVNb2R1bGVTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmxvYWQpOgorICAgICAg
ICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRvbS9Nb2R1bGVGZXRj
aFBhcmFtZXRlcnMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyLmguCisgICAgICAgIChXZWJDb3JlOjpNb2R1bGVGZXRjaFBh
cmFtZXRlcnM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2R1bGVGZXRjaFBhcmFtZXRl
cnM6OmludGVncml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2R1bGVGZXRjaFBhcmFt
ZXRlcnM6Ok1vZHVsZUZldGNoUGFyYW1ldGVycyk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNj
cmlwdCk6CisKKzIwMTctMTAtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKICAgICAgICAgW0pTQ10gRHJvcCBJbnN0YW50aWF0ZSBob29rIGluIEVTNiBtb2R1bGUg
bG9hZGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDRmNzg2MTJiNDllZDg3OWY5
OWQ1MjBkNjhjOTNiYjE2ZWUyNzhjYjQuLmZhODNmM2NmYTZjNjc3NjkwNjhkZDBmMTA1NGU2YzNi
ZDEwODM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgwNyw2ICs4MDcsNyBA
QCBydW50aW1lL0pTUHJveHkuY3BwCiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAogcnVudGlt
ZS9KU1Njb3BlLmNwcAogcnVudGltZS9KU1NjcmlwdEZldGNoZXIuY3BwCitydW50aW1lL0pTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcAogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
LmNwcAogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuY3BwCiBydW50
aW1lL0pTU2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L01vZHVsZUxvYWRlclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKaW5kZXggYmQ5N2QzMDk3NmZjZjkxM2NkNTRlOGZh
MWNkYTE3NTI1NzAxNTk0OC4uZWQwYWU2MDM0YTVmMDk4ODc2OGNmMjkwNTI2MmNlYjcxYzY5MWVj
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRl
clByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmpzCkBAIC0xNDAsNyArMTQwLDcgQEAgZnVuY3Rpb24gZnVsZmlsbEZl
dGNoKGVudHJ5LCBzb3VyY2UpCiAKIC8vIExvYWRlci4KIAotZnVuY3Rpb24gcmVxdWVzdEZldGNo
KGtleSwgZmV0Y2hlcikKK2Z1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIHBhcmFtZXRlcnMsIGZl
dGNoZXIpCiB7CiAgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVz
dC1mZXRjaAogCkBAIC0xNTYsNyArMTU2LDcgQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwg
ZmV0Y2hlcikKICAgICAvLyAgICAgVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0aGUgcmVzb3VyY2Ug
YWN0dWFsbHkuCiAgICAgLy8gICAgIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBj
YW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKICAgICAvLyAgICAgZnJv
bSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uCi0gICAgdmFyIGZldGNoUHJvbWlzZSA9IHRoaXMuZmV0
Y2goa2V5LCBmZXRjaGVyKS50aGVuKChzb3VyY2UpID0+IHsKKyAgICB2YXIgZmV0Y2hQcm9taXNl
ID0gdGhpcy5mZXRjaChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4g
ewogICAgICAgICBAc2V0U3RhdGVUb01heChlbnRyeSwgQE1vZHVsZUluc3RhbnRpYXRlKTsKICAg
ICAgICAgcmV0dXJuIHNvdXJjZTsKICAgICB9KTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBmdW5jdGlv
biByZXF1ZXN0RmV0Y2goa2V5LCBmZXRjaGVyKQogICAgIHJldHVybiBmZXRjaFByb21pc2U7CiB9
CiAKLWZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGZldGNoZXIpCitmdW5jdGlvbiBy
ZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0
dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIApAQCAt
MTc0LDcgKzE3NCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGZldGNoZXIp
CiAgICAgaWYgKGVudHJ5Lmluc3RhbnRpYXRlKQogICAgICAgICByZXR1cm4gZW50cnkuaW5zdGFu
dGlhdGU7CiAKLSAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2go
a2V5LCBmZXRjaGVyKS50aGVuKChzb3VyY2UpID0+IHsKKyAgICB2YXIgaW5zdGFudGlhdGVQcm9t
aXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChz
b3VyY2UpID0+IHsKICAgICAgICAgdmFyIG1vZHVsZVJlY29yZCA9IHRoaXMucGFyc2VNb2R1bGUo
ZW50cnkua2V5LCBzb3VyY2UpOwogCiAgICAgICAgIC8vIEZJWE1FOiBEZXNjcmliZWQgaW4gdGhl
IGRyYWZ0LApAQCAtMjA3LDcgKzIwNyw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShr
ZXksIGZldGNoZXIpCiAgICAgcmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsKIH0KIAotZnVuY3Rp
b24gcmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdFNhdGlzZnko
a2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1
Yi5pby9sb2FkZXIvI3NhdGlzZnktaW5zdGFuY2UKIApAQCAtMjE3LDcgKzIxNyw3IEBAIGZ1bmN0
aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgZmV0Y2hlcikKICAgICBpZiAoZW50cnkuc2F0aXNmeSkK
ICAgICAgICAgcmV0dXJuIGVudHJ5LnNhdGlzZnk7CiAKLSAgICB2YXIgc2F0aXNmeVByb21pc2Ug
PSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7
CisgICAgdmFyIHNhdGlzZnlQcm9taXNlID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBw
YXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewogICAgICAgICB2YXIgZGVwTG9h
ZHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5LmRlcGVuZGVu
Y2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IHBhaXIgPSBl
bnRyeS5kZXBlbmRlbmNpZXNbaV07CkBAIC0yNDYsNyArMjQ2LDggQEAgZnVuY3Rpb24gcmVxdWVz
dFNhdGlzZnkoa2V5LCBmZXRjaGVyKQogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShk
ZXBLZXksIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7CisgICAgICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5LCBtb2R1bGUgbG9hZGVyIGRvIG5vdCBwYXNzIGFueSBpbmZvcm1hdGlvbiBmb3Igbm9u
LXRvcC1sZXZlbCBtb2R1bGUgZmV0Y2hpbmcuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cmVxdWVzdFNhdGlzZnkoZGVwS2V5LCBAdW5kZWZpbmVkLCBmZXRjaGVyKS50aGVuKChlbnRyeSkg
PT4gewogICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0y
NjQsMzYgKzI2NSw2IEBAIGZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgZmV0Y2hlcikKICAg
ICByZXR1cm4gc2F0aXNmeVByb21pc2U7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSwg
ZmV0Y2hlcikKLXsKLSAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1
ZXN0LWxpbmsKLQotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHZhciBlbnRyeSA9IHRoaXMuZW5z
dXJlUmVnaXN0ZXJlZChrZXkpOwotICAgIGlmIChlbnRyeS5zdGF0ZSA+IEBNb2R1bGVMaW5rKSB7
Ci0gICAgICAgIHZhciBkZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQ
cm9taXNlKTsKLSAgICAgICAgZGVmZXJyZWQuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwgZW50
cnkpOwotICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewot
ICAgICAgICB0aGlzLmxpbmsoZW50cnksIGZldGNoZXIpOwotICAgICAgICByZXR1cm4gZW50cnk7
Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJlcXVlc3RSZWFkeShrZXksIGZldGNoZXIpCi17Ci0g
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1yZWFkeQotCi0g
ICAgInVzZSBzdHJpY3QiOwotCi0gICAgcmV0dXJuIHRoaXMucmVxdWVzdExpbmsoa2V5LCBmZXRj
aGVyKS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZW50
cnkubW9kdWxlLCBmZXRjaGVyKTsKLSAgICB9KTsKLX0KLQogLy8gTGlua2luZyBzZW1hbnRpY3Mu
CiAKIGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCkBAIC0zNjMsNyArMzM0LDcgQEAgZnVu
Y3Rpb24gcHJvdmlkZUZldGNoKGtleSwgdmFsdWUpCiAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50
cnksIHZhbHVlKTsKIH0KIAotZnVuY3Rpb24gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKG1vZHVsZU5h
bWUsIHJlZmVycmVyLCBmZXRjaGVyKQorZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCBw
YXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIApAQCAtMzcxLDIxICsz
NDIsOCBAQCBmdW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJy
ZXIsIGZldGNoZXIpCiAgICAgLy8gcmVzb2x2ZTogbW9kdWxlTmFtZSA9PiBQcm9taXNlKG1vZHVs
ZUtleSkKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFtcGxl
LCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4K
LSAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKS50
aGVuKChrZXkpID0+IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlYWR5KGtleSwgZmV0
Y2hlcik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVm
ZXJyZXIsIGZldGNoZXIpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgLy8gTG9hZGVyLnJl
c29sdmUgaG9vayBwb2ludC4KLSAgICAvLyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFByb21pc2Uo
bW9kdWxlS2V5KQotICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVu
aXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCi0gICAgLy8gRm9yIGV4
YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291
cmNlLgotICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNo
ZXIpLnRoZW4oKGtleSkgPT4gewotICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShr
ZXksIGZldGNoZXIpOworICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgQHVuZGVm
aW5lZCwgZmV0Y2hlcikudGhlbigoa2V5KSA9PiB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVl
c3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcik7CiAgICAgfSkudGhlbigoZW50cnkp
ID0+IHsKICAgICAgICAgcmV0dXJuIGVudHJ5LmtleTsKICAgICB9KTsKQEAgLTQwMywxMSArMzYx
LDIwIEBAIGZ1bmN0aW9uIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShrZXksIGZldGNoZXIpCiAgICAg
cmV0dXJuIHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpOwogfQog
Ci1mdW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgZmV0Y2hlcikKK2Z1bmN0aW9uIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLmxvYWRNb2R1bGUobW9kdWxlTmFt
ZSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoa2V5KSA9PiB7CisgICAgICAgIHJldHVybiB0
aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShrZXksIGZldGNoZXIpOworICAgIH0pOworfQorCitm
dW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXks
IGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlz
Znkoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewogICAgICAgICB0
aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5rZXksIGZldGNoZXIpOwogICAgICAgICBy
ZXR1cm4gdGhpcy5nZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzhkYTQxYmQ0M2NhOWIwNzVjZDg3ODY4NzBjM2Zl
NzQ3OGY3ZWQyOC4uYjU2ZTc3NmZkZmFmYThjZDhiMDMxMjE2ZmI0NDYwNzAyNTU5NTZlOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE2NTcsOSArMTY1Nyw5IEBAIGNsYXNzIEdsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRp
ZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIu
c3RyaW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0ds
b2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqLCBjb25z
dCBTb3VyY2VPcmlnaW4mKTsKKyAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxv
YWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9h
ZGVyKiwgSlNTdHJpbmcqLCBKU1ZhbHVlLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsKICAgICBzdGF0
aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3Qq
LCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUp
OwotICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9i
YWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUp
OworICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9i
YWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRl
ciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CiB9OwogCkBAIC0xODExLDcg
KzE4MTEsNyBAQCBzdGF0aWMgU3RyaW5nIGFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogICAgIHJldHVybiByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVs
ZU5hbWUoZmlsZU5hbWUuaW1wbCgpKSk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqIG1vZHVsZU5h
bWVWYWx1ZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4pCitKU0ludGVybmFsUHJv
bWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01vZHVsZUxvYWRlciosIEpTU3Ry
aW5nKiBtb2R1bGVOYW1lVmFsdWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgU291cmNlT3Jp
Z2luJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTE4MzUsNyArMTgz
NSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9y
dE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKCFkaXJlY3RvcnlOYW1lKQog
ICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZShjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUgcmVmZXJyZXIgbmFtZSAnIiwgU3RyaW5nKHJlZmVycmVy
LmltcGwoKSksICInLiIpKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6aW1wb3J0TW9kdWxl
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJlY3RvcnlO
YW1lLnZhbHVlKCksIE1vZHVsZU5hbWUobW9kdWxlTmFtZSkpKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBKU0M6OmltcG9ydE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1bGVOYW1l
KG1vZHVsZU5hbWUpKSksIHBhcmFtZXRlcnMsIGpzVW5kZWZpbmVkKCkpOwogICAgIHNjb3BlLnJl
bGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xOTg1
LDcgKzE5ODUsNyBAQCBzdGF0aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVM
b2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSwgSlNW
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwpAQCAtMzI3Myw3ICszMjczLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVj
KQogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3Jp
cHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZp
bGUuIikpKSk7CiAKLSAgICBKU0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZShleGVjLCBmaWxlTmFtZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21p
c2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgZmlsZU5hbWUsIGpzVW5kZWZpbmVkKCks
IGpzVW5kZWZpbmVkKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBlcnJvcjsKQEAgLTM2NjAsNyArMzY2MCw3IEBAIHN0
YXRpYyBib29sIHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21t
YW5kTGluZSYgb3B0aW9ucykKICAgICAgICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJc
InVzZSBzdHJpY3RcIjtcbiIsIHN0cmxlbigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CiAKICAgICAg
ICAgICAgIGlmIChpc01vZHVsZSkgewotICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5k
RXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZpbGVOYW1lKTsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBmaWxlTmFtZSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7
CiAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9j
YWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHRCdWZmZXIpKQpAQCAtMzY3Niw3ICszNjc2LDcg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvbW1hbmRMaW5lJiBvcHRpb25zKQogICAgICAgICBib29sIGlzTGFzdEZpbGUgPSBpID09IHNj
cmlwdHMuc2l6ZSgpIC0gMTsKICAgICAgICAgaWYgKGlzTW9kdWxlKSB7CiAgICAgICAgICAgICBp
ZiAoIXByb21pc2UpCi0gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRG
KHNjcmlwdEJ1ZmZlciksIFNvdXJjZU9yaWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwg
ZmlsZU5hbWUsIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVs
ZSkpOworICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3JpcHRC
dWZmZXIpLCBTb3VyY2VPcmlnaW4geyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1l
LCBUZXh0UG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICAg
ICAgICAgIEpTRnVuY3Rpb24qIGZ1bGZpbGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJiwgaXNMYXN0RmlsZV0oRXhl
Y1N0YXRlKiBleGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCmluZGV4IGJmYTIwZjYyM2UxOGI1MzlkMGVlYWMyZmM0NzIyMDE3MGUzOGVlNjcuLjA1
ZmEzMThhMzNjOGJiZDliNzFhZGM0MWU1MTcyZjczNTkzZGVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0xNTQsMjQgKzE1NCwxNCBAQCBz
dGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIHJlamVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwog
fQogCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25z
dCBKU0xvY2tIb2xkZXImLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQotewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5s
b2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZl
dGNoZXIpOwotfQotCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQotewotICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9j
aywgZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1v
ZHVsZU5hbWUpLCBqc1VuZGVmaW5lZCgpLCBzY3JpcHRGZXRjaGVyKTsKLX0KLQotSlNJbnRlcm5h
bFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21p
c2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJl
bnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgcmV0dXJuIGxvYWRBbmRFdmFsdWF0
ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOworICAgIHJl
dHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5sb2FkQW5k
RXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIp
OwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
CkBAIC0xOTAsMjcgKzE4MCwxNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRl
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cgogICAgIGdsb2Jh
bE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGVGZXRjaChleGVjLCBrZXksIHNvdXJjZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0UHJvbWlzZShleGVjLCBnbG9i
YWxPYmplY3QpKTsKIAotICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhl
YywgZ2xvYmFsT2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOwotfQot
Ci1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVy
JiwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKLXsK
LSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+bG9hZE1vZHVsZShleGVj
LCBtb2R1bGVOYW1lLCByZWZlcnJlciwgc2NyaXB0RmV0Y2hlcik7Ci19Ci0KLXN0YXRpYyBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQotewotICAgIHJldHVybiBsb2Fk
TW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNWYWx1ZShleGVj
LT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSwgc2NyaXB0RmV0Y2hlcik7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShleGVjLCBrZXksIGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOwogfQogCi1KU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIGxvYWRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUg
cGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKTsKIAotICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50
cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1l
KSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KS0+bW9kdWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1ZSh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSksIHBhcmFtZXRlcnMs
IHNjcmlwdEZldGNoZXIpOwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKQpAQCAtMjMwLDcgKzIxMCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgZ2xv
YmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZUZldGNoKGV4ZWMsIGtleSwgc291cmNl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3RQcm9taXNlKGV4ZWMsIGds
b2JhbE9iamVjdCkpOwogCi0gICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFs
T2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlKGV4ZWMsIGtleSwganNVbmRl
ZmluZWQoKSwgc2NyaXB0RmV0Y2hlcik7CiB9CiAKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCkBAIC0yNDQsMTQgKzIyNCwxNCBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
SlNWYQogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZh
bHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlS2V5KSwgc2Ny
aXB0RmV0Y2hlcik7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0
Y2hlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVy
biBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1w
b3J0TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+bW9kdWxlTG9hZGVyKCktPnJlcXVlc3RJbXBvcnRN
b2R1bGUoZXhlYywgbW9kdWxlS2V5LCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKaW5kZXggNzkzNGQ2MzJlYTUwYzM3MDIyNTJhNDliYjE2OTg4NGI2YzllZWRkYi4uZGU0
NDhhNDA4NDcxYzc0MmU2ZjIyODhmMWFhNzI0ZTMzZjg5NzQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtNTcsMTYgKzU3LDE2IEBAIGlubGluZSBK
U1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxpbmdSZWFzb24g
cmVhc29uLCBjb25zdCBTCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCogc2Nv
cGVFeHRlbnNpb24sIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAog
Ly8gTG9hZCB0aGUgbW9kdWxlIHNvdXJjZSBhbmQgZXZhbHVhdGUgaXQuCi1KU19FWFBPUlRfUFJJ
VkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRl
ZmluZWQoKSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2
YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CitK
U19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwog
CiAvLyBGZXRjaCB0aGUgbW9kdWxlIHNvdXJjZSwgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUg
cmVjb3JkLgotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUo
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIgPSBqc1VuZGVmaW5lZCgpKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwg
SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworSlNfRVhQT1JUX1BS
SVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKIC8vIExpbmsgYW5kIGV2YWx1YXRl
IHRoZSBhbHJlYWR5IGxpbmtlZCBtb2R1bGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGEg
c3luYyBtYW5uZXIuCi1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1v
ZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlciA9IGpzVW5kZWZpbmVkKCkpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBs
aW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
S2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVy
bmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50
ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5LCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggZjFhOGVkZDI0NGZmODczYmZiY2E0ZGZjMTkzOGFiNGMzZGUx
NDI3ZS4uNGEyNTBiOTZjMTdkNTZlOTUwZWRmMTY1YjI0OTBkMDMzN2JlZTEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xODYsMTMg
KzE4NiwxMyBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYg
Ym9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNvbnN0IEpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0ciBz
aG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0OwogCi0gICAgdHlwZWRlZiBKU0ludGVy
bmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGVQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyosIGNvbnN0IFNvdXJjZU9y
aWdpbiYpOworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxlTG9hZGVySW1w
b3J0TW9kdWxlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVy
KiwgSlNTdHJpbmcqLCBKU1ZhbHVlLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsKICAgICBNb2R1bGVM
b2FkZXJJbXBvcnRNb2R1bGVQdHIgbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlOwogCiAgICAgdHlw
ZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJSZXNvbHZlUHRyKShKU0dsb2Jh
bE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwg
SlNWYWx1ZSk7CiAgICAgTW9kdWxlTG9hZGVyUmVzb2x2ZVB0ciBtb2R1bGVMb2FkZXJSZXNvbHZl
OwogCi0gICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJGZXRjaFB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUs
IEpTVmFsdWUpOworICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxlTG9hZGVy
RmV0Y2hQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBK
U1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVMb2FkZXJGZXRjaFB0ciBtb2R1
bGVMb2FkZXJGZXRjaDsKIAogICAgIHR5cGVkZWYgSlNPYmplY3QqICgqTW9kdWxlTG9hZGVyQ3Jl
YXRlSW1wb3J0TWV0YVByb3BlcnRpZXNQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU01vZHVsZVJlY29yZCosIEpTVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDM3MTkxOTc1ZTE5MTQ3NGFiNmVhMzRmZGJjMmE4YWRiZjk3YWFh
MDIuLjQyMjA5ZDZmZWQ4MDYwYWQ0NWExMjg0ZWY2ZWNkOTA2M2NmMDM1ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTc5Nyw3ICs3OTcsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwogICAgIH0KIAotICAgIGF1dG8q
IGludGVybmFsUHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1v
ZHVsZShleGVjLCBzcGVjaWZpZXIsIHNvdXJjZU9yaWdpbik7CisgICAgLy8gV2UgYWx3YXlzIHNw
ZWNpZnkgcGFyYW1ldGVycyBhcyB1bmRlZmluZWQuIE9uY2UgZHluYW1pYyBpbXBvcnQoKSBzdGFy
dHMgYWNjZXB0aW5nIGZldGNoaW5nIHBhcmFtZXRlcnMsCisgICAgLy8gd2Ugc2hvdWxkIHJldHJp
ZXZlIHRoaXMgZnJvbSB0aGUgYXJndW1lbnRzLgorICAgIEpTVmFsdWUgcGFyYW1ldGVycyA9IGpz
VW5kZWZpbmVkKCk7CisgICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gZ2xvYmFsT2JqZWN0LT5t
b2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKGV4ZWMsIHNwZWNpZmllciwgcGFyYW1ldGVycywg
c291cmNlT3JpZ2luKTsKICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3Bl
LmV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNWFk
YzAyYzY0YTZjMDJmNDRhMTU1ODA4MTYzMDM2ZGYyNWU1ZWMxOS4uNTBmNTE0ODBlODI4NjMzOTRl
MDEzZGZmNzA4MWQ0NWY3Y2M5OGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtOTksNyArOTksNyBAQCBKU1ZhbHVlIEpTTW9k
dWxlTG9hZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgY29u
c3QgU291cmNlQwogICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0lu
dGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMTIsMTQgKzExMiwxNCBAQCBK
U0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlTmFtZSk7Ci0gICAgYXJndW1lbnRzLmFw
cGVuZChyZWZlcnJlcik7CisgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0ZXJzKTsKICAgICBh
cmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwogfQogCi1KU0ludGVybmFs
UHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
K0pTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZE1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNj
cmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMzIsNyArMTMyLDcgQEAgSlNJbnRlcm5h
bFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBtb2R1bGVOYW0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAg
ICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZU5hbWUpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQocmVm
ZXJyZXIpOworICAgIGFyZ3VtZW50cy5hcHBlbmQocGFyYW1ldGVycyk7CiAgICAgYXJndW1lbnRz
LmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTE1OCw3
ICsxNTgsNyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZUtleQogICAgIHJldHVybiBjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiB9CiAKLUpT
SW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1Zh
bHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTE3MSwxMyArMTcxLDE0IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVx
dWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkCiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhl
eGVjLCBtb2R1bGVLZXkuaW1wbCgpKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0ZXJz
KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogCiAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwogfQogCi1K
U0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTU3RyaW5nKiBtb2R1bGVOYW1lLCBjb25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVy
KQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjppbXBvcnRNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZyogbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25z
dCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKQogewogICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxl
TG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2coIkxvYWRlciBbaW1wb3J0XSAiLCBwcmlu
dGFibGVNb2R1bGVLZXkoZXhlYywgbW9kdWxlTmFtZSksICJcbiIpOwpAQCAtMTg3LDcgKzE4OCw3
IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgSlNTdHJpbmcqIG1vZHVsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKQotICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUoZ2xvYmFsT2JqZWN0LCBleGVjLCB0aGlzLCBtb2R1bGVOYW1lLCByZWZlcnJlcik7CisgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVs
ZUxvYWRlckltcG9ydE1vZHVsZShnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIG1vZHVsZU5hbWUs
IHBhcmFtZXRlcnMsIHJlZmVycmVyKTsKIAogICAgIGF1dG8qIGRlZmVycmVkID0gSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBt
b2R1bGVOYW1lU3RyaW5nID0gbW9kdWxlTmFtZS0+dmFsdWUoZXhlYyk7CkBAIC0yMTQsNyArMjE1
LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXNvbHZlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHUKICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21p
c2UoKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0ludGVy
bmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAg
IGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2co
IkxvYWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsK
QEAgLTIyMyw3ICsyMjQsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZl
dGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bW9kdWxlTG9hZGVyRmV0Y2gpCi0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywg
dGhpcywga2V5LCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0
LCBleGVjLCB0aGlzLCBrZXksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogICAgIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtl
eS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxv
YWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaApp
bmRleCA5M2QzOGY3Mzk3NzYxNjczZjgyMGM0OGFhYTg1NjE2NjM5NDk0YzMzLi44OWE0NzM2M2Yy
MWU0MTg1NzIxOWQ1YjcxZGNlOGExOGI2OWVhYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBjbGFzcyBK
U01vZHVsZUxvYWRlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMg
dG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGVGZXRjaChF
eGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIEpTSW50ZXJu
YWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFt
ZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9k
dWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAg
IEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxl
TmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpT
VmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlS2V5
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXF1ZXN0
SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXF1ZXN0SW1wb3J0TW9kdWxlKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcik7CiAKICAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMu
Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyogbW9kdWxlTmFtZSwgY29uc3QgU291cmNlT3JpZ2luJiByZWZlcnJlcik7CisgICAgSlNJbnRl
cm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBKU1N0cmluZyogbW9kdWxlTmFt
ZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKTsKICAg
ICBKU0ludGVybmFsUHJvbWlzZSogcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG5hbWUsIEpT
VmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNJbnRlcm5hbFBy
b21pc2UqIGZldGNoKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTT2Jq
ZWN0KiBjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwg
SlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gQWRkaXRp
b25hbCBwbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTYxNGFmZWQ0OWVhYjU3ZDJhMGY1MDIwY2RkMWM4NWIzMzRiNjJjMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnM6OnNfaW5mbyA9IHsgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzIiwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NjcmlwdEZldGNoUGFyYW1ldGVycykg
fTsKKwordm9pZCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAgc3RhdGljX2Nhc3Q8SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMqPihjZWxsKS0+fkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTdhZDcyNWNiNjAxZjkzN2E4ZmZiMTdmYzkyYjJiMmE4ZjE0MmM3
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNj
cmlwdEZldGNoUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMgOiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNDZWxsOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFNjcmlwdEZldGNoUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgYXV0byogcmVzdWx0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM+KHZtLmhlYXAp
KSBKU1NjcmlwdEZldGNoUGFyYW1ldGVycyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKyAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKiBj
cmVhdGUoVk0mIHZtLCBSZWY8U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMpCisg
ICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCB2bS5zY3JpcHRGZXRjaFBhcmFtZXRlcnNT
dHJ1Y3R1cmUuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIH0KKworICAgIFNjcmlw
dEZldGNoUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisKK3ByaXZhdGU6CisgICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFNjcmlwdEZldGNoUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAgICAgLCBtX3BhcmFt
ZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPFNjcmlw
dEZldGNoUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IGVlZTJhNWVhNTE5Nzcx
YWRhNTM5ZTEzY2RhMmI5ZTVmMzIxN2Y2NDEuLmMwMTcwMjM0ZTI4NmFiNzcwODllOGFmMTgyMWU3
NDA2NDMzMWFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC01
Miw2ICs1Miw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgSlNGaXhlZEFycmF5VHlw
ZSwKICAgICBKU1NvdXJjZUNvZGVUeXBlLAogICAgIEpTU2NyaXB0RmV0Y2hlclR5cGUsCisgICAg
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNUeXBlLAogCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFs
dWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09i
amVjdC4KICAgICBPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggNDVlMjZkZWRmNTYyNTVj
ZmY3NjU1OGE4MGI0NTNhNjljNGQxMjlkNy4uNzExYTIwMmZlYTllMzYwODJhOGU4ZWNlYjBlOGZi
MjFmMjhhYWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCkBAIC03Myw4ICs3Myw2IEBAIGNvbnN0IENsYXNz
SW5mbyBNb2R1bGVMb2FkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZC
YXNlOjpzX2luZm8sCiAgICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCiAgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
CiAgICAgcmVxdWVzdFNhdGlzZnkgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAg
cmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcmVxdWVz
dFJlYWR5ICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgbGluayAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgbW9kdWxlRGVjbGFyYXRpb25J
bnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFu
dGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCkBAIC04Myw3ICs4MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBN
b2R1bGVMb2FkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpz
X2luZm8sCiAgICAgbG9hZEFuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAz
CiAgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAg
bGlua0FuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcmVxdWVz
dEltcG9ydE1vZHVsZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdEltcG9y
dE1vZHVsZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgZ2V0TW9kdWxlTmFtZXNwYWNl
T2JqZWN0ICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUdldE1vZHVsZU5hbWVzcGFjZU9iamVj
dCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCkBAIC0xOTUsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
SlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobG9hZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQo
MSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZUdl
dE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4ODI4M2ZlMDIxODMwM2Y1ZGJmNDc5MjNkMzc5YTJjNjc5YTM4OTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzIDog
cHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxZWE3MWM4YjExMzBh
NjI2YWRlYzY0OTc4ODk0NjczMjk3YzUzM2JmLi5kNGIwNjRkMTI2ZGRlZTRmMWMxNzFkM2YzMWM1
NjIyNDI5YzE4OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03Myw2
ICs3Myw3IEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNo
ZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKQEAg
LTI1Myw2ICsyNTQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgZml4ZWRBcnJheVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTRml4ZWRBcnJheTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNvdXJjZUNvZGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1NvdXJjZUNvZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBzY3JpcHRGZXRjaGVyU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRj
aGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgc2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFp
blN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQo
KnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywgSlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAyNTgwYTg1MjVkYjNhODRhODM2NjZm
YTAwNzAwMmExMjYwMjc2YzIwLi4yOTZmNTFhNWYzNGRiMjZjMmYxNjA5MGMwZWJhMjgyOGQ2NzM1
ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlM
aW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZpeGVkQXJyYXlTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc291cmNlQ29kZVN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBzY3JpcHRGZXRjaGVyU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHNjcmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFy
c2VBcnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRl
UmVnaXN0cnlLZXlTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzMyOWJiMGI5ZDA4NGUzYmQyMTY3NzQ3NGUxMWM5YjhmNDQ4ODQzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Nj
cmlwdEZldGNoUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNGZjOGE2ZDVhYzJkYmRhNzk0YzIw
MTU5OTU5NDVkZjY1YWMzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEs
MjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGZXRjaFBhcmFt
ZXRlcnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1v
ZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGYxNWE0NjQyZTg3ZmE0MWJjODk5NjNlZjdmM2M0
YTc4NjI0YzRhMGYuLjIwMTg4NDc3OTYxOTAyYjc1ZTVkYjhmMTBmNDliZWQ3ZjBhMjg3MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3Js
ZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5j
bHVkZSAiTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlw
dE1vZHVsZUxvYWRlci5oIgpAQCAtMzgsMTUgKzM5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyOjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiBjbGllbnQsIERlZmVy
cmVkUHJvbWlzZSYgcHJvbWlzZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcikK
K1JlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
Y3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBEZWZlcnJlZFBy
b21pc2UmIHByb21pc2UsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIsIFJlZlB0
cjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoY2xpZW50LCBwcm9taXNlLCBzY3Jp
cHRGZXRjaGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyKGNsaWVudCwgcHJvbWlzZSwgc2NyaXB0RmV0Y2hlciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSkpOwogfQogCi1DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExv
YWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgRGVmZXJyZWRQcm9t
aXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyKQorQ2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyQ2xpZW50JiBjbGllbnQsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgQ2Fj
aGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlciwgUmVmUHRyPE1vZHVsZUZldGNoUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzKQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcHJv
bWlzZSgmcHJvbWlzZSkKICAgICAsIG1fc2NyaXB0RmV0Y2hlcihzY3JpcHRGZXRjaGVyKQorICAg
ICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5k
ZXggMDQ5MjNmNGRjMjMzN2FiNjIwYWEwZjUwZGRjODU3OTlkMWViMWZkMC4uZjNlMzQ2YmVhN2Ux
OGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTM5LDExICszOSwx
MiBAQCBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIE1vZHVsZUZl
dGNoUGFyYW1ldGVyczsKIGNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwg
cHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJD
bGllbnQmLCBEZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJik7CisgICAgc3Rh
dGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiwg
UmVmUHRyPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIoKTsKIApAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZQogCiAgICAgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlcigpIHsgcmV0
dXJuIG1fc2NyaXB0RmV0Y2hlci5nZXQoKTsgfQogICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2Ny
aXB0KCkgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KKyAgICBNb2R1bGVGZXRjaFBh
cmFtZXRlcnMqIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KIAog
ICAgIHZvaWQgY2xlYXJDbGllbnQoKQogICAgIHsKQEAgLTU5LDEzICs2MSwxNCBAQCBjbGFzcyBD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZQogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiwgRGVmZXJyZWRQcm9taXNl
JiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOworICAgIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmLCBDYWNoZWRT
Y3JpcHRGZXRjaGVyJiwgUmVmUHRyPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0
cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKICAgICBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hl
cj4gbV9zY3JpcHRGZXRjaGVyOworICAgIFJlZlB0cjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2Fj
aGVkU2NyaXB0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggMzA1N2MyNjE4ODBlNzFlYTkzNGYwZThmZjcwNTM1YmU4OTRiYjdk
NC4uYWQyOGU4ZDg0ZjYzN2E5Y2YyOTU0OGMwZTg1NjhjNmY0ZGQ3NmE5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0zNzMsMTEgKzM3
MywxMSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxv
YWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBkZWZlcnJlZC0+cmVq
ZWN0KGV4ZWMsIGpzVW5kZWZpbmVkKCkpOwogfQogCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBK
U0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1v
ZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxv
YWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVl
IG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0
PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFJlZlB0cjxEb2N1bWVu
dD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVj
LCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CisgICAgICAgIHJldHVy
biBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPmZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgbW9k
dWxlTG9hZGVyLCBtb2R1bGVLZXksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogICAgIEpT
Qzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzkwLDExICszOTAs
MTEgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5l
ZCgpOwogfQogCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVs
ZUxvYWRlckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpT
Qzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJiBzb3VyY2VP
cmlnaW4pCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxv
YWRlckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTQzo6
SlNTdHJpbmcqIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBKU0M6
OlNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhp
c09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7CiAg
ICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+aW1w
b3J0TW9kdWxlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlTG9hZGVyLCBtb2R1bGVOYW1lLCBz
b3VyY2VPcmlnaW4pOworICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5p
bXBvcnRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZU5hbWUs
IHBhcmFtZXRlcnMsIHNvdXJjZU9yaWdpbik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRl
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywg
anNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oCmluZGV4IDA3NmNiNjNkYWQ5NWU1YzA5YTQ5ZjY5NjkzZTM1ZjNjYzVlNDNlZWMu
LjIxNTBjNmEwZGFiNDg5NjJlY2VhNTAxYzQzZGNjMGRkMTQ3OWJmNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC03Niw5ICs3Niw5IEBAIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIEpTRE9NV2luZG93QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9i
amVjdCB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1v
ZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpT
VmFsdWUpOwotICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJG
ZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxl
TG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSk7Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckltcG9y
dE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9k
dWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyosIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7Cisg
ICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVs
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1N0cmluZyosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpTb3VyY2VPcmln
aW4mKTsKICAgICBzdGF0aWMgdm9pZCBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTUHJvbWlzZSosIEpTQzo6SlNQcm9t
aXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsKIAogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fd3JhcHBl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgKaW5kZXggZjY0MTA5Y2I5NTM2YjJiNDlmZGM5Y2U1OTc3MzE0ODA3NDM2YWUwMC4uYTQ0
NjFhMTU0MDE5OGRlZWNkY2ZlYTljYTJkZDVjMjcwMmQ5OGUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTkwLDEwICs5
MCwxMCBAQCBjbGFzcyBKU01haW5UaHJlYWRFeGVjU3RhdGUgewogICAgICAgICB0YXNrLnJ1bihl
eGVjKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSYgbG9hZE1v
ZHVsZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlND
OjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCisgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21p
c2UmIGxvYWRNb2R1bGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hl
cikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoJnN0
YXRlKTsKLSAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1bGUoJnN0YXRlLCBtb2R1bGVOYW1l
LCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1bGUoJnN0YXRl
LCBtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSYgbG9hZE1vZHVsZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNDOjpKU1ZhbHVlIHNj
cmlwdEZldGNoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDI4MjY4M2MyYmU0ZjM5Mjg0NjQwOGYxMDJmMTliNjIyNWU2MzJiOTEu
LjZiZTNjMGFiNjIzNzBkZDBhZGVhMGNjN2NiNGQ4NDhiZjcwZTE0ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiTG9hZGFibGVNb2R1bGVTY3JpcHQuaCIKICNpbmNsdWRlICJNYWluRnJh
bWUuaCIKICNpbmNsdWRlICJNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmgiCisjaW5jbHVkZSAiTW9k
dWxlRmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTlBfanNvYmplY3QuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKQEAgLTYyLDYgKzYzLDcg
QEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1NjcmlwdEZldGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC0xOTAsMjAgKzE5MiwyMCBA
QCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbgogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291
cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGV4Y2VwdGlvbkRldGFpbHMpOwogfQog
Ci12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxl
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNj
cmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3Ry
aW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmIHRvcExldmVsRmV0
Y2hQYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHdvcmxkLnZtKCkpOwogCiAgICAgYXV0byYgcHJveHkgPSAqd2luZG93UHJveHkod29y
bGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAK
LSAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0
YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRlLnZtKCks
IHsgJm1vZHVsZVNjcmlwdCB9KSk7CisgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1NjcmlwdEZldGNo
UGFyYW1ldGVyczo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1vdmUodG9wTGV2ZWxGZXRjaFBhcmFt
ZXRlcnMpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZtb2R1
bGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMobW9kdWxlU2NyaXB0
LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVs
ZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcm
IG1vZHVsZU5hbWUpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoTG9h
ZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1l
LCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmIHRvcExldmVsRmV0Y2hQYXJhbWV0ZXJzKQog
ewotICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbW9kdWxlTmFtZSwg
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1v
ZHVsZVNjcmlwdCwgbW9kdWxlTmFtZSwgV1RGTW92ZSh0b3BMZXZlbEZldGNoUGFyYW1ldGVycyks
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjps
b2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0
LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IGVjNGVkMzcwZDcxOTc3NzRhZjA0OTkyMGQ0NmNjYTc4MDUyZDBiNWEuLmQ4NWY2NmRiOGQ5
Nzg4ODhmOTQ4MWIyZjY5M2FkYTg5YjJkNTFkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgRnJhbWU7
CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIExv
YWRhYmxlTW9kdWxlU2NyaXB0OworY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3Mg
U2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMOwpAQCAt
MTE1LDggKzExNiw4IEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIEpTQzo6SlNWYWx1
ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWlscyogPSBu
dWxscHRyKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIp
OwogCi0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlw
dCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgdm9p
ZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9k
dWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
TG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBl
cldvcmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0
JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRleCBiNjdmZmEzZTYwMjU4MGUyZjZm
MzU1ZThjOTQ1YWY2M2VkNGIyNTZkLi4xYzYyZjQyY2E3MTI4NjkyMDBhMGY5YTQwMWUzODhkOTIy
NWU1NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5jcHAKQEAgLTM1LDEzICszNSwxNiBAQAogI2luY2x1ZGUgIkxvYWRhYmxlTW9kdWxl
U2NyaXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1vZHVs
ZUZldGNoRmFpbHVyZUtpbmQuaCIKKyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNlSW50ZWdyaXR5LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTW9kdWxlUmVjb3Jk
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1NvdXJj
ZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CkBAIC0xMzksOSArMTQyLDEw
IEBAIHN0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRlTmV0d29ya0Vycm9yKERlZmVycmVkUHJv
bWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoCiAgICAgfSk7CiB9CiAKLUpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCog
anNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVy
KiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hl
cikKK0pTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpT
VmFsdWUgcGFyYW1ldGVycywgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgQVNT
RVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KGV4ZWMtPnZtKCks
IHNjcmlwdEZldGNoZXIpKTsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNT
RVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KHZtLCBzY3JpcHRG
ZXRjaGVyKSk7CiAKICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihqc0dsb2JhbE9iamVjdCk7CiAgICAgYXV0byYganNQcm9taXNlID0gKkpT
Qzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsICZnbG9iYWxPYmplY3Qp
OwpAQCAtMTY0LDcgKzE2OCwxMSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1
bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsTwogICAgICAgICBy
ZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKICAgICB9CiAKLSAgICBhdXRvIGxvYWRlciA9IENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5nZXQoKSwgKnN0
YXRpY19jYXN0PENhY2hlZFNjcmlwdEZldGNoZXIqPihKU0M6OmpzQ2FzdDxKU0M6OkpTU2NyaXB0
RmV0Y2hlcio+KHNjcmlwdEZldGNoZXIpLT5mZXRjaGVyKCkpKTsKKyAgICBSZWZQdHI8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiB0b3BMZXZlbEZldGNoUGFyYW1ldGVyczsKKyAgICBpZiAoYXV0byog
c2NyaXB0RmV0Y2hQYXJhbWV0ZXJzID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMqPih2bSwgcGFyYW1ldGVycykpCisgICAgICAgIHRvcExldmVsRmV0Y2hQ
YXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzKj4oJnNjcmlwdEZl
dGNoUGFyYW1ldGVycy0+cGFyYW1ldGVycygpKTsKKworICAgIGF1dG8gbG9hZGVyID0gQ2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVycmVkLmdldCgpLCAqc3RhdGlj
X2Nhc3Q8Q2FjaGVkU2NyaXB0RmV0Y2hlcio+KEpTQzo6anNDYXN0PEpTQzo6SlNTY3JpcHRGZXRj
aGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIoKSksIFdURk1vdmUodG9wTGV2ZWxGZXRjaFBh
cmFtZXRlcnMpKTsKICAgICBtX2xvYWRlcnMuYWRkKGxvYWRlci5jb3B5UmVmKCkpOwogICAgIGlm
ICghbG9hZGVyLT5sb2FkKG1fZG9jdW1lbnQsIGNvbXBsZXRlZFVSTCkpIHsKICAgICAgICAgbG9h
ZGVyLT5jbGVhckNsaWVudCgpOwpAQCAtMjEyLDcgKzIyMCw3IEBAIHN0YXRpYyBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlKiByZWplY3RQcm9taXNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01H
bG9iYWxPCiAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CiB9CiAKLUpTQzo6SlNJbnRl
cm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciosIEpTQzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIGNvbnN0IEpTQzo6U291cmNl
T3JpZ2luJiBzb3VyY2VPcmlnaW4pCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1
bGVMb2FkZXI6OmltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVj
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3Ry
aW5nKiBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgSlNDOjpTb3Vy
Y2VPcmlnaW4mIHNvdXJjZU9yaWdpbikKIHsKICAgICBhdXRvJiBzdGF0ZSA9ICpleGVjOwogICAg
IEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI0OCw3ICsyNTYsNyBAQCBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBqcwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gcmVqZWN0UHJv
bWlzZShzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBUeXBlRXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKIAot
ICAgIHJldHVybiBKU0M6OmltcG9ydE1vZHVsZShleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCByZXN1bHQtPnN0cmluZygpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0
ZSh2bSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSApKTsKKyAgICByZXR1cm4gSlNDOjppbXBvcnRN
b2R1bGUoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVzdWx0LT5zdHJp
bmcoKSksIHBhcmFtZXRlcnMsIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUodm0sIFdURk1v
dmUoc2NyaXB0RmV0Y2hlcikgKSk7CiB9CiAKIHZvaWQgU2NyaXB0TW9kdWxlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXImIGxvYWRlciwgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gcHJvbWlzZSkKQEAgLTI4NCw2ICsyOTIsMTMgQEAgdm9pZCBTY3JpcHRNb2R1
bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciYgbG9hZGVy
LCBSZWZQdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChhdXRvKiBwYXJhbWV0
ZXJzID0gbG9hZGVyLnBhcmFtZXRlcnMoKSkgeworICAgICAgICBpZiAoIW1hdGNoSW50ZWdyaXR5
TWV0YWRhdGEoY2FjaGVkU2NyaXB0LCBwYXJhbWV0ZXJzLT5pbnRlZ3JpdHkoKSkpIHsKKyAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2Fk
IHNjcmlwdCAiLCBjYWNoZWRTY3JpcHQudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCksICIuIEZhaWxlZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suIikpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgbV9yZXF1ZXN0VVJMVG9SZXNwb25z
ZVVSTE1hcC5hZGQoY2FjaGVkU2NyaXB0LnVybCgpLCBjYWNoZWRTY3JpcHQucmVzcG9uc2UoKS51
cmwoKSk7CiAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhDYWxsYmFjayhbJl0gKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmKSB7CiAgICAgICAgIHJldHVybiBKU0M6OkpT
U291cmNlQ29kZTo6Y3JlYXRlKHN0YXRlLnZtKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4IDZlN2E2MWI1Nzg0MzhjNzc2NGI4ODBi
MTJhNTk0NzlkYmFjNGVhYjguLjc5ZmRmNDc3YjhkZmY1NGEyZGE4NzFkNDk0N2M0YzExOTgzZWU4
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5oCkBAIC01Niw5ICs1Niw5IEBAIGNsYXNzIFNjcmlwdE1vZHVsZUxvYWRlciBmaW5hbCA6IHBy
aXZhdGUgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlKiByZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGlt
cG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBmZXRj
aChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpT
Qzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlcios
IEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpTQzo6
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBpbXBv
cnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01v
ZHVsZUxvYWRlciosIEpTQzo6SlNTdHJpbmcqLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwor
ICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmlu
ZyosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyJiwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKaW5kZXggMTI1NzU5ODExODdiNGY0ZGIwNmU4MGFk
MzVjNjlhZDkzOGYwMTQyNS4uZDc2OWU4MjEyMGI4Mzc1MjMyOGFjMjA2MmU1NDUyNGZlZmQ4ZGQy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCkBAIC0y
OCwxOCArMjgsMjAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gTG9hZGFibGVNb2R1bGVTY3JpcHQ6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9k
ZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5h
bWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitSZWY8TG9hZGFibGVNb2R1bGVTY3Jp
cHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9v
bCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBM
b2FkYWJsZU1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0
aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IExvYWRhYmxlTW9kdWxlU2NyaXB0KG5vbmNlLCBpbnRlZ3JpdHksIGNyb3NzT3JpZ2lu
TW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpKTsK
IH0KIAotTG9hZGFibGVNb2R1bGVTY3JpcHQ6OkxvYWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0
cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNl
ckFnZW50U2hhZG93VHJlZSkKK0xvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJsZU1vZHVsZVNj
cmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3Qg
U3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQog
ICAgIDogTG9hZGFibGVTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5p
dGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgLCBtX3BhcmFtZXRlcnMo
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUoaW50ZWdyaXR5KSkKIHsKIH0KIApAQCAtOTEs
NyArOTMsNyBAQCB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0OjpleGVjdXRlKFNjcmlwdEVsZW1l
bnQmIHNjcmlwdEVsZW1lbnQpCiB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMKQogewogICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxl
U2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIG1fcGFyYW1ldGVycy5j
b3B5UmVmKCkpOwogfQogCiB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKaW5kZXggN2M1NWZlNzEwNjU3N2Y1M2Nj
NDgxNWI1ZTU5NGM3NjY0ZGM3ZDE2Ny4uYmExZmUxZGExZjkwNDlhNGZiN2NkMmU0ZjlkOWIxMjYz
NWUwNmExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKQEAg
LTMxLDEyICszMSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRTb3Vy
Y2VDb2RlOworY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogCiBjbGFzcyBMb2FkYWJsZU1v
ZHVsZVNjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TG9hZGFibGVNb2R1bGVTY3JpcHQoKTsKIAotICAgIHN0YXRpYyBSZWY8TG9hZGFi
bGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0
YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNl
LCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1l
LCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgaXNMb2FkZWQoKSBj
b25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFs
OwpAQCAtNTksOCArNjAsOSBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1
YmxpYyBMb2FkYWJsZVNjcmlwdCB7CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVsZUtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlS2V5LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgTG9h
ZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBMb2FkYWJs
ZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0
eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKTsKIAorICAgIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+IG1fcGFyYW1ldGVyczsK
ICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fbW9kdWxlS2V5OwogICAgIHN0ZDo6b3B0
aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vycm9yOwogICAgIGJvb2wgbV93YXNDYW5j
ZWxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmIxOThiZmRjZmM3OTAyZDQ5N2QzYjk0MTFkMjA5MTJmZTc4NGFiZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb2R1bGVGZXRjaFBhcmFtZXRl
cnMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVycyA6IHB1YmxpYyBKU0M6OlNj
cmlwdEZldGNoUGFyYW1ldGVycyB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2R1bGVGZXRj
aFBhcmFtZXRlcnM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGludGVncml0eSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZUZldGNoUGFyYW1ldGVycyhpbnRlZ3JpdHkp
KTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZWdyaXR5OyB9CisKK3ByaXZhdGU6CisgICAgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzKGNv
bnN0IFN0cmluZyYgaW50ZWdyaXR5KQorICAgICAgICA6IG1faW50ZWdyaXR5KGludGVncml0eSkK
KyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIG1faW50ZWdyaXR5OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGE4MzNl
MjgyMjZkZGQxZGNkMTQyZDVjYTIyYjM1NDYyZTJiOWMwZWYuLjQyODZiMTdhZjEzYmRmZjJiNTli
ODQ1MGI3MjU0ZjQ3M2Q4Zjg2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
QEAgLTMzNiwxMyArMzM2LDE5IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNj
cmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAgICAgICAgIH0K
IAogICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQgPSB0cnVlOwotICAgICAgICBhdXRvIHNjcmlw
dCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwg
c2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQubG9jYWxOYW1lKCksIG1fZWxlbWVudC5pc0luVXNl
ckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZU1vZHVs
ZVNjcmlwdDo6Y3JlYXRlKAorICAgICAgICAgICAgbm9uY2UsCisgICAgICAgICAgICBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnN1YnJlc291cmNlSW50ZWdyaXR5RW5hYmxlZCgpID8g
bV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppbnRl
Z3JpdHlBdHRyKS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCksCisgICAgICAgICAgICBjcm9zc09y
aWdpbk1vZGUsCisgICAgICAgICAgICBzY3JpcHRDaGFyc2V0KCksCisgICAgICAgICAgICBtX2Vs
ZW1lbnQubG9jYWxOYW1lKCksCisgICAgICAgICAgICBtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNo
YWRvd1RyZWUoKSk7CiAgICAgICAgIHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwg
bW9kdWxlU2NyaXB0Um9vdFVSTCk7CiAgICAgICAgIG1fbG9hZGFibGVTY3JpcHQgPSBXVEZNb3Zl
KHNjcmlwdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gc2NyaXB0
ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBz
Y3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKCkpOworICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3Jp
cHQ6OmNyZWF0ZShub25jZSwgZW1wdHlTdHJpbmcoKSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRD
aGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKCkpOwogCiAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gbV9lbGVtZW50LmRv
Y3VtZW50KCkuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDogc2NyaXB0U3Rh
cnRQb3NpdGlvbjsKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0Q29udGVu
dCgpLCBtX2VsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgcG9zaXRpb24sIEpTQzo6U291cmNlUHJv
dmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdC5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5NTk1
OGY4NzAwYzYxYjJhODdmYWE1YzI5MTg0NzAxNzFhMmNhN2MuLmRkZjgzY2M5Y2VlZTJhZDE4OTNm
OTZkMDM5ODBmMWU2MGFiMGMwMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0xMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0
IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2NyaXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0
eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQtbW9kdWxlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3Nv
cmlnaW4tY3JlZHMtc2NyaXB0LW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWluZWxpZ2libGUt
c2NyaXB0LW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdWJyZXNvdXJj
ZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanM6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9zcmkt
dXRpbGl0aWVzLmpzOgorICAgICAgICAoYWRkX3Jlc3VsdF9jYWxsYmFjayk6CisgICAgICAgIChT
UklNb2R1bGVUZXN0KToKKyAgICAgICAgKFNSSU1vZHVsZVRlc3QucHJvdG90eXBlLmV4ZWN1dGUp
OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1tb2R1bGUu
aHRtbDogQWRkZWQuCisKIDIwMTctMDktMjcgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBmbGF0dGVuIGZyYW1lcyB3aGVuIGFzeW5jIGZy
YW1lIHNjcm9sbGluZyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3Jp
cHQtbW9kdWxlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3Jp
dHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWFub24tc2NyaXB0LW1vZHVsZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNmNiMWY5NjAzN2UyZjliYzNlMDI0NTQ1NmVlODVhODg0NTQ0M2MyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3Vy
Y2VzL2Nyb3Nzb3JpZ2luLWFub24tc2NyaXB0LW1vZHVsZS5qcwpAQCAtMCwwICsxIEBACit3aW5k
b3cuY3Jvc3NvcmlnaW5fYW5vbl9zY3JpcHQ9dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1j
cmVkcy1zY3JpcHQtbW9kdWxlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJj
ZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWNyZWRzLXNjcmlwdC1tb2R1bGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2E3NDM3Y2MyYWVmN2MzMDc4NmMyNzlkYWIxMTU4ODA5MWVhYzAxMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdy
aXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzCkBAIC0wLDAg
KzEgQEAKK3dpbmRvdy5jcm9zc29yaWdpbl9jcmVkc19zY3JpcHQ9dHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9j
cm9zc29yaWdpbi1pbmVsaWdpYmxlLXNjcmlwdC1tb2R1bGUuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4taW5lbGln
aWJsZS1zY3JpcHQtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNjY5M2NkMDc4OTYwZTEyZjRhODQy
YjI0NWJjMzE2ODZjOGU0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4taW5lbGlnaWJs
ZS1zY3JpcHQtbW9kdWxlLmpzCkBAIC0wLDAgKzEgQEAKK3dpbmRvdy5jcm9zc29yaWdpbl9pbmVs
aWdpYmxlX3NjcmlwdD10cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMv
bWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTIxOGRhMmI4ODJiZjI3NTFj
YTJiMTQ2YmI5NTZiNDZlM2M5Y2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1t
b2R1bGUuanMKQEAgLTAsMCArMSBAQAord2luZG93Lm1hdGNoaW5nX2RpZ2VzdD10cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVz
b3VyY2VzL3NyaS11dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291
cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGllcy5qcwppbmRleCA4OGI0ODhhNWE1
YTMyZTNhYWU0OWMyOWMwMGFkZDc1ZGNlNmZjNzk0Li45NGUxYTY2MzMyNTUyZTNlNGEyMzY0Yzg1
MmJhNDdhOTk1ZDdhODc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJl
c291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGllcy5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxp
dGllcy5qcwpAQCAtNiw3ICs2LDcgQEAKIH0KIAogYWRkX3Jlc3VsdF9jYWxsYmFjayhmdW5jdGlv
bihyZXMpIHsKLSAgICBpZiAocmVzLm5hbWUuc3RhcnRzV2l0aCgiU2NyaXB0OiAiKSB8fCByZXMu
bmFtZS5zdGFydHNXaXRoKCJTdHlsZTogIikpIHsKKyAgICBpZiAocmVzLm5hbWUuc3RhcnRzV2l0
aCgiU2NyaXB0OiAiKSB8fCByZXMubmFtZS5zdGFydHNXaXRoKCJTdHlsZTogIikgfHwgcmVzLm5h
bWUuc3RhcnRzV2l0aCgiTW9kdWxlOiAiKSkgewogICAgICAgU1JJVGVzdHMuZXhlY3V0ZSgpOwog
ICAgIH0KIH0pOwpAQCAtMTA3LDMgKzEwNyw0MCBAQAogICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZChlKTsKICAgICB0aGlzLmN1c3RvbUNhbGxiYWNrKGUsIGNvbnRhaW5lcik7CiB9OworCit2YXIg
U1JJTW9kdWxlVVJMQ291bnRlciA9IDA7Cit2YXIgU1JJTW9kdWxlVGVzdCA9IGZ1bmN0aW9uKHBh
c3MsIG5hbWUsIHNyYywgaW50ZWdyaXR5VmFsdWUsIGNyb3Nzb3JpZ2luVmFsdWUpIHsKKyAgICB0
aGlzLnBhc3MgPSBwYXNzOworICAgIHRoaXMubmFtZSA9ICJNb2R1bGU6ICIgKyBuYW1lOworICAg
IHRoaXMuc3JjID0gc3JjOworICAgIHRoaXMuaW50ZWdyaXR5VmFsdWUgPSBpbnRlZ3JpdHlWYWx1
ZTsKKyAgICB0aGlzLmNyb3Nzb3JpZ2luVmFsdWUgPSBjcm9zc29yaWdpblZhbHVlOworCisgICAg
dGhpcy50ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5hbWUpOworCisgICAgdGhpcy5xdWV1ZSA9IFNS
SVRlc3RzOworICAgIHRoaXMucXVldWUucHVzaCh0aGlzKTsKK30KKworU1JJTW9kdWxlVGVzdC5w
cm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXN0ID0gdGhpcy50ZXN0
OworICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgZS50
eXBlID0gIm1vZHVsZSI7CisgICAgZS5zcmMgPSB0aGlzLnNyYyArICIjIiArIChTUklNb2R1bGVV
UkxDb3VudGVyKyspOworICAgIGUuc2V0QXR0cmlidXRlKCJpbnRlZ3JpdHkiLCB0aGlzLmludGVn
cml0eVZhbHVlKTsKKyAgICBpZih0aGlzLmNyb3Nzb3JpZ2luVmFsdWUpIHsKKyAgICAgICAgZS5z
ZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIiwgdGhpcy5jcm9zc29yaWdpblZhbHVlKTsKKyAgICB9
CisgICAgaWYodGhpcy5wYXNzKSB7CisgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGZ1bmN0aW9uKCkge3Rlc3QuZG9uZSgpfSk7CisgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigi
ZXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbigpeyBh
c3NlcnRfdW5yZWFjaGVkKCJHb29kIGxvYWQgZmlyZWQgZXJyb3IgaGFuZGxlci4iKSB9KQorICAg
ICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uKCkgeyBhc3NlcnRf
dW5yZWFjaGVkKCJCYWQgbG9hZCBzdWNjZWVkZWQuIikgfSkKKyAgICAgICAgfSk7CisgICAgICAg
ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9uKCkge3Rlc3QuZG9uZSgpfSk7Cisg
ICAgfQorICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7Cit9OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLW1vZHVsZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLW1v
ZHVsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTQ2MmU5NDYxYTliYTlkNzYwN2YxYTcyYWM5MGZjNTdj
NjQ2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291
cmNlLWludGVncml0eS9zcmktbW9kdWxlLmh0bWwKQEAgLTAsMCArMSwyMDYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcmktdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBtYWluX2hvc3Qg
PSAnMTI3LjAuMC4xJzsKK3ZhciByZW1vdGVfaG9zdCA9ICdsb2NhbGhvc3QnOwordmFyIHBvcnRf
c3RyaW5nID0gIjgwMDAiOwordmFyIG1haW5faG9zdF9hbmRfcG9ydCA9IG1haW5faG9zdCArICc6
JyArIHBvcnRfc3RyaW5nOwordmFyIHJlbW90ZV9ob3N0X2FuZF9wb3J0ID0gcmVtb3RlX2hvc3Qg
KyAnOicgKyBwb3J0X3N0cmluZzsKKwordmFyIGNyb3Nzb3JpZ2luX2Fub25fc2NyaXB0ID0gbG9j
YXRpb24ucHJvdG9jb2wgKyAnLy8nICsgcmVtb3RlX2hvc3RfYW5kX3BvcnQgKyAnL3N1YnJlc291
cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQtbW9kdWxlLmpz
JzsKK3ZhciBjcm9zc29yaWdpbl9jcmVkc19zY3JpcHQgPSBsb2NhdGlvbi5wcm90b2NvbCArICcv
LycgKyByZW1vdGVfaG9zdF9hbmRfcG9ydCArICcvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291
cmNlcy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzJzsKK3ZhciBjcm9zc29yaWdp
bl9pbmVsaWdpYmxlX3NjcmlwdCA9IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHJlbW90ZV9o
b3N0X2FuZF9wb3J0ICsgJy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3Jp
Z2luLWluZWxpZ2libGUtc2NyaXB0LW1vZHVsZS5qcyc7CisKKy8vIFNjcmlwdCB0ZXN0cyBmcm9t
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkKKworbmV3IFNSSU1vZHVs
ZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0IHNoYTI1NiBo
YXNoLiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAi
c2hhMjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IgorKTsK
KworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBj
b3JyZWN0IHNoYTM4NCBoYXNoLiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9k
dWxlLmpzIiwKKyAgICAic2hhMzg0LWc4Zm4reHg0YnRtQlpESmxvblpOTitkRFNZalA1TnNNcWxK
dzBDU042b0dHKzZNU0g3MXNSaEVQZUFjUlVNcUoiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgK
KyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhNTEyIGhhc2guIiwK
KyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGE1MTIt
ditYSmVZcmN0ZkUybk91UjVvQ3ovSnpNeWhTelV0Ym1HNFlFeTJZYmVBVXpyK1FhVzNXbVNkV0FM
OS9KclNQRkpXOEJrTG81alFUTzhHYVdjTnRSUmc9PSIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0
KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggZW1wdHkgaW50ZWdyaXR5LiIsCisg
ICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAiIgorKTsKKwor
bmV3IFNSSU1vZHVsZVRlc3QoCisgICAgZmFsc2UsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggaW5j
b3JyZWN0IGhhc2guIiwKKyAgICAicmVzb3VyY2VzL25vbi1tYXRjaGluZy1kaWdlc3QtbW9kdWxl
LmpzIiwKKyAgICAic2hhMjU2LVU5V1lEdEJXa2NIeDEzKzlVS2svM1E1ZW9xRGM0WUd4WWIwN0VQ
V3piOWU9IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1v
cmlnaW4gd2l0aCBtdWx0aXBsZSBzaGEyNTYgaGFzaGVzLCBpbmNsdWRpbmcgY29ycmVjdC4iLAor
ICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1j
V2g5blBmbTcvbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSBzaGEyNTYtZGVhZGJl
ZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCituZXcgU1JJTW9k
dWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIG11bHRpcGxlIHNoYTI1
NiBoYXNoZXMsIGluY2x1ZGluZyB1bmtub3duIGFsZ29yaXRobS4iLAorICAgICJyZXNvdXJjZXMv
bWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5blBmbTcvbVJiS2h6
YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSBmb282NjYtZGVhZGJlZWZkZWFkYmVlZmRlYWRi
ZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0
cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIHNoYTI1NiBtaXNtYXRjaCwgc2hhNTEyIG1hdGNo
IiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGE1
MTItditYSmVZcmN0ZkUybk91UjVvQ3ovSnpNeWhTelV0Ym1HNFlFeTJZYmVBVXpyK1FhVzNXbVNk
V0FMOS9KclNQRkpXOEJrTG81alFUTzhHYVdjTnRSUmc9PSBzaGEyNTYtZGVhZGJlZWZkZWFkYmVl
ZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgK
KyAgICBmYWxzZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBzaGEyNTYgbWF0Y2gsIHNoYTUxMiBt
aXNtYXRjaCIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAg
ICAic2hhNTEyLWRlYWRiZWVmc3BiblVud29vS0dOTkNiMzludmcrRVcwTzloRFNjVFhlby85cFZa
enRMU1VZVTNMTlY2SDBsWmFwbzhiQ0pVcHlQUExBekU5ZkR6cHhnPT0gc2hhMjU2LWNXaDluUGZt
Ny9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IgorKTsKKworbmV3IFNSSU1vZHVs
ZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnPiB3aXRoIGNv
cnJlY3QgaGFzaCwgQUNBTzogKiIsCisgICAgY3Jvc3NvcmlnaW5fYW5vbl9zY3JpcHQsCisgICAg
InNoYTI1Ni12aUx5Q1lCNllkZEpLalVBSjRkWjFlSGUrMjQyRGQ3d1RJQ212TmoySUFBPSIsCisg
ICAgImFub255bW91cyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAg
ICI8Y3Jvc3NvcmlnaW49J2Fub255bW91cyc+IHdpdGggaW5jb3JyZWN0IGhhc2gsIEFDQU86ICoi
LAorICAgIGNyb3Nzb3JpZ2luX2Fub25fc2NyaXB0LAorICAgICJzaGEyNTYtZGVhZGJlZWZjU0xs
YkZaQ2oxT0FDTHhUeFZjazJUT3JCVEVkVWJ3ejF5VT0iLAorICAgICJhbm9ueW1vdXMiCispOwor
CituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICI8Y3Jvc3NvcmlnaW49J3VzZS1j
cmVkZW50aWFscyc+IHdpdGggY29ycmVjdCBoYXNoLCBDT1JTLWVsaWdpYmxlIiwKKyAgICBjcm9z
c29yaWdpbl9jcmVkc19zY3JpcHQsCisgICAgInNoYTI1Ni1ObmdXaUhHMk42S1dqSGhPY2dHdUYw
aUpYS1IrTVBNeGwzSXA2d0RBRUdnPSIsCisgICAgInVzZS1jcmVkZW50aWFscyIKKyk7CisKK25l
dyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICI8Y3Jvc3NvcmlnaW49J3VzZS1jcmVk
ZW50aWFscyc+IHdpdGggaW5jb3JyZWN0IGhhc2ggQ09SUy1lbGlnaWJsZSIsCisgICAgY3Jvc3Nv
cmlnaW5fY3JlZHNfc2NyaXB0LAorICAgICJzaGEyNTYtZGVhZGJlZWYyUytwVFJaZ2l3M0RXcmhD
NkpMRGx0MnpSeUdwd0g3dW5VOD0iLAorICAgICJ1c2UtY3JlZGVudGlhbHMiCispOworCituZXcg
U1JJTW9kdWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAiPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMn
PiB3aXRoIENPUlMtaW5lbGlnaWJsZSByZXNvdXJjZSIsCisgICAgY3Jvc3NvcmlnaW5faW5lbGln
aWJsZV9zY3JpcHQsCisgICAgInNoYTI1Ni1JaEIrUGtUbklmODgxekJEV05FT0o2cEt0anU5S2l3
K0wxZks1Wm4vcGwwPSIsCisgICAgImFub255bW91cyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0
KAorICAgIGZhbHNlLAorICAgICJDcm9zcy1vcmlnaW4sIG5vdCBDT1JTIHJlcXVlc3QsIHdpdGgg
Y29ycmVjdCBoYXNoIiwKKyAgICBjcm9zc29yaWdpbl9hbm9uX3NjcmlwdCwKKyAgICAic2hhMjU2
LXZpTHlDWUI2WWRkSktqVUFKNGRaMWVIZSsyNDJEZDd3VElDbXZOajJJQUE9IiwKKyk7CisKK25l
dyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICJDcm9zcy1vcmlnaW4sIG5vdCBDT1JT
IHJlcXVlc3QsIHdpdGggaGFzaCBtaXNtYXRjaCIsCisgICAgY3Jvc3NvcmlnaW5fYW5vbl9zY3Jp
cHQsCisgICAgInNoYTI1Ni1kZWFkYmVlZjAxWTB5S1N4My9Vb0lLdElZMlVROStIOFdHeXlNdU9X
T0MwPSIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIkNyb3NzLW9y
aWdpbiwgZW1wdHkgaW50ZWdyaXR5IiwKKyAgICBjcm9zc29yaWdpbl9hbm9uX3NjcmlwdCwKKyAg
ICAiIgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmln
aW4gd2l0aCBjb3JyZWN0IGhhc2gsIG9wdGlvbnMuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5n
LWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNK
V3o1WFROY3NxUEZ6S0V4K3pTVT0/Zm9vPWJhcj9zcGFtPWVnZ3MiCispOworCituZXcgU1JJTW9k
dWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIHVua25vd24gYWxnb3Jp
dGhtIG9ubHkuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAor
ICAgICJmb282NjYtVTlXWUR0QldrY0h4MTMrOVVLay8zUTVlb3FEYzRZR3hZYjA3RVBXemI5RT0i
CispOworCisvLyBXZWJLaXQgYWRkaXRpb25zIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgdGVz
dCBjYXNlcy4KKy8vIEZJWE1FOiBVcHN0cmVhbSB0aGVzZSBhZGRpdGlvbmFsIHRlc3RzIHRvIHRo
ZSBvZmZpY2lhbCB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4KKworbmV3IFNSSU1vZHVs
ZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0IHNoYTI1NiBo
YXNoLCB1c2luZyBiYXNlNjRVUkwgZW5jb2RpbmcuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5n
LWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYtY1doOW5QZm03X21SYktoemFyblJZbHNK
V3o1WFROY3NxUEZ6S0V4LXpTVT0iCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICBmYWxz
ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0IHNoYTI1NiBoYXNoLCB1c2luZyBpbnRl
cm1peGVkIGJhc2U2NCBhbmQgYmFzZTY0VVJMIGVuY29kaW5nLCBzaG91bGQgZmFpbC4iLAorICAg
ICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5
blBmbTdfbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSIKKyk7CisKK25ldyBTUklN
b2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggaW52YWxpZCBzeW50
YXggb25seS4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisg
ICAgIj9mb289YmFyP3NwYW09ZWdncyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRy
dWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggbXVsdGlwbGUgdmFsaWQgc2hhMjU2IGhhc2hlcywg
aW5jbHVkaW5nIGNvcnJlY3QuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1
bGUuanMiLAorICAgICJzaGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6
S0V4K3pTVT0gc2hhMjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6
U1U9IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgZmFsc2UsCisgICAgIlNhbWUtb3Jp
Z2luIHdpdGggaW5jb3JyZWN0IGhhc2gsIG9wdGlvbnMuIiwKKyAgICAicmVzb3VyY2VzL21hdGNo
aW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYtVTlXWUR0QldrY0h4MTMrOVVLay8z
UTVlb3FEYzRZR3hZYjA3RVBXemI5ZT0/Zm9vPWJhcj9zcGFtPWVnZ3MiCispOworCitTUklUZXN0
cy5leGVjdXRlKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323439</attachid>
            <date>2017-10-11 12:09:18 -0700</date>
            <delta_ts>2017-10-12 03:45:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177959-20171012040917.patch</filename>
            <type>text/plain</type>
            <size>109934</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2Q0ZTM0NzkzNjI3MWMyMTVlYjdiZDE1Y2JkMmNjMWYxOTFjMDQzLi42NjMwZTM3YThiMGY4OTYx
MzRlMmRjYzdjMmRiNGJlMzgzOTVlOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAxNy0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2NyaXB0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIFN1YnJlc291cmNlIEludGVncml0eSBjaGVjayBmb3IgbW9kdWxlIHNjcmlwdHMuIEN1
cnJlbnRseSwKKyAgICAgICAgb25seSB0b3AtbGV2ZWwgbW9kdWxlIGNhbiBiZSB2ZXJpZmllZCB3
aXRoIGludGVncml0eSBwYXJhbWV0ZXIgc2luY2UgdGhlcmUKKyAgICAgICAgaXMgbm8gd2F5IHRv
IHBlcmZvcm0gaW50ZWdyaXR5IGNoZWNrIG9udG8gdGhlIGltcG9ydGVkIG1vZHVsZXMuCisKKyAg
ICAgICAgSW4gSlNDIHNpZGUsIHdlIGFkZCBgcGFyYW1ldGVyc2AgdG8gdGhlIGVudHJ5IHBvaW50
IG9mIHRoZSBtb2R1bGUgbG9hZGVyCisgICAgICAgIHBpcGVsaW5lLiBUaGlzIGlzIGZldGNoaW5n
IHBhcmFtZXRlcnMgYW5kIHVzZWQgd2hlbiBmZXRjaGluZyBtb2R1bGVzLgorCisgICAgICAgIFdl
IHNlcGFyYXRlbHkgcGFzcyB0aGlzIHBhcmFtZXRlcnMgdG8gdGhlIHBpcGVsaW5lIGFsb25nIHdp
dGggdGhlIHNjcmlwdCBmZXRjaGVyLgorICAgICAgICBUaGUgc2NyaXB0IGZldGNoZXIgaXMgb25s
eSBvbmUgZm9yIG1vZHVsZSBncmFwaCBzaW5jZSB0aGlzIGlzIHRoZSBpbml0aWF0b3Igb2YKKyAg
ICAgICAgdGhpcyBtb2R1bGUgZ3JhcGggbG9hZGluZy4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMg
cGFyYW1ldGVycyBpcyBmb3IgZWFjaAorICAgICAgICBtb2R1bGUgZmV0Y2hpbmcuCisKKyAgICAg
ICAgVGhpcyBwYXJhbWV0ZXJzIHdpbGwgYmUgZmluYWxseSB1c2VkIGJ5IHBpcGVsaW5lJ3MgZmV0
Y2ggaG9vaywgYW5kIFdlYkNvcmUgc2lkZQorICAgICAgICBjYW4gdXNlIHRoc2kgcGFyYW1ldGVy
cyB0byBmZXRjaCBtb2R1bGVzLgorCisgICAgICAgIFdlIGFsc28gZnVydGhlciBjbGVhbiB1cCB0
aGUgbW9kdWxlIHBpcGVsaW5lIGJ5IGRyb3BwaW5nIHVubmVjZXNzYXJ5IGZlYXR1cmVzLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5
cGUuanM6CisgICAgICAgIChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdEluc3RhbnRp
YXRlKToKKyAgICAgICAgKHJlcXVlc3RTYXRpc2Z5KToKKyAgICAgICAgKGxvYWRNb2R1bGUpOgor
ICAgICAgICAobG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgVGhpcyBsb2FkQW5kRXZh
bHVhdGVNb2R1bGUgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGp1c3QgY2FsbGluZyBsb2FkTW9k
dWxlIGFuZAorICAgICAgICBsaW5rQW5kRXZhbHVhdGVNb2R1bGUuIFdlIGNhbiBkcm9wIHJlcXVl
c3RSZWFkeSBhbmQgcmVxdWVzdExpbmsuCisKKyAgICAgICAgKHJlcXVlc3RMaW5rKTogRGVsZXRl
ZC4KKyAgICAgICAgKHJlcXVlc3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgaW1w
b3J0IGFuZCBmZXRjaCBob29rIHRha2VzIHBhcmFtZXRlcnMuIEN1cnJlbnRseSwgd2UgYWx3YXlz
IHBhc3MgYHVuZGVmaW5lZGAgZm9yCisgICAgICAgIGltcG9ydCBob29rLiBXaGVuIGR5bmFtaWMg
YGltcG9ydCgpYCBpcyBleHRlbmRlZCB0byBhY2NlcHQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzCisg
ICAgICAgIGxpa2UgaW50ZWdyaXR5LCB0aGlzIHBhcmFtZXRlcnMgd2lsbCBiZSByZXBsYWNlZCB3
aXRoIHRoZSBhY3R1YWwgdmFsdWUuCisKKyAgICAgICAgKGZ1bmN0aW9uTG9hZE1vZHVsZSk6Cisg
ICAgICAgIChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6
bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0
ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmg6
CisgICAgICAgICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6ZGVzdHJveSk6CisgICAgICAg
ICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Nj
cmlwdEZldGNoUGFyYW1ldGVyczo6cGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVycyk6CisgICAgICAg
IEFkZCBTY3JpcHRGZXRjaFBhcmFtZXRlcnMnIEpTQ2VsbCB3cmFwcGVyLCBKU1NjcmlwdEZldGNo
UGFyYW1ldGVycy4KKyAgICAgICAgSXQgaXMgdXNlZCBpbiB0aGUgbW9kdWxlIHBpcGVsaW5lLgor
CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclByb3RvdHlwZUZl
dGNoKToKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjp+U2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzKToKKyAgICAgICAgQWRkIFNjcmlwdEZldGNoUGFyYW1ldGVycy4gV2UgY2FuIGRlZmluZSBv
dXIgb3duIGN1c3RvbSBTY3JpcHRGZXRjaFBhcmFtZXRlcnMKKyAgICAgICAgYnkgaW5oZXJpdGlu
ZyB0aGlzIGNsYXNzLiBXZWJDb3JlIGNyZWF0ZXMgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzIGJ5IGlu
aGVyaXRpbmcKKyAgICAgICAgdGhpcy4KKworICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0xMC0x
MSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgT2JqZWN0IHBy
b3BlcnRpZXMgYXJlIHVuZGVmaW5lZCBpbiBzdXBlci5jYWxsKCkgYnV0IG5vdCBpbiB0aGlzLmNh
bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDdhZDU1MmM2MWZhOTliZjUxNWYzYzVhNjRkZjE1ZjUzMzM4MjI0
ZGIuLjI5ZDg3OTFmZDY0NDVhYjJmODdlNDU0ZTk0YWYyMzA3M2RjZmVmNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsNSArMSw3MyBAQAogMjAxNy0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAorICAgICAgICBTdXBwb3J0IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2Ny
aXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3
OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBleHRlbmRzIG1vZHVsZSBob29rcyB0byBhY2NlcHQgZmV0Y2hpbmcgcGFyYW1ldGVy
cy4KKyAgICAgICAgV2hlbiBzdGFydGluZyBmZXRjaGluZyBtb2R1bGVzLCBXZWJDb3JlIGNyZWF0
ZXMgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLgorICAgICAgICBBbmQgdGhpcyBwYXJhbWV0ZXJzIGlz
IHByb3BhZ2F0ZWQgdG8gdGhlIGZldGNoIGhvb2suIFRoZW4sIGZldGNoCisgICAgICAgIGhvb2sg
Y2FuIHVzZSB0aGlzIHBhcmFtZXRlcnMgdG8gZmV0Y2ggbW9kdWxlcy4KKworICAgICAgICBUaGlz
IHBhcmFtZXRlcnMgb25seSBjb250YWlucyBgaW50ZWdyaXR5YCBmaWVsZC4gVGhpcyAiaW50ZWdy
aXR5IiBpcworICAgICAgICB1c2VkIHRvIHBlcmZvcm0gc3VicmVzb3VyY2UgaW50ZWdyaXR5IGNo
ZWNrIGluIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuCisgICAgICAgIEFuZCB0aGlzIGVycm9yIGlz
IGp1c3QgcHJvcGFyYWdlZCBhcyBlcnJvcnMgaW4gbW9kdWxlIHBpcGVsaW5lLCB3aGljaAorICAg
ICAgICBpcyB0aGUgc2FtZSB0byB0aGUgb3RoZXIgdHlwZXMgb2YgZXJyb3JzIGluIG1vZHVsZSBw
aXBlbGluZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0
eS9zcmktbW9kdWxlLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6CisgICAgICAgIFRha2Ug
cGFyYW1ldGVycywgd2hpY2ggaW5jbHVkZXMgImludGVncml0eSIuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6CisgICAgICAgIGltcG9ydCBhbmQgZmV0Y2ggaG9v
a3MgdGFrZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdCk6CisgICAgICAgIFBh
c3MgcGFyYW1ldGVycyB0byB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIG1vZHVsZSBwaXBlbGluZS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0TW9kdWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIElmIHBhcmFtZXRlcnMgYXJlIHBhc3Nl
ZCwgd2Ugc2V0IHRoZW0gdG8gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLgorCisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgIFBhc3Mg
cGFyYW1ldGVycyB0byB0aGUgZW50cnkgcG9pbnQgb2YgZHluYW1pYyBpbXBvcnQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICBJZiBzY3JpcHQgbG9hZGVyIGhhcyBwYXJhbWV0ZXJzLCB3ZSBwZXJmb3JtIHN1YnJlc291cmNl
IGludGVncml0eSBjaGVjayBoZXJlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmg6CisgICAgICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OkxvYWRhYmxlTW9kdWxlU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKToKKyAgICAgICAgQ3Jl
YXRlIE1vZHVsZUZldGNoUGFyYW1ldGVycyB3aXRoICJpbnRlZ3JpdHkiIHZhbHVlLgorCisgICAg
ICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgICogZG9tL01vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZldGNo
UGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZldGNoUGFyYW1l
dGVyczo6aW50ZWdyaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZldGNoUGFy
YW1ldGVyczo6TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0TW9kdWxl
U2NyaXB0KToKKyAgICAgICAgUGFzcyAiaW50ZWdyaXR5IiB2YWx1ZSB0byB0aGUgbW9kdWxlIHNj
cmlwdC4KKworMjAxNy0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKwogICAgICAgICBbSlNDXSBEcm9wIEluc3RhbnRpYXRlIGhvb2sgaW4gRVM2IG1vZHVsZSBs
b2FkZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODE2MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ4M2NjMmE5ZDRhNmRmMDAx
YjJjMjNlNjBiZDVkZTMyYjA2OGE5ZTguLmU3ZjUwYjk1MmI5YWUyMzE1NGJhYWY5MDFjZDU2Mzcx
MjY4MjFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjMyLDYgKzE2MzIs
OCBAQAogCQlFMzE2MTgxMzFFQzVGRTE3MDAwNkEyMTggLyogRE9NQW5ub3RhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNjE4MTAxRUM1RkUw
ODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzE2MTgxNTFFQzVGRTI3MDAwNkEyMTggLyogRE9NQXR0
cmlidXRlR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzE2MTgxMjFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzIwMUMxRDFGOEU4MjM2MDA3
NkEwMzIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQwNjBCMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1Nj
cmlwdEZldGNoUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzMjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzIyRTVBMzFE
QTY0NDM5MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERG
R1NuaXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZU
TFNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMjJFNUE1MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggKi87
IH07CiAJCUUzMjhDNkM3MURBNDMwNDUwMEQyNTVGRCAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU4NjAxNzcxODVBOEY1RTAwMDMwRUVFIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ0
MTksNiArNDQyMSw5IEBACiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYg
LyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOEQwNjBCMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZl
dGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhEMDYw
QzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzhEMDYwRDFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAv
KiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NDc5LDYgKzY0ODQsOCBAQAogCQkJCTE0ODc0QUUyMTVFQkRFNEEw
MDJFMzU4NyAvKiBKU1Njb3BlLmggKi8sCiAJCQkJMTFDMTk3QzI2MjQ4NDhFREE4NENFRDdGIC8q
IEpTU2NyaXB0RmV0Y2hlci5jcHAgKi8sCiAJCQkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8q
IEpTU2NyaXB0RmV0Y2hlci5oICovLAorCQkJCUUzOEQwNjBEMUY4RTgxNDEwMDY0OUNGMiAvKiBK
U1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5
Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8sCiAJCQkJMEY5MTlEMEUxNTdGMzMy
NzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovLAogCQkJCTBGOTE5
RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi8sCiAJ
CQkJMEY0RjgyODUxRTJGRkREQjAwNzUxODRDIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RT
dWJzcGFjZS5jcHAgKi8sCkBAIC02NjQ5LDYgKzY2NTYsNyBAQAogCQkJCTE0NzM0MUUwMURDMkNF
OTYwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAy
RDc5MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQy
Mzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCisJCQkJRTM4RDA2MEMxRjhFODE0MTAw
NjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovLAogCQkJCUE3Mjk5REEzMTdEMTI4
NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTcyOTlEQTQxN0QxMjg1
ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTc5MERENjcxODJGNDk5NzAw
NTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKQEAgLTg3MzIsNiArODc0MCw3
IEBACiAJCQkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTA2NDMzN0RENEIwNDAyQkFGMzRBNTkyIC8qIEpTU2NyaXB0RmV0
Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyMDFDMUQxRjhFODIzNjAwNzZBMDMyIC8qIEpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MwQzRBQzE2ODEw
MzAyMDAxNzAxMUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0RjgyODgxRTJGRkRFMDAwNzUxODRDIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3RTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTU1LDcgKzg5NjQs
NiBAQAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzk4Njk0M0IxRjhDMEFDQzAwOTIzMkFFIC8q
IFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzM2MzdBNjFCNjMyMjAyMDBF
RTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjMxQkRB
MDhFRjAwMzMxQjg0IC8qIFJlZmxlY3RPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE3QThFQzE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVycyAqLywKQEAgLTkwMDQs
NiArOTAxMiw3IEBACiAJCQkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVn
U2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFDRTFEQzAyRDc5MDBBQTI5QkEgLyog
U2NyaXB0RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VBRTdEN0I4ODlCNDc3QkE5
M0FCQTZDIC8qIFNjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjAxQzFFMUY4
RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1NTE2NUQ1MUJERjEzNUEwMDNCNzVDMSAvKiBTY3JpcHRQ
cm9maWxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDU1LDYgKzkwNjQsNyBAQAogCQkJ
CTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3OTg2OTQzQjFGOEMwQUNDMDA5MjMyQUUgLyogU3RydWN0dXJlQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0
cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDRmNzg2MTJiNDllZDg3OWY5OWQ1MjBkNjhjOTNiYjE2ZWUyNzhjYjQu
LmZhODNmM2NmYTZjNjc3NjkwNjhkZDBmMTA1NGU2YzNiZDEwODM1MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTgwNyw2ICs4MDcsNyBAQCBydW50aW1lL0pTUHJveHkuY3BwCiBy
dW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAogcnVudGltZS9KU1Njb3BlLmNwcAogcnVudGltZS9K
U1NjcmlwdEZldGNoZXIuY3BwCitydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcAog
cnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAogcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuY3BwCiBydW50aW1lL0pTU2V0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
anMKaW5kZXggYmQ5N2QzMDk3NmZjZjkxM2NkNTRlOGZhMWNkYTE3NTI1NzAxNTk0OC4uZWQwYWU2
MDM0YTVmMDk4ODc2OGNmMjkwNTI2MmNlYjcxYzY5MWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCkBAIC0x
NDAsNyArMTQwLDcgQEAgZnVuY3Rpb24gZnVsZmlsbEZldGNoKGVudHJ5LCBzb3VyY2UpCiAKIC8v
IExvYWRlci4KIAotZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgZmV0Y2hlcikKK2Z1bmN0aW9u
IHJlcXVlc3RGZXRjaChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAogCkBAIC0xNTYsNyArMTU2
LDcgQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgZmV0Y2hlcikKICAgICAvLyAgICAgVGFr
ZSB0aGUga2V5IGFuZCBmZXRjaCB0aGUgcmVzb3VyY2UgYWN0dWFsbHkuCiAgICAgLy8gICAgIEZv
ciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBjYW4gcHJvdmlkZSB0aGUgaG9vayBmZXRj
aGluZyB0aGUgcmVzb3VyY2UKICAgICAvLyAgICAgZnJvbSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0u
Ci0gICAgdmFyIGZldGNoUHJvbWlzZSA9IHRoaXMuZmV0Y2goa2V5LCBmZXRjaGVyKS50aGVuKChz
b3VyY2UpID0+IHsKKyAgICB2YXIgZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRjaChrZXksIHBhcmFt
ZXRlcnMsIGZldGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4gewogICAgICAgICBAc2V0U3RhdGVUb01h
eChlbnRyeSwgQE1vZHVsZUluc3RhbnRpYXRlKTsKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKICAg
ICB9KTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5LCBmZXRj
aGVyKQogICAgIHJldHVybiBmZXRjaFByb21pc2U7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RJbnN0
YW50aWF0ZShrZXksIGZldGNoZXIpCitmdW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBw
YXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9s
b2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIApAQCAtMTc0LDcgKzE3NCw3IEBAIGZ1bmN0aW9u
IHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGZldGNoZXIpCiAgICAgaWYgKGVudHJ5Lmluc3RhbnRp
YXRlKQogICAgICAgICByZXR1cm4gZW50cnkuaW5zdGFudGlhdGU7CiAKLSAgICB2YXIgaW5zdGFu
dGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goa2V5LCBmZXRjaGVyKS50aGVuKChzb3Vy
Y2UpID0+IHsKKyAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2go
a2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChzb3VyY2UpID0+IHsKICAgICAgICAgdmFy
IG1vZHVsZVJlY29yZCA9IHRoaXMucGFyc2VNb2R1bGUoZW50cnkua2V5LCBzb3VyY2UpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBEZXNjcmliZWQgaW4gdGhlIGRyYWZ0LApAQCAtMjA3LDcgKzIwNyw3
IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGZldGNoZXIpCiAgICAgcmV0dXJu
IGluc3RhbnRpYXRlUHJvbWlzZTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdFNhdGlzZnkoa2V5LCBm
ZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdFNhdGlzZnkoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVy
KQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3NhdGlzZnktaW5z
dGFuY2UKIApAQCAtMjE3LDcgKzIxNyw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwg
ZmV0Y2hlcikKICAgICBpZiAoZW50cnkuc2F0aXNmeSkKICAgICAgICAgcmV0dXJuIGVudHJ5LnNh
dGlzZnk7CiAKLSAgICB2YXIgc2F0aXNmeVByb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0
ZShrZXksIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7CisgICAgdmFyIHNhdGlzZnlQcm9taXNl
ID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVu
KChlbnRyeSkgPT4gewogICAgICAgICB2YXIgZGVwTG9hZHMgPSBbXTsKICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgbGV0IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CkBA
IC0yNDYsNyArMjQ2LDggQEAgZnVuY3Rpb24gcmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKQog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShkZXBLZXksIGZldGNoZXIpLnRoZW4oKGVu
dHJ5KSA9PiB7CisgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBtb2R1bGUgbG9hZGVyIGRv
IG5vdCBwYXNzIGFueSBpbmZvcm1hdGlvbiBmb3Igbm9uLXRvcC1sZXZlbCBtb2R1bGUgZmV0Y2hp
bmcuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoZGVwS2V5LCBA
dW5kZWZpbmVkLCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewogICAgICAgICAgICAgICAgICAg
ICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZW50cnk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0yNjQsMzYgKzI2NSw2IEBAIGZ1bmN0aW9u
IHJlcXVlc3RTYXRpc2Z5KGtleSwgZmV0Y2hlcikKICAgICByZXR1cm4gc2F0aXNmeVByb21pc2U7
CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSwgZmV0Y2hlcikKLXsKLSAgICAvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKLQotICAgICJ1c2Ugc3Ry
aWN0IjsKLQotICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOwotICAg
IGlmIChlbnRyeS5zdGF0ZSA+IEBNb2R1bGVMaW5rKSB7Ci0gICAgICAgIHZhciBkZWZlcnJlZCA9
IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKLSAgICAgICAgZGVmZXJy
ZWQuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwgZW50cnkpOwotICAgICAgICByZXR1cm4gZGVm
ZXJyZWQuQHByb21pc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnko
a2V5LCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICB0aGlzLmxpbmsoZW50cnks
IGZldGNoZXIpOwotICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9u
IHJlcXVlc3RSZWFkeShrZXksIGZldGNoZXIpCi17Ci0gICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jcmVxdWVzdC1yZWFkeQotCi0gICAgInVzZSBzdHJpY3QiOwotCi0gICAg
cmV0dXJuIHRoaXMucmVxdWVzdExpbmsoa2V5LCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewot
ICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKLSAg
ICB9KTsKLX0KLQogLy8gTGlua2luZyBzZW1hbnRpY3MuCiAKIGZ1bmN0aW9uIGxpbmsoZW50cnks
IGZldGNoZXIpCkBAIC0zNjMsNyArMzM0LDcgQEAgZnVuY3Rpb24gcHJvdmlkZUZldGNoKGtleSwg
dmFsdWUpCiAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50cnksIHZhbHVlKTsKIH0KIAotZnVuY3Rp
b24gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKQor
ZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIApAQCAtMzcxLDIxICszNDIsOCBAQCBmdW5jdGlvbiBsb2FkQW5k
RXZhbHVhdGVNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNoZXIpCiAgICAgLy8gcmVz
b2x2ZTogbW9kdWxlTmFtZSA9PiBQcm9taXNlKG1vZHVsZUtleSkKICAgICAvLyBUYWtlIHRoZSBu
YW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291
cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQg
cmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZl
KG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKS50aGVuKChrZXkpID0+IHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucmVxdWVzdFJlYWR5KGtleSwgZmV0Y2hlcik7Ci0gICAgfSk7Ci19Ci0KLWZ1
bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNoZXIpCi17Ci0gICAg
InVzZSBzdHJpY3QiOwotCi0gICAgLy8gTG9hZGVyLnJlc29sdmUgaG9vayBwb2ludC4KLSAgICAv
LyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFByb21pc2UobW9kdWxlS2V5KQotICAgIC8vIFRha2Ug
dGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUg
cmVzb3VyY2UgbG9jYXRpb24uCi0gICAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnki
IGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgotICAgIHJldHVybiB0aGlzLnJl
c29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNoZXIpLnRoZW4oKGtleSkgPT4gewotICAg
ICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXksIGZldGNoZXIpOworICAgIHJldHVy
biB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgQHVuZGVmaW5lZCwgZmV0Y2hlcikudGhlbigoa2V5
KSA9PiB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVy
cywgZmV0Y2hlcik7CiAgICAgfSkudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgcmV0dXJuIGVu
dHJ5LmtleTsKICAgICB9KTsKQEAgLTQwMywxMSArMzYxLDIwIEBAIGZ1bmN0aW9uIGxpbmtBbmRF
dmFsdWF0ZU1vZHVsZShrZXksIGZldGNoZXIpCiAgICAgcmV0dXJuIHRoaXMubW9kdWxlRXZhbHVh
dGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW1wb3J0
TW9kdWxlKGtleSwgZmV0Y2hlcikKK2Z1bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1
bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHJldHVybiB0aGlzLmxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywgZmV0Y2hlciku
dGhlbigoa2V5KSA9PiB7CisgICAgICAgIHJldHVybiB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShrZXksIGZldGNoZXIpOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9k
dWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAg
ICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXksIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9
PiB7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBwYXJhbWV0ZXJzLCBmZXRj
aGVyKS50aGVuKChlbnRyeSkgPT4gewogICAgICAgICB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShlbnRyeS5rZXksIGZldGNoZXIpOwogICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGVOYW1l
c3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggYzhkYTQxYmQ0M2NhOWIwNzVjZDg3ODY4NzBjM2ZlNzQ3OGY3ZWQyOC4uYjU2ZTc3NmZkZmFm
YThjZDhiMDMxMjE2ZmI0NDYwNzAyNTU5NTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE2
NTcsOSArMTY1Nyw5IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVj
dCB7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21p
c2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSos
IEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsKKyAgICBz
dGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2Jh
bE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqLCBKU1ZhbHVl
LCBjb25zdCBTb3VyY2VPcmlnaW4mKTsKICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1v
ZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwotICAgIHN0YXRpYyBKU0ludGVybmFs
UHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBK
U01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU0ludGVybmFs
UHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBK
U01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBK
U09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxP
YmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVj
b3JkKiwgSlNWYWx1ZSk7CiB9OwogCkBAIC0xODExLDcgKzE4MTEsNyBAQCBzdGF0aWMgU3RyaW5n
IGFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIHJldHVybiByZXNvbHZl
UGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoZmlsZU5hbWUuaW1wbCgpKSk7
CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9y
dE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpT
TW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqIG1vZHVsZU5hbWVWYWx1ZSwgY29uc3QgU291cmNlT3Jp
Z2luJiBzb3VyY2VPcmlnaW4pCitKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiBtb2R1bGVOYW1lVmFsdWUsIEpT
VmFsdWUgcGFyYW1ldGVycywgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4pCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKQEAgLTE4MzUsNyArMTgzNSw3IEBAIEpTSW50ZXJuYWxQcm9taXNl
KiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgaWYgKCFkaXJlY3RvcnlOYW1lKQogICAgICAgICByZXR1cm4gcmVqZWN0UHJv
bWlzZShjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJDb3VsZCBub3QgcmVzb2x2ZSB0aGUg
cmVmZXJyZXIgbmFtZSAnIiwgU3RyaW5nKHJlZmVycmVyLmltcGwoKSksICInLiIpKSk7CiAKLSAg
ICBhdXRvIHJlc3VsdCA9IEpTQzo6aW1wb3J0TW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUo
bW9kdWxlTmFtZSkpKSwganNVbmRlZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBKU0M6Omlt
cG9ydE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgo
ZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1bGVOYW1lKG1vZHVsZU5hbWUpKSksIHBhcmFtZXRl
cnMsIGpzVW5kZWZpbmVkKCkpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xOTg1LDcgKzE5ODUsNyBAQCBzdGF0aWMgYm9v
bCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
VmVjdG9yPGNoYXI+JgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNl
KiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVM
b2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSwgSlNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwpAQCAtMzI3Myw3ICszMjczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghZmV0Y2hTY3JpcHRG
cm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKLSAgICBKU0ludGVy
bmFsUHJvbWlzZSogcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBmaWxlTmFt
ZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUoZXhlYywgZmlsZU5hbWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1
ZSBlcnJvcjsKQEAgLTM2NjAsNyArMzY2MCw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhPcHRpb25z
KEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9ucykKICAgICAg
ICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJcInVzZSBzdHJpY3RcIjtcbiIsIHN0cmxl
bigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CiAKICAgICAgICAgICAgIGlmIChpc01vZHVsZSkgewot
ICAgICAgICAgICAgICAgIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGZpbGVOYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlID0g
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBmaWxlTmFt
ZSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBz
Y3JpcHRCdWZmZXIpKQpAQCAtMzY3Niw3ICszNjc2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aE9w
dGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zKQog
ICAgICAgICBib29sIGlzTGFzdEZpbGUgPSBpID09IHNjcmlwdHMuc2l6ZSgpIC0gMTsKICAgICAg
ICAgaWYgKGlzTW9kdWxlKSB7CiAgICAgICAgICAgICBpZiAoIXByb21pc2UpCi0gICAgICAgICAg
ICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbWFrZVNvdXJjZShzdHJpbmdGcm9tVVRGKHNjcmlwdEJ1ZmZlciksIFNvdXJjZU9y
aWdpbiB7IGFic29sdXRlUGF0aChmaWxlTmFtZSkgfSwgZmlsZU5hbWUsIFRleHRQb3NpdGlvbigp
LCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpOworICAgICAgICAgICAgICAgIHBy
b21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4geyBh
YnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lLCBUZXh0UG9zaXRpb24oKSwgU291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bGZp
bGxIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDEsIFN0cmluZygpLCBbJiwgaXNMYXN0RmlsZV0oRXhlY1N0YXRlKiBleGVjKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGJmYTIwZjYyM2Ux
OGI1MzlkMGVlYWMyZmM0NzIyMDE3MGUzOGVlNjcuLjA1ZmEzMThhMzNjOGJiZDliNzFhZGM0MWU1
MTcyZjczNTkzZGVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCkBAIC0xNTQsMjQgKzE1NCwxNCBAQCBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2Uq
IHJlamVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwogfQogCi1zdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFt
ZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQotewotICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhl
YywgbW9kdWxlTmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwotfQotCi1zdGF0aWMgSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXIm
IGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQotewotICAg
IHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZU5hbWUpLCBqc1VuZGVmaW5lZCgp
LCBzY3JpcHRGZXRjaGVyKTsKLX0KLQotSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0
ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJh
bWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFk
KCkpOwogCi0gICAgcmV0dXJuIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9k
dWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRl
bnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVO
YW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogfQogCiBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0xOTAsMjcgKzE4MCwxNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cgogICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCkt
PnByb3ZpZGVGZXRjaChleGVjLCBrZXksIHNvdXJjZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgcmVqZWN0UHJvbWlzZShleGVjLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHJldHVy
biBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBrZXksIGpz
VW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOwotfQotCi1zdGF0aWMgSlNJbnRlcm5hbFByb21p
c2UqIGxvYWRNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiwgRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVm
ZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5tb2R1bGVMb2FkZXIoKS0+bG9hZE1vZHVsZShleGVjLCBtb2R1bGVOYW1lLCByZWZlcnJlciwg
c2NyaXB0RmV0Y2hlcik7Ci19Ci0KLXN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVs
ZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQotewotICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNV
bmRlZmluZWQoKSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9k
dWxlTG9hZGVyKCktPmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBrZXksIGpzVW5kZWZpbmVk
KCksIHNjcmlwdEZldGNoZXIpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBs
b2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSwgc2NyaXB0RmV0Y2hlcik7CisgICAg
cmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+bW9kdWxlTG9hZGVyKCktPmxvYWRN
b2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBtb2R1bGVOYW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogfQogCiBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjMwLDcgKzIxMCw3IEBA
IEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIo
KS0+cHJvdmlkZUZldGNoKGV4ZWMsIGtleSwgc291cmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogCi0gICAgcmV0
dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBrZXksIGpzVW5kZWZpbmVk
KCksIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRl
cigpLT5sb2FkTW9kdWxlKGV4ZWMsIGtleSwganNVbmRlZmluZWQoKSwgc2NyaXB0RmV0Y2hlcik7
CiB9CiAKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yNDQs
MTQgKzIyNCwxNCBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYQogICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRp
ZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlS2V5KSwgc2NyaXB0RmV0Y2hlcik7CiB9CiAKLUpTSW50
ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pTSW50ZXJuYWxQcm9taXNl
KiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVL
ZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1wb3J0TW9kdWxlKGV4ZWMsIG1vZHVsZUtl
eSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KS0+bW9kdWxlTG9hZGVyKCktPnJlcXVlc3RJbXBvcnRNb2R1bGUoZXhlYywgbW9kdWxlS2V5LCBw
YXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzkzNGQ2MzJlYTUw
YzM3MDIyNTJhNDliYjE2OTg4NGI2YzllZWRkYi4uZGU0NDhhNDA4NDcxYzc0MmU2ZjIyODhmMWFh
NzI0ZTMzZjg5NzQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaApAQCAtNTcsMTYgKzU3LDE2IEBAIGlubGluZSBKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9maWxpbmdSZWFzb24gcmVhc29uLCBjb25zdCBTCiBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb24sIE5ha2VkUHRyPEV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogLy8gTG9hZCB0aGUgbW9kdWxlIHNvdXJj
ZSBhbmQgZXZhbHVhdGUgaXQuCi1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSog
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFt
ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7Ci1KU19FWFBPUlRfUFJJ
VkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgp
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVN
b2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHBhcmFt
ZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAvLyBGZXRjaCB0aGUgbW9kdWxlIHNv
dXJjZSwgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgcmVjb3JkLgotSlNfRVhQT1JUX1BSSVZB
VEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsKLUpT
X0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgp
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2Uq
IGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcik7CiAKIC8vIExpbmsgYW5kIGV2YWx1YXRlIHRoZSBhbHJlYWR5IGxpbmtlZCBtb2R1
bGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGEgc3luYyBtYW5uZXIuCi1KU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciA9IGpzVW5kZWZpbmVk
KCkpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxl
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1
bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHBhcmFt
ZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZjFh
OGVkZDI0NGZmODczYmZiY2E0ZGZjMTkzOGFiNGMzZGUxNDI3ZS4uNGEyNTBiOTZjMTdkNTZlOTUw
ZWRmMTY1YjI0OTBkMDMzN2JlZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xODYsMTMgKzE4NiwxMyBAQCBzdHJ1Y3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgU2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZv
cmVUaW1lb3V0OwogCi0gICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2Fk
ZXJJbXBvcnRNb2R1bGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVM
b2FkZXIqLCBKU1N0cmluZyosIGNvbnN0IFNvdXJjZU9yaWdpbiYpOworICAgIHR5cGVkZWYgSlNJ
bnRlcm5hbFByb21pc2UqICgqTW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlUHRyKShKU0dsb2JhbE9i
amVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqLCBKU1ZhbHVlLCBj
b25zdCBTb3VyY2VPcmlnaW4mKTsKICAgICBNb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGVQdHIgbW9k
dWxlTG9hZGVySW1wb3J0TW9kdWxlOwogCiAgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSog
KCpNb2R1bGVMb2FkZXJSZXNvbHZlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpT
TW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgTW9kdWxlTG9h
ZGVyUmVzb2x2ZVB0ciBtb2R1bGVMb2FkZXJSZXNvbHZlOwogCi0gICAgdHlwZWRlZiBKU0ludGVy
bmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJGZXRjaFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVj
U3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHR5cGVkZWYg
SlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxlTG9hZGVyRmV0Y2hQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVl
KTsKICAgICBNb2R1bGVMb2FkZXJGZXRjaFB0ciBtb2R1bGVMb2FkZXJGZXRjaDsKIAogICAgIHR5
cGVkZWYgSlNPYmplY3QqICgqTW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXNQ
dHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVl
LCBKU01vZHVsZVJlY29yZCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDM3MTkx
OTc1ZTE5MTQ3NGFiNmVhMzRmZGJjMmE4YWRiZjk3YWFhMDIuLjQyMjA5ZDZmZWQ4MDYwYWQ0NWEx
Mjg0ZWY2ZWNkOTA2M2NmMDM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTc5Nyw3ICs3OTcs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNl
LT5wcm9taXNlKCkpOwogICAgIH0KIAotICAgIGF1dG8qIGludGVybmFsUHJvbWlzZSA9IGdsb2Jh
bE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShleGVjLCBzcGVjaWZpZXIsIHNv
dXJjZU9yaWdpbik7CisgICAgLy8gV2UgYWx3YXlzIHNwZWNpZnkgcGFyYW1ldGVycyBhcyB1bmRl
ZmluZWQuIE9uY2UgZHluYW1pYyBpbXBvcnQoKSBzdGFydHMgYWNjZXB0aW5nIGZldGNoaW5nIHBh
cmFtZXRlcnMsCisgICAgLy8gd2Ugc2hvdWxkIHJldHJpZXZlIHRoaXMgZnJvbSB0aGUgYXJndW1l
bnRzLgorICAgIEpTVmFsdWUgcGFyYW1ldGVycyA9IGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byog
aW50ZXJuYWxQcm9taXNlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9k
dWxlKGV4ZWMsIHNwZWNpZmllciwgcGFyYW1ldGVycywgc291cmNlT3JpZ2luKTsKICAgICBpZiAo
RXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4
ZWMsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNWFkYzAyYzY0YTZjMDJmNDRhMTU1ODA4MTYz
MDM2ZGYyNWU1ZWMxOS4uNTBmNTE0ODBlODI4NjMzOTRlMDEzZGZmNzA4MWQ0NWY3Y2M5OGE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cApAQCAtOTksNyArOTksNyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgY29uc3QgU291cmNlQwogICAgIHJldHVybiBj
YWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7
CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRl
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVM
b2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9k
dWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC0xMTIsMTQgKzExMiwxNCBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQobW9kdWxlTmFtZSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWZlcnJlcik7CisgICAgYXJn
dW1lbnRzLmFwcGVuZChwYXJhbWV0ZXJzKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZl
dGNoZXIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRl
cm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXMsIGFyZ3VtZW50cykpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6
OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUg
cmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBKU01v
ZHVsZUxvYWRlcjo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFt
ZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xMzIsNyArMTMyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
Ojpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW0KIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVs
ZU5hbWUpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQocmVmZXJyZXIpOworICAgIGFyZ3VtZW50cy5h
cHBlbmQocGFyYW1ldGVycyk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsK
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTTW9k
dWxlTG9hZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IG1vZHVsZUtleQogICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21p
c2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE3MSwxMyArMTcxLDE0IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkCiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhleGVjLCBtb2R1bGVLZXkuaW1wbCgpKSk7
CisgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0ZXJzKTsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHNjcmlwdEZldGNoZXIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBqc0Nh
c3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBtb2R1bGVO
YW1lLCBjb25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKQorSlNJbnRlcm5hbFByb21pc2UqIEpT
TW9kdWxlTG9hZGVyOjppbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogbW9k
dWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVy
KQogewogICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAg
IGRhdGFMb2coIkxvYWRlciBbaW1wb3J0XSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhlYywgbW9k
dWxlTmFtZSksICJcbiIpOwpAQCAtMTg3LDcgKzE4OCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBK
U01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIG1v
ZHVsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVySW1w
b3J0TW9kdWxlKQotICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBleGVjLCB0
aGlzLCBtb2R1bGVOYW1lLCByZWZlcnJlcik7CisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShnbG9i
YWxPYmplY3QsIGV4ZWMsIHRoaXMsIG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIHJlZmVycmVyKTsK
IAogICAgIGF1dG8qIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRl
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBtb2R1bGVOYW1lU3RyaW5nID0gbW9kdWxl
TmFtZS0+dmFsdWUoZXhlYyk7CkBAIC0yMTQsNyArMjE1LDcgQEAgSlNJbnRlcm5hbFByb21pc2Uq
IEpTTW9kdWxlTG9hZGVyOjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBK
U1ZhbHUKICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKIH0KIAotSlNJbnRlcm5hbFBy
b21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2Fk
ZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVy
cywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxl
TG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2coIkxvYWRlciBbZmV0Y2hdICIsIHByaW50
YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKQEAgLTIyMyw3ICsyMjQsNyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgcwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgaWYgKGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2gpCi0gICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVs
ZUxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywga2V5LCBzY3JpcHRGZXRjaGVy
KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+bW9kdWxlTG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCB0aGlzLCBrZXksIHBhcmFt
ZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRl
ZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9i
amVjdCk7CiAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtleS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAppbmRleCA5M2QzOGY3Mzk3NzYxNjczZjgy
MGM0OGFhYTg1NjE2NjM5NDk0YzMzLi44OWE0NzM2M2YyMWU0MTg1NzIxOWQ1YjcxZGNlOGExOGI2
OWVhYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBjbGFzcyBKU01vZHVsZUxvYWRlciA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxv
YWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGVGZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwg
Y29uc3QgU291cmNlQ29kZSYpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVh
dGVNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVy
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9k
dWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1
YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0
ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2Fk
TW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJz
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTSW50ZXJu
YWxQcm9taXNlKiByZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKICAgICAv
LyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCi0gICAgSlNJbnRlcm5hbFByb21pc2Uq
IGltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBKU1N0cmluZyogbW9kdWxlTmFtZSwgY29uc3QgU291
cmNlT3JpZ2luJiByZWZlcnJlcik7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVs
ZShFeGVjU3RhdGUqLCBKU1N0cmluZyogbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBj
b25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogcmVz
b2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGZldGNoKEV4ZWNTdGF0ZSos
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTSW50ZXJuYWxQcm9t
aXNlKiBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVJbXBvcnRNZXRhUHJv
cGVydGllcyhFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gQWRkaXRpb25hbCBwbGF0Zm9ybSBkZXBlbmRlbnQg
aG9va2VkIEFQSXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYxNGFmZWQ0OWVhYjU3
ZDJhMGY1MDIwY2RkMWM4NWIzMzRiNjJjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcApAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OnNfaW5mbyA9IHsgIkpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1NjcmlwdEZldGNoUGFyYW1ldGVycykgfTsKKwordm9pZCBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyczo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNT
Y3JpcHRGZXRjaFBhcmFtZXRlcnMqPihjZWxsKS0+fkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdhZDcy
NWNiNjAxZjkzN2E4ZmZiMTdmYzkyYjJiMmE4ZjE0MmM3NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEZldGNoUGFyYW1ldGVycy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMgOiBwdWJs
aWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDZWxsOworCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnNUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmPFNjcmlwdEZldGNoUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzKQor
ICAgIHsKKyAgICAgICAgYXV0byogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM+KHZtLmhlYXApKSBKU1NjcmlwdEZldGNoUGFyYW1ldGVy
cyh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
c3RhdGljIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKiBjcmVhdGUoVk0mIHZtLCBSZWY8U2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICByZXR1cm4gY3Jl
YXRlKHZtLCB2bS5zY3JpcHRGZXRjaFBhcmFtZXRlcnNTdHJ1Y3R1cmUuZ2V0KCksIFdURk1vdmUo
cGFyYW1ldGVycykpOworICAgIH0KKworICAgIFNjcmlwdEZldGNoUGFyYW1ldGVycyYgcGFyYW1l
dGVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOwor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKK3ByaXZhdGU6Cisg
ICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UmVmPFNjcmlwdEZldGNoUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzKQorICAgICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKKyAgICAgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJz
KSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPFNjcmlwdEZldGNoUGFyYW1ldGVycz4gbV9wYXJh
bWV0ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCmluZGV4IGVlZTJhNWVhNTE5NzcxYWRhNTM5ZTEzY2RhMmI5ZTVmMzIxN2Y2
NDEuLmMwMTcwMjM0ZTI4NmFiNzcwODllOGFmMTgyMWU3NDA2NDMzMWFmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAgICAgSlNGaXhlZEFycmF5VHlwZSwKICAgICBKU1NvdXJjZUNvZGVUeXBl
LAogICAgIEpTU2NyaXB0RmV0Y2hlclR5cGUsCisgICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNU
eXBlLAogCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkg
SlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09iamVjdC4KICAgICBPYmplY3RUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclBy
b3RvdHlwZS5jcHAKaW5kZXggNDVlMjZkZWRmNTYyNTVjZmY3NjU1OGE4MGI0NTNhNjljNGQxMjlk
Ny4uZTgzNjM4MDIyODQyYzE3MGQ1NGQzNmUwY2FlOTI0NmFhOTcyYmQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwCkBAIC03MCwxMSArNzAsOSBAQCBjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVyUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLAogICAgIGVuc3Vy
ZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIGZvcmNlRnVsZmls
bFByb21pc2UgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIGZ1bGZpbGxGZXRjaCAgICAg
ICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgICAg
ICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3RTYXRpc2Z5ICAgICAgICAgICAgICAgICBKU0J1
aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgotICAgIHJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgotICAgIHJlcXVlc3RSZWFkeSAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJl
cXVlc3RJbnN0YW50aWF0ZSAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJlcXVlc3RT
YXRpc2Z5ICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIGxpbmsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIG1vZHVsZURlY2xhcmF0aW9uSW5z
dGFudGlhdGlvbiBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRp
YXRpb24gRG9udEVudW18RnVuY3Rpb24gMwogICAgIG1vZHVsZUV2YWx1YXRpb24gICAgICAgICAg
ICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgpAQCAtODMsMTIgKzgxLDEyIEBAIGNvbnN0IENsYXNzSW5mbyBN
b2R1bGVMb2FkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpz
X2luZm8sCiAgICAgbG9hZEFuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAz
CiAgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAg
bGlua0FuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcmVxdWVz
dEltcG9ydE1vZHVsZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdEltcG9y
dE1vZHVsZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgZ2V0TW9kdWxlTmFtZXNwYWNl
T2JqZWN0ICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUdldE1vZHVsZU5hbWVzcGFjZU9iamVj
dCAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCiAgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlclByb3RvdHlwZVJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAyCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRl
clByb3RvdHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3Rv
dHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiBA
ZW5kCiAqLwogCkBAIC0xOTUsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJQcm90b3R5cGVGZXRjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNNb2R1
bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgZXhl
Yy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9h
ZGVyLT5mZXRjaChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZmV0Y2goZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZUdldE1vZHVs
ZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4
ODI4M2ZlMDIxODMwM2Y1ZGJmNDc5MjNkMzc5YTJjNjc5YTM4OTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaApA
QCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxZWE3MWM4YjExMzBhNjI2YWRl
YzY0OTc4ODk0NjczMjk3YzUzM2JmLi5kNGIwNjRkMTI2ZGRlZTRmMWMxNzFkM2YzMWM1NjIyNDI5
YzE4OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03Myw2ICs3Myw3
IEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIK
ICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKQEAgLTI1Myw2
ICsyNTQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
Zml4ZWRBcnJheVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTRml4ZWRBcnJheTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNvdXJjZUNvZGVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1NvdXJjZUNvZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBzY3JpcHRGZXRjaGVyU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaGVyOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgc2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVj
dHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMs
IFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywgSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAyNTgwYTg1MjVkYjNhODRhODM2NjZmYTAwNzAw
MmExMjYwMjc2YzIwLi4yOTZmNTFhNWYzNGRiMjZjMmYxNjA5MGMwZWJhMjgyOGQ2NzM1ODJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZpeGVkQXJyYXlTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc291cmNlQ29kZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzY3JpcHRGZXRjaGVyU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHNjcmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBz
dHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJh
eVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlUmVnaXN0
cnlLZXlTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzMyOWJiMGI5ZDA4NGUzYmQyMTY3NzQ3NGUxMWM5YjhmNDQ4ODQzMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEZl
dGNoUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNGZjOGE2ZDVhYzJkYmRhNzk0YzIwMTU5OTU5
NDVkZjY1YWMzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkZTkyYTg5Zjc2ZmViOThmMjUwZjNhYWM2YWY2MGVkMjYyYWNkOWRhLi5mMmNhOWI5
Zjk4MmYzNjA3YmM5ZTUzOTcwNjk0ZTUwMzJjMDk5Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODI0LDYgKzY4MjQsNyBA
QAogCQlFMzE1MEVBNjFEQTcyMTkwMDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURBNkU5MDgw
MDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcyMTkzMDAx
OTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMu
aCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcy
RTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzIwMUMxQTFGOEU4MjEzMDA3NkEw
MzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMyM0NGRkExRTVBRjZBRjAwRjBCNEEwIC8qIEpTRE9NQ29udmVydFByb21pc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjNDRkY5
MUU1QUY2QTUwMEYwQjRBMCAvKiBKU0RPTUNvbnZlcnRQcm9taXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3
REJEIC8qIEpTRXZlbnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1ODAy
QjYxREM4NDM1RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTgwMkI1MURDODQzNTgwMEE5Nzcz
QyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1Njc2LDYgKzE1Njc3LDcgQEAKIAkJRTM3Qzg2NEYxRUI2
M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTVByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk3NUI3NjFFQzlBRjM5MDA4NDc3MTcgLyogSlNEb2N1bWVudEZy
YWdtZW50RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RG9jdW1lbnRGcmFnbWVudERPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOTc1Qjc3MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0VsZW1lbnRET01KSVQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzgxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRXZl
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVu
dERPTUpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjUxNCw2ICsyNjUx
Niw3IEBACiAJCQkJNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5l
bC5oICovLAogCQkJCUNCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNwcCAq
LywKIAkJCQk1M0I4OTVBRDE5REM3QzM3MDA5Q0FBOTMgLyogTWljcm90YXNrcy5oICovLAorCQkJ
CUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLywK
IAkJCQk4NTAzMUIyRjBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VFdmVudC5jcHAgKi8sCiAJCQkJ
ODUwMzFCMzAwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlRXZlbnQuaCAqLywKIAkJCQkxNDFCOTRF
NTA5RUM0MjIzMDAwRTk0MTMgLyogTW91c2VFdmVudC5pZGwgKi8sCkBAIC0yOTQ5OSw2ICsyOTUw
Miw3IEBACiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZFMUUzRDBCREQwMDZCMEQ0
QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIwMUMx
QTFGOEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNTVCM0RDNjEyNTFGMTJEMDAzRUYyNjkgLyogTW9udGhJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MDMxQjQ2MEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4Mzc2NUY5NTFEQUM1MjJGMDBDMDY1MzcgLyogTW91c2VFdmVu
dEluaXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKaW5kZXggZjE1YTQ2NDJlODdmYTQx
YmM4OTk2M2VmN2YzYzRhNzg2MjRjNGEwZi4uMjAxODg0Nzc5NjE5MDJiNzVlNWRiOGYxMGY0OWJl
ZDdmMGEyODcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgiCkBAIC0zOCwxNSArMzksMTYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyPiBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQm
IGNsaWVudCwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBz
Y3JpcHRGZXRjaGVyKQorUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyOjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiBjbGll
bnQsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0
RmV0Y2hlciwgUmVmUHRyPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcihjbGllbnQs
IHByb21pc2UsIHNjcmlwdEZldGNoZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIoY2xpZW50LCBwcm9taXNlLCBzY3JpcHRGZXRjaGVyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKSk7CiB9CiAKLUNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50
LCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZl
dGNoZXIpCitDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRl
cihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgRGVmZXJyZWRQcm9taXNl
JiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyLCBSZWZQdHI8TW9k
dWxlRmV0Y2hQYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50
KQogICAgICwgbV9wcm9taXNlKCZwcm9taXNlKQogICAgICwgbV9zY3JpcHRGZXRjaGVyKHNjcmlw
dEZldGNoZXIpCisgICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXIuaAppbmRleCAwNDkyM2Y0ZGMyMzM3YWI2MjBhYTBmNTBkZGM4NTc5OWQxZWIxZmQw
Li5mM2UzNDZiZWE3ZTE4YmVkMmI4OTkwNjc0YjZlMjJmYzRhMDI1Y2MyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaApA
QCAtMzksMTEgKzM5LDEyIEBAIGNsYXNzIENhY2hlZFNjcmlwdEZldGNoZXI7CiBjbGFzcyBEZWZl
cnJlZFByb21pc2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0Owor
Y2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXI+LCBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gY3JlYXRlKENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJvbWlzZSYsIENhY2hlZFNjcmlwdEZldGNo
ZXImKTsKKyAgICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gY3JlYXRlKENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJvbWlzZSYsIENhY2hlZFNj
cmlwdEZldGNoZXImLCBSZWZQdHI8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmKTsKIAogICAgIHZp
cnR1YWwgfkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcigpOwogCkBAIC01MSw2ICs1Miw3IEBAIGNs
YXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlCiAKICAgICBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRG
ZXRjaGVyKCkgeyByZXR1cm4gbV9zY3JpcHRGZXRjaGVyLmdldCgpOyB9CiAgICAgQ2FjaGVkU2Ny
aXB0KiBjYWNoZWRTY3JpcHQoKSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsgfQorICAg
IE1vZHVsZUZldGNoUGFyYW1ldGVycyogcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5nZXQoKTsgfQogCiAgICAgdm9pZCBjbGVhckNsaWVudCgpCiAgICAgewpAQCAtNTksMTMgKzYx
LDE0IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlCiAgICAgfQogCiBwcml2YXRlOgotICAgIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBE
ZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJik7CisgICAgQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYsIERlZmVycmVkUHJv
bWlzZSYsIENhY2hlZFNjcmlwdEZldGNoZXImLCBSZWZQdHI8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
PiYmKTsKIAogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsK
IAogICAgIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlOwogICAgIFJlZjxDYWNo
ZWRTY3JpcHRGZXRjaGVyPiBtX3NjcmlwdEZldGNoZXI7CisgICAgUmVmUHRyPE1vZHVsZUZldGNo
UGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAzMDU3YzI2MTg4MGU3MWVhOTM0ZjBlOGZm
NzA1MzViZTg5NGJiN2Q0Li5hZDI4ZThkODRmNjM3YTljZjI5NTQ4YzBlODU2OGM2ZjRkZDc2YTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
QEAgLTM3MywxMSArMzczLDExIEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93
QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJu
IGRlZmVycmVkLT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9CiAKLUpTQzo6SlNJbnRl
cm5hbFByb21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpT
VmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93
QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVy
LCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgSlNDOjpK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0
ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAo
UmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVu
dCgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5mZXRjaChnbG9i
YWxPYmplY3QsIGV4ZWMsIG1vZHVsZUxvYWRlciwgbW9kdWxlS2V5LCBzY3JpcHRGZXRjaGVyKTsK
KyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZmV0Y2goZ2xvYmFsT2Jq
ZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgcGFyYW1ldGVycywgc2NyaXB0RmV0
Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpT
Qzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9CkBA
IC0zOTAsMTEgKzM5MCwxMSBAQCBKU0M6OkpTVmFsdWUgSlNET01XaW5kb3dCYXNlOjptb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiBK
U0M6OmpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2lu
ZG93QmFzZTo6bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1v
ZHVsZUxvYWRlciwgSlNDOjpKU1N0cmluZyogbW9kdWxlTmFtZSwgY29uc3QgSlNDOjpTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbikKK0pTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93
QmFzZTo6bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVs
ZUxvYWRlciwgSlNDOjpKU1N0cmluZyogbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRl
cnMsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgSlNET01X
aW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xv
YmFsT2JqZWN0KTsKICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVs
ZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIs
IG1vZHVsZU5hbWUsIHNvdXJjZU9yaWdpbik7CisgICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9k
dWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUxvYWRl
ciwgbW9kdWxlTmFtZSwgcGFyYW1ldGVycywgc291cmNlT3JpZ2luKTsKICAgICBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQt
PnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggMDc2Y2I2M2RhZDk1ZTVjMDlhNDlmNjk2OTNl
MzVmM2NjNWU0M2VlYy4uMjE1MGM2YTBkYWI0ODk2MmVjZWE1MDFjNDNkY2MwZGQxNDc5YmY0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTc2
LDkgKzc2LDkgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNET01XaW5kb3dCYXNlIDogcHVibGlj
IEpTRE9NR2xvYmFsT2JqZWN0IHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDOjpKU0ludGVy
bmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpT
VmFsdWUsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2Uq
IG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CisgICAg
c3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9k
dWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgY29uc3QgSlNDOjpTb3Vy
Y2VPcmlnaW4mKTsKKyAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9h
ZGVySW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIHN0YXRpYyB2b2lkIHByb21pc2VSZWplY3Rpb25UcmFj
a2VyKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNQcm9taXNl
KiwgSlNDOjpKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24pOwogCiAgICAgUmVmUHRyPERPTVdp
bmRvdz4gbV93cmFwcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCBmNjQxMDljYjk1MzZiMmI0OWZkYzljZTU5NzczMTQ4
MDc0MzZhZTAwLi5hNDQ2MWExNTQwMTk4ZGVlY2RjZmVhOWNhMmRkNWMyNzAyZDk4ZTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aApAQCAtOTAsMTAgKzkwLDEwIEBAIGNsYXNzIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSB7CiAgICAg
ICAgIHRhc2sucnVuKGV4ZWMpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlJiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKKyAgICBzdGF0aWMgSlNDOjpK
U0ludGVybmFsUHJvbWlzZSYgbG9hZE1vZHVsZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0
IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1
cnJlbnRTdGF0ZSgmc3RhdGUpOwotICAgICAgICByZXR1cm4gKkpTQzo6bG9hZE1vZHVsZSgmc3Rh
dGUsIG1vZHVsZU5hbWUsIHNjcmlwdEZldGNoZXIpOworICAgICAgICByZXR1cm4gKkpTQzo6bG9h
ZE1vZHVsZSgmc3RhdGUsIG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiBsb2FkTW9kdWxlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBK
U0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMjgyNjgzYzJiZTRmMzkyODQ2NDA4ZjEwMmYx
OWI2MjI1ZTYzMmI5MS4uNmJlM2MwYWI2MjM3MGRkMGFkZWEwY2M3Y2I0ZDg0OGJmNzBlMTRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJMb2FkYWJsZU1vZHVsZVNjcmlwdC5oIgogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCIK
KyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOUF9qc29iamVj
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgpA
QCAtNjIsNiArNjMsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU01vZHVsZVJlY29yZC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNOYXRpdmVTdGRG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTE5
MCwyMCArMTkyLDIwIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZXB0aW9uCiAgICAgcmV0dXJuIGV2YWx1
YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9u
RGV0YWlscyk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdElu
V29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBTY3JpcHRDb250cm9sbGVy
Ojpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+
JiYgdG9wTGV2ZWxGZXRjaFBhcmFtZXRlcnMsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBhdXRvJiBwcm94eSA9ICp3
aW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqcHJveHkud2luZG93KCktPmds
b2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6
OmxvYWRNb2R1bGUoc3RhdGUsIG1vZHVsZU5hbWUsIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVh
dGUoc3RhdGUudm0oKSwgeyAmbW9kdWxlU2NyaXB0IH0pKTsKKyAgICBhdXRvJiBwcm9taXNlID0g
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6
OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUoc3RhdGUudm0oKSwgV1RGTW92ZSh0b3BM
ZXZlbEZldGNoUGFyYW1ldGVycykpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0YXRl
LnZtKCksIHsgJm1vZHVsZVNjcmlwdCB9KSk7CiAgICAgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhtb2R1bGVTY3JpcHQsIHByb21pc2UsIHdvcmxkKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQs
IGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1v
ZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJp
bmcmIG1vZHVsZU5hbWUsIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgdG9wTGV2ZWxGZXRj
aFBhcmFtZXRlcnMpCiB7Ci0gICAgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0
LCBtb2R1bGVOYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgbG9hZE1vZHVsZVNj
cmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtb2R1bGVOYW1lLCBXVEZNb3ZlKHRvcExldmVsRmV0
Y2hQYXJhbWV0ZXJzKSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0
JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggZWM0ZWQzNzBkNzE5Nzc3NGFmMDQ5OTIwZDQ2Y2NhNzgwNTJkMGI1
YS4uZDg1ZjY2ZGI4ZDk3ODg4OGY5NDgxYjJmNjkzYWRhODliMmQ1MWQ3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTYsNiArNTYsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxEb2N1bWVudDsKIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OwogY2xhc3MgTG9hZGFibGVNb2R1bGVTY3JpcHQ7CitjbGFzcyBNb2R1bGVGZXRjaFBhcmFt
ZXRlcnM7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBj
bGFzcyBVUkw7CkBAIC0xMTUsOCArMTE2LDggQEAgY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiAg
ICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNlcHRp
b25EZXRhaWxzKiA9IG51bGxwdHIpOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYsIEV4Y2VwdGlvbkRldGFp
bHMqID0gbnVsbHB0cik7CiAKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExvYWRh
YmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBET01XcmFwcGVyV29y
bGQmKTsKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBj
b25zdCBTdHJpbmcmIG1vZHVsZU5hbWUpOworICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29y
bGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIFJlZjxN
b2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQgbG9h
ZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAgICAgdm9pZCBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoTG9hZGFi
bGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGI2N2Zm
YTNlNjAyNTgwZTJmNmYzNTVlOGM5NDVhZjYzZWQ0YjI1NmQuLjFjNjJmNDJjYTcxMjg2OTIwMGEw
ZjlhNDAxZTM4OGQ5MjI1ZTU1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMzUsMTMgKzM1LDE2IEBACiAjaW5jbHVkZSAi
TG9hZGFibGVNb2R1bGVTY3JpcHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oIgorI2luY2x1ZGUgIk1vZHVsZUZldGNo
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VJbnRlZ3JpdHkuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0
aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEZldGNoZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KQEAg
LTEzOSw5ICsxNDIsMTAgQEAgc3RhdGljIHZvaWQgcmVqZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJy
b3IoRGVmZXJyZWRQcm9taXNlJiBkZWZlcnJlZCwgTW9kdWxlRmV0Y2gKICAgICB9KTsKIH0KIAot
SlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQorSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9h
ZGVyOjpmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5
VmFsdWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hl
cikKIHsKLSAgICBBU1NFUlQoSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVy
Kj4oZXhlYy0+dm0oKSwgc2NyaXB0RmV0Y2hlcikpOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBBU1NFUlQoSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVy
Kj4odm0sIHNjcmlwdEZldGNoZXIpKTsKIAogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6
OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGpzR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvJiBq
c1Byb21pc2UgPSAqSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywg
Jmdsb2JhbE9iamVjdCk7CkBAIC0xNjQsNyArMTY4LDExIEBAIEpTQzo6SlNJbnRlcm5hbFByb21p
c2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9i
YWxPCiAgICAgICAgIHJldHVybiBqc1Byb21pc2UucHJvbWlzZSgpOwogICAgIH0KIAotICAgIGF1
dG8gbG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVy
cmVkLmdldCgpLCAqc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0RmV0Y2hlcio+KEpTQzo6anNDYXN0
PEpTQzo6SlNTY3JpcHRGZXRjaGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIoKSkpOworICAg
IFJlZlB0cjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+IHRvcExldmVsRmV0Y2hQYXJhbWV0ZXJzOwor
ICAgIGlmIChhdXRvKiBzY3JpcHRGZXRjaFBhcmFtZXRlcnMgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8
SlNDOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVycyo+KHZtLCBwYXJhbWV0ZXJzKSkKKyAgICAgICAg
dG9wTGV2ZWxGZXRjaFBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDxNb2R1bGVGZXRjaFBhcmFtZXRl
cnMqPigmc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLT5wYXJhbWV0ZXJzKCkpOworCisgICAgYXV0byBs
b2FkZXIgPSBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSgqdGhpcywgZGVmZXJyZWQu
Z2V0KCksICpzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHRGZXRjaGVyKj4oSlNDOjpqc0Nhc3Q8SlND
OjpKU1NjcmlwdEZldGNoZXIqPihzY3JpcHRGZXRjaGVyKS0+ZmV0Y2hlcigpKSwgV1RGTW92ZSh0
b3BMZXZlbEZldGNoUGFyYW1ldGVycykpOwogICAgIG1fbG9hZGVycy5hZGQobG9hZGVyLmNvcHlS
ZWYoKSk7CiAgICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1bWVudCwgY29tcGxldGVkVVJMKSkg
ewogICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7CkBAIC0yMTIsNyArMjIwLDcgQEAgc3Rh
dGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIHJlamVjdFByb21pc2UoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0RPTUdsb2JhbE8KICAgICByZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKIH0K
IAotSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjppbXBvcnRNb2R1
bGUoSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyogbW9kdWxlTmFtZSwgY29u
c3QgSlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbikKK0pTQzo6SlNJbnRlcm5hbFByb21p
c2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRl
ciosIEpTQzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBj
b25zdCBKU0M6OlNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luKQogewogICAgIGF1dG8mIHN0YXRl
ID0gKmV4ZWM7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMjQ4LDcgKzI1Niw3
IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9k
dWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiByZWplY3RQcm9taXNlKHN0YXRlLCBnbG9iYWxPYmplY3QsIFR5cGVFcnJvciwgcmVzdWx0
LmVycm9yKCkpOwogCi0gICAgcmV0dXJuIEpTQzo6aW1wb3J0TW9kdWxlKGV4ZWMsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc3VsdC0+c3RyaW5nKCkpLCBKU0M6OkpTU2NyaXB0
RmV0Y2hlcjo6Y3JlYXRlKHZtLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpICkpOworICAgIHJldHVy
biBKU0M6OmltcG9ydE1vZHVsZShleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCByZXN1bHQtPnN0cmluZygpKSwgcGFyYW1ldGVycywgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNy
ZWF0ZSh2bSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSApKTsKIH0KIAogdm9pZCBTY3JpcHRNb2R1
bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciYgbG9hZGVy
LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBwcm9taXNlKQpAQCAtMjg0LDYgKzI5MiwxMyBAQCB2
b2lkIFNjcmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyJiBsb2FkZXIsIFJlZlB0cgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KGF1dG8qIHBhcmFtZXRlcnMgPSBsb2FkZXIucGFyYW1ldGVycygpKSB7CisgICAgICAgIGlmICgh
bWF0Y2hJbnRlZ3JpdHlNZXRhZGF0YShjYWNoZWRTY3JpcHQsIHBhcmFtZXRlcnMtPmludGVncml0
eSgpKSkgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvciwgbWFrZVN0cmlu
ZygiQ2Fubm90IGxvYWQgc2NyaXB0ICIsIGNhY2hlZFNjcmlwdC51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gRmFpbGVkIGludGVncml0eSBtZXRhZGF0YSBjaGVjay4i
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX3JlcXVl
c3RVUkxUb1Jlc3BvbnNlVVJMTWFwLmFkZChjYWNoZWRTY3JpcHQudXJsKCksIGNhY2hlZFNjcmlw
dC5yZXNwb25zZSgpLnVybCgpKTsKICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aENhbGxiYWNrKFsm
XSAoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsKICAgICAgICAg
cmV0dXJuIEpTQzo6SlNTb3VyY2VDb2RlOjpjcmVhdGUoc3RhdGUudm0oKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggNmU3YTYxYjU3
ODQzOGM3NzY0Yjg4MGIxMmE1OTQ3OWRiYWM0ZWFiOC4uNzlmZGY0NzdiOGRmZjU0YTJkYTg3MWQ0
OTQ3YzRjMTE5ODNlZTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0TW9kdWxlTG9hZGVyLmgKQEAgLTU2LDkgKzU2LDkgQEAgY2xhc3MgU2NyaXB0TW9kdWxlTG9h
ZGVyIGZpbmFsIDogcHJpdmF0ZSBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQgewogICAg
IERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KIAogICAgIEpTQzo6
SlNJbnRlcm5hbFByb21pc2UqIHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBK
U0M6OkpTVmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KTsKLSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1v
ZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIGZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUg
cGFyYW1ldGVycywgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTQzo6SlNWYWx1
ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
TW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVs
ZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIGltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyosIGNvbnN0IEpTQzo6U291
cmNlT3JpZ2luJik7CisgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIq
LCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IEpTQzo6U291
cmNlT3JpZ2luJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXImLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAppbmRleCAxMjU3NTk4MTE4
N2I0ZjRkYjA2ZTgwYWQzNWM2OWFkOTM4ZjAxNDI1Li5kNzY5ZTgyMTIwYjgzNzUyMzI4YWMyMDYy
ZTU0NTI0ZmVmZDhkZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVN
b2R1bGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNj
cmlwdC5jcHAKQEAgLTI4LDE4ICsyOCwyMCBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1vZHVsZUZldGNoUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBMb2FkYWJs
ZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYg
Y3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKK1JlZjxMb2Fk
YWJsZU1vZHVsZVNjcmlwdD4gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09y
aWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IExvYWRhYmxlTW9kdWxlU2NyaXB0KG5vbmNlLCBjcm9zc09yaWdpbk1vZGUs
IGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9hZGFibGVNb2R1bGVTY3JpcHQobm9uY2UsIGludGVncml0
eSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSkpOwogfQogCi1Mb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVNb2R1bGVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1l
LCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorTG9hZGFibGVNb2R1bGVTY3JpcHQ6Okxv
YWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgaW50
ZWdyaXR5LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUpCiAgICAgOiBMb2FkYWJsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5Nb2Rl
LCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAs
IG1fcGFyYW1ldGVycyhNb2R1bGVGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZShpbnRlZ3JpdHkpKQog
ewogfQogCkBAIC05MSw3ICs5Myw3IEBAIHZvaWQgTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmV4ZWN1
dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCkKIHZvaWQgTG9hZGFibGVNb2R1bGVTY3Jp
cHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwpCiB7CiAgICAg
aWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNjcmlw
dCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCkpOworICAgICAgICBm
cmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNjcmlwdCgqdGhpcywgcm9vdFVSTC5zdHJpbmcoKSwg
bV9wYXJhbWV0ZXJzLmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgTG9hZGFibGVNb2R1bGVTY3JpcHQ6
OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAppbmRleCA3YzU1
ZmU3MTA2NTc3ZjUzY2M0ODE1YjVlNTk0Yzc2NjRkYzdkMTY3Li5iYTFmZTFkYTFmOTA0OWE0ZmI3
Y2QyZTRmOWQ5YjEyNjM1ZTA2YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1
bGVTY3JpcHQuaApAQCAtMzEsMTIgKzMxLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGU7CitjbGFzcyBNb2R1bGVGZXRjaFBhcmFtZXRlcnM7CiAKIGNs
YXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZU1vZHVsZVNjcmlwdCgpOwogCi0gICAgc3Rh
dGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2Us
IGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93
VHJlZSk7CisgICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5LCBjb25zdCBTdHJpbmcmIGNy
b3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9v
bCBpc0xvYWRlZCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9y
KCkgY29uc3QgZmluYWw7CkBAIC01OSw4ICs2MCw5IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2Ny
aXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0IHsKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXkuZ2V0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUp
OworICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0
cmluZyYgaW50ZWdyaXR5LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJ
blVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCisgICAgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4g
bV9wYXJhbWV0ZXJzOwogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9tb2R1bGVLZXk7
CiAgICAgc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CiAgICAg
Ym9vbCBtX3dhc0NhbmNlbGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb2R1bGVG
ZXRjaFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjE5OGJmZGNmYzc5MDJkNDk3ZDNiOTQxMWQy
MDkxMmZlNzg0YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vZHVs
ZUZldGNoUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzIDog
cHVibGljIEpTQzo6U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlRmV0Y2hQYXJhbWV0
ZXJzKGludGVncml0eSkpOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9pbnRlZ3JpdHk7IH0KKworcHJpdmF0ZToKKyAgICBNb2R1bGVGZXRj
aFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHkpCisgICAgICAgIDogbV9pbnRlZ3Jp
dHkoaW50ZWdyaXR5KQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9pbnRlZ3JpdHk7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAKaW5kZXggYTgzM2UyODIyNmRkZDFkY2QxNDJkNWNhMjJiMzU0NjJlMmI5YzBlZi4uNDI4NmIx
N2FmMTNiZGZmMmI1OWI4NDUwYjcyNTRmNDczZDhmODZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcApAQCAtMzM2LDEzICszMzYsMTkgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojpy
ZXF1ZXN0TW9kdWxlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlv
bikKICAgICAgICAgfQogCiAgICAgICAgIG1faXNFeHRlcm5hbFNjcmlwdCA9IHRydWU7Ci0gICAg
ICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jv
c3NPcmlnaW5Nb2RlLCBzY3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9l
bGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgICAgICBhdXRvIHNjcmlwdCA9
IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoCisgICAgICAgICAgICBub25jZSwKKyAgICAg
ICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCkuc3VicmVzb3VyY2VJbnRlZ3Jp
dHlFbmFibGVkKCkgPyBtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OmludGVncml0eUF0dHIpLnN0cmluZygpIDogZW1wdHlTdHJpbmcoKSwKKyAgICAg
ICAgICAgIGNyb3NzT3JpZ2luTW9kZSwKKyAgICAgICAgICAgIHNjcmlwdENoYXJzZXQoKSwKKyAg
ICAgICAgICAgIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIG1fZWxlbWVudC5p
c0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKICAgICAgICAgc2NyaXB0LT5sb2FkKG1fZWxlbWVu
dC5kb2N1bWVudCgpLCBtb2R1bGVTY3JpcHRSb290VVJMKTsKICAgICAgICAgbV9sb2FkYWJsZVNj
cmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBjcm9z
c09yaWdpbk1vZGUsIHNjcmlwdENoYXJzZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2Vs
ZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgYXV0byBzY3JpcHQgPSBMb2Fk
YWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBlbXB0eVN0cmluZygpLCBjcm9zc09yaWdp
bk1vZGUsIHNjcmlwdENoYXJzZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2VsZW1lbnQu
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CiAKICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc0luRG9jdW1lbnRXcml0ZSgpID8gVGV4dFBvc2l0aW9u
KCkgOiBzY3JpcHRTdGFydFBvc2l0aW9uOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29k
ZShzY3JpcHRDb250ZW50KCksIG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBwb3NpdGlvbiwg
SlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0LmNvcHlSZWYoKSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYzdhN2JjOWMyM2I4YTUwYTJiNDdlODIxODA4ZTQ4ZWRjMTgxMWUzYS4uMzZiYmRj
NjM0MDNkNGJiNDUyNTM5ZmVkMTI5MTI2MDBhZjNkYTZhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTEwLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFN1cHBvcnQgaW50ZWdyaXR5PSIiIG9uIG1vZHVsZSBzY3JpcHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc5NTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVz
b3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1hbm9uLXNjcmlwdC1tb2R1bGUu
anM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jl
c291cmNlcy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3Nvcmln
aW4taW5lbGlnaWJsZS1zY3JpcHQtbW9kdWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVs
ZS5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkv
cmVzb3VyY2VzL25vbi1tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGll
cy5qczoKKyAgICAgICAgKGFkZF9yZXN1bHRfY2FsbGJhY2spOgorICAgICAgICAoU1JJTW9kdWxl
VGVzdCk6CisgICAgICAgIChTUklNb2R1bGVUZXN0LnByb3RvdHlwZS5leGVjdXRlKToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9zcmktbW9kdWxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkv
c3JpLW1vZHVsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vbW9kdWxlcy9tb2R1bGUt
aW5saW5lLWlnbm9yZS1pbnRlZ3JpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vbW9kdWxlcy9tb2R1bGUtaW5saW5lLWlnbm9yZS1pbnRlZ3JpdHkuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvZG9tL21vZHVsZXMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL21vZHVsZXMvbW9kdWxlLWlu
dGVncml0eS1ub24tdG9wLWxldmVsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9tb2R1
bGVzL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwtMi5qczogQWRk
ZWQuCisgICAgICAgICoganMvZG9tL21vZHVsZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1pbnRlZ3Jp
dHktbm9uLXRvcC1sZXZlbC5qczogQWRkZWQuCisKIDIwMTctMTAtMTEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcG9ydCBtZWRpYSBjYXB0dXJlIFdQVCB0
ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRl
Z3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWFub24tc2NyaXB0LW1vZHVsZS5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29y
aWdpbi1hbm9uLXNjcmlwdC1tb2R1bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZjYjFmOTYwMzdlMmY5YmMz
ZTAyNDU0NTZlZTg1YTg4NDU0NDNjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1hbm9u
LXNjcmlwdC1tb2R1bGUuanMKQEAgLTAsMCArMSBAQAord2luZG93LmNyb3Nzb3JpZ2luX2Fub25f
c2NyaXB0PXRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291
cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tY3JlZHMtc2NyaXB0LW1vZHVsZS5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNl
cy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNzQzN2Nj
MmFlZjdjMzA3ODZjMjc5ZGFiMTE1ODgwOTFlYWMwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3Nv
cmlnaW4tY3JlZHMtc2NyaXB0LW1vZHVsZS5qcwpAQCAtMCwwICsxIEBACit3aW5kb3cuY3Jvc3Nv
cmlnaW5fY3JlZHNfc2NyaXB0PXRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4taW5lbGlnaWJs
ZS1zY3JpcHQtbW9kdWxlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1p
bnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWluZWxpZ2libGUtc2NyaXB0LW1vZHVsZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDY2OTNjZDA3ODk2MGUxMmY0YTg0MmIyNDViYzMxNjg2YzhlNGRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRl
Z3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWluZWxpZ2libGUtc2NyaXB0LW1vZHVsZS5qcwpA
QCAtMCwwICsxIEBACit3aW5kb3cuY3Jvc3NvcmlnaW5faW5lbGlnaWJsZV9zY3JpcHQ9dHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5
L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1
bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWEyMThkYTJiODgyYmYyNzUxY2EyYjE0NmJiOTU2YjQ2ZTNjOWNi
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2Ut
aW50ZWdyaXR5L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzCkBAIC0wLDAgKzEg
QEAKK3dpbmRvdy5tYXRjaGluZ19kaWdlc3Q9dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9ub24tbWF0Y2hpbmct
ZGlnZXN0LW1vZHVsZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50
ZWdyaXR5L3Jlc291cmNlcy9ub24tbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MWM2ZDkzYjQ2NTAwMDEzN2IyZWVkNDQxOTVhZjliYzE2NjA4OTMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3Vy
Y2VzL25vbi1tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzCkBAIC0wLDAgKzEgQEAKK3dpbmRvdy5u
b25fbWF0Y2hpbmdfZGlnZXN0PXRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGllcy5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9zcmkt
dXRpbGl0aWVzLmpzCmluZGV4IDg4YjQ4OGE1YTVhMzJlM2FhZTQ5YzI5YzAwYWRkNzVkY2U2ZmM3
OTQuLjk0ZTFhNjYzMzI1NTJlM2U0YTIzNjRjODUyYmE0N2E5OTVkN2E4NzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9z
cmktdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2Ut
aW50ZWdyaXR5L3Jlc291cmNlcy9zcmktdXRpbGl0aWVzLmpzCkBAIC02LDcgKzYsNyBAQAogfQog
CiBhZGRfcmVzdWx0X2NhbGxiYWNrKGZ1bmN0aW9uKHJlcykgewotICAgIGlmIChyZXMubmFtZS5z
dGFydHNXaXRoKCJTY3JpcHQ6ICIpIHx8IHJlcy5uYW1lLnN0YXJ0c1dpdGgoIlN0eWxlOiAiKSkg
eworICAgIGlmIChyZXMubmFtZS5zdGFydHNXaXRoKCJTY3JpcHQ6ICIpIHx8IHJlcy5uYW1lLnN0
YXJ0c1dpdGgoIlN0eWxlOiAiKSB8fCByZXMubmFtZS5zdGFydHNXaXRoKCJNb2R1bGU6ICIpKSB7
CiAgICAgICBTUklUZXN0cy5leGVjdXRlKCk7CiAgICAgfQogfSk7CkBAIC0xMDcsMyArMTA3LDQw
IEBACiAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGUpOwogICAgIHRoaXMuY3VzdG9tQ2FsbGJh
Y2soZSwgY29udGFpbmVyKTsKIH07CisKK3ZhciBTUklNb2R1bGVVUkxDb3VudGVyID0gMDsKK3Zh
ciBTUklNb2R1bGVUZXN0ID0gZnVuY3Rpb24ocGFzcywgbmFtZSwgc3JjLCBpbnRlZ3JpdHlWYWx1
ZSwgY3Jvc3NvcmlnaW5WYWx1ZSkgeworICAgIHRoaXMucGFzcyA9IHBhc3M7CisgICAgdGhpcy5u
YW1lID0gIk1vZHVsZTogIiArIG5hbWU7CisgICAgdGhpcy5zcmMgPSBzcmM7CisgICAgdGhpcy5p
bnRlZ3JpdHlWYWx1ZSA9IGludGVncml0eVZhbHVlOworICAgIHRoaXMuY3Jvc3NvcmlnaW5WYWx1
ZSA9IGNyb3Nzb3JpZ2luVmFsdWU7CisKKyAgICB0aGlzLnRlc3QgPSBhc3luY190ZXN0KHRoaXMu
bmFtZSk7CisKKyAgICB0aGlzLnF1ZXVlID0gU1JJVGVzdHM7CisgICAgdGhpcy5xdWV1ZS5wdXNo
KHRoaXMpOworfQorCitTUklNb2R1bGVUZXN0LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHRlc3QgPSB0aGlzLnRlc3Q7CisgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBlLnR5cGUgPSAibW9kdWxlIjsKKyAgICBlLnNyYyA9
IHRoaXMuc3JjICsgIiMiICsgKFNSSU1vZHVsZVVSTENvdW50ZXIrKyk7CisgICAgZS5zZXRBdHRy
aWJ1dGUoImludGVncml0eSIsIHRoaXMuaW50ZWdyaXR5VmFsdWUpOworICAgIGlmKHRoaXMuY3Jv
c3NvcmlnaW5WYWx1ZSkgeworICAgICAgICBlLnNldEF0dHJpYnV0ZSgiY3Jvc3NvcmlnaW4iLCB0
aGlzLmNyb3Nzb3JpZ2luVmFsdWUpOworICAgIH0KKyAgICBpZih0aGlzLnBhc3MpIHsKKyAgICAg
ICAgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7dGVzdC5kb25lKCl9KTsK
KyAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uKCl7IGFzc2VydF91bnJlYWNoZWQoIkdvb2QgbG9hZCBm
aXJlZCBlcnJvciBoYW5kbGVyLiIpIH0pCisgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAg
ICAgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0
ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoIkJhZCBsb2FkIHN1Y2NlZWRl
ZC4iKSB9KQorICAgICAgICB9KTsKKyAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwg
ZnVuY3Rpb24oKSB7dGVzdC5kb25lKCl9KTsKKyAgICB9CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChlKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJl
c291cmNlLWludGVncml0eS9zcmktbW9kdWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1tb2R1bGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU0NTA4NDExZGNkYTc1YzZiYmRlY2IzNDJmZjAwY2MyNGMyNTQ3YTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0
eS9zcmktbW9kdWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitDT05TT0xFIE1FU1NB
R0U6IFR5cGVFcnJvcjogQ2Fubm90IGxvYWQgc2NyaXB0IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
dWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL25vbi1tYXRjaGluZy1kaWdlc3QtbW9kdWxl
LmpzLiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLgorQ09OU09MRSBNRVNTQUdFOiBU
eXBlRXJyb3I6IENhbm5vdCBsb2FkIHNjcmlwdCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc3VicmVz
b3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzLiBGYWls
ZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLgorQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6
IENhbm5vdCBsb2FkIHNjcmlwdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc3VicmVzb3VyY2UtaW50
ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1hbm9uLXNjcmlwdC1tb2R1bGUuanMuIEZhaWxl
ZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suCitDT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjog
Q2Fubm90IGxvYWQgc2NyaXB0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdWJyZXNvdXJjZS1pbnRl
Z3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWNyZWRzLXNjcmlwdC1tb2R1bGUuanMuIEZhaWxl
ZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suCitDT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ct
T3JpZ2luLgorQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IENyb3NzLW9yaWdpbiBzY3JpcHQg
bG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LgorQ09O
U09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IENhbm5vdCBsb2FkIHNjcmlwdCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3Qt
bW9kdWxlLmpzLiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLgorQ09OU09MRSBNRVNT
QUdFOiBUeXBlRXJyb3I6IENhbm5vdCBsb2FkIHNjcmlwdCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpz
LiBGYWlsZWQgaW50ZWdyaXR5IG1ldGFkYXRhIGNoZWNrLgorCitQQVNTIE1vZHVsZTogU2FtZS1v
cmlnaW4gd2l0aCBjb3JyZWN0IHNoYTI1NiBoYXNoLiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdp
biB3aXRoIGNvcnJlY3Qgc2hhMzg0IGhhc2guIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdp
dGggY29ycmVjdCBzaGE1MTIgaGFzaC4gCitQQVNTIE1vZHVsZTogU2FtZS1vcmlnaW4gd2l0aCBl
bXB0eSBpbnRlZ3JpdHkuIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggaW5jb3JyZWN0
IGhhc2guIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggbXVsdGlwbGUgc2hhMjU2IGhh
c2hlcywgaW5jbHVkaW5nIGNvcnJlY3QuIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGgg
bXVsdGlwbGUgc2hhMjU2IGhhc2hlcywgaW5jbHVkaW5nIHVua25vd24gYWxnb3JpdGhtLiAKK1BB
U1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIHNoYTI1NiBtaXNtYXRjaCwgc2hhNTEyIG1hdGNo
IAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggc2hhMjU2IG1hdGNoLCBzaGE1MTIgbWlz
bWF0Y2ggCitQQVNTIE1vZHVsZTogPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnPiB3aXRoIGNvcnJl
Y3QgaGFzaCwgQUNBTzogKiAKK1BBU1MgTW9kdWxlOiA8Y3Jvc3NvcmlnaW49J2Fub255bW91cyc+
IHdpdGggaW5jb3JyZWN0IGhhc2gsIEFDQU86ICogCitQQVNTIE1vZHVsZTogPGNyb3Nzb3JpZ2lu
PSd1c2UtY3JlZGVudGlhbHMnPiB3aXRoIGNvcnJlY3QgaGFzaCwgQ09SUy1lbGlnaWJsZSAKK1BB
U1MgTW9kdWxlOiA8Y3Jvc3NvcmlnaW49J3VzZS1jcmVkZW50aWFscyc+IHdpdGggaW5jb3JyZWN0
IGhhc2ggQ09SUy1lbGlnaWJsZSAKK1BBU1MgTW9kdWxlOiA8Y3Jvc3NvcmlnaW49J2Fub255bW91
cyc+IHdpdGggQ09SUy1pbmVsaWdpYmxlIHJlc291cmNlIAorUEFTUyBNb2R1bGU6IENyb3NzLW9y
aWdpbiwgZW1wdHkgaW50ZWdyaXR5IAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggY29y
cmVjdCBoYXNoLCBvcHRpb25zLiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIHVua25v
d24gYWxnb3JpdGhtIG9ubHkuIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggY29ycmVj
dCBzaGEyNTYgaGFzaCwgdXNpbmcgYmFzZTY0VVJMIGVuY29kaW5nLiAKK1BBU1MgTW9kdWxlOiBT
YW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhMjU2IGhhc2gsIHVzaW5nIGludGVybWl4ZWQgYmFz
ZTY0IGFuZCBiYXNlNjRVUkwgZW5jb2RpbmcsIHNob3VsZCBmYWlsLiAKK1BBU1MgTW9kdWxlOiBT
YW1lLW9yaWdpbiB3aXRoIGludmFsaWQgc3ludGF4IG9ubHkuIAorUEFTUyBNb2R1bGU6IFNhbWUt
b3JpZ2luIHdpdGggbXVsdGlwbGUgdmFsaWQgc2hhMjU2IGhhc2hlcywgaW5jbHVkaW5nIGNvcnJl
Y3QuIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggaW5jb3JyZWN0IGhhc2gsIG9wdGlv
bnMuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWlu
dGVncml0eS9zcmktbW9kdWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291
cmNlLWludGVncml0eS9zcmktbW9kdWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNkMDU5MzljZjdhMDUz
ZTRjNDJkYTExZWI4MGZhNGRiYTgyMjdiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1tb2R1bGUuaHRtbApAQCAtMCww
ICsxLDE5MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NyaS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0ibG9nIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPHNjcmlw
dD4KKwordmFyIG1haW5faG9zdCA9ICcxMjcuMC4wLjEnOwordmFyIHJlbW90ZV9ob3N0ID0gJ2xv
Y2FsaG9zdCc7Cit2YXIgcG9ydF9zdHJpbmcgPSAiODAwMCI7Cit2YXIgbWFpbl9ob3N0X2FuZF9w
b3J0ID0gbWFpbl9ob3N0ICsgJzonICsgcG9ydF9zdHJpbmc7Cit2YXIgcmVtb3RlX2hvc3RfYW5k
X3BvcnQgPSByZW1vdGVfaG9zdCArICc6JyArIHBvcnRfc3RyaW5nOworCit2YXIgY3Jvc3Nvcmln
aW5fYW5vbl9zY3JpcHQgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyByZW1vdGVfaG9zdF9h
bmRfcG9ydCArICcvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1h
bm9uLXNjcmlwdC1tb2R1bGUuanMnOwordmFyIGNyb3Nzb3JpZ2luX2NyZWRzX3NjcmlwdCA9IGxv
Y2F0aW9uLnByb3RvY29sICsgJy8vJyArIHJlbW90ZV9ob3N0X2FuZF9wb3J0ICsgJy9zdWJyZXNv
dXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWNyZWRzLXNjcmlwdC1tb2R1bGUu
anMnOwordmFyIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfc2NyaXB0ID0gbG9jYXRpb24ucHJvdG9j
b2wgKyAnLy8nICsgcmVtb3RlX2hvc3RfYW5kX3BvcnQgKyAnL3N1YnJlc291cmNlLWludGVncml0
eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4taW5lbGlnaWJsZS1zY3JpcHQtbW9kdWxlLmpzJzsKKwor
Ly8gU2NyaXB0IHRlc3RzIGZyb20gd2ViLXBsYXRmb3JtLXRlc3RzL3N1YnJlc291cmNlLWludGVn
cml0eQorCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3
aXRoIGNvcnJlY3Qgc2hhMjU2IGhhc2guIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2Vz
dC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFRO
Y3NxUEZ6S0V4K3pTVT0iCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAg
ICJTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhMzg0IGhhc2guIiwKKyAgICAicmVzb3VyY2Vz
L21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEzODQtZzhmbit4eDRidG1CWkRK
bG9uWk5OK2REU1lqUDVOc01xbEp3MENTTjZvR0crNk1TSDcxc1JoRVBlQWNSVU1xSiIKKyk7CisK
K25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggY29y
cmVjdCBzaGE1MTIgaGFzaC4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVs
ZS5qcyIsCisgICAgInNoYTUxMi12K1hKZVlyY3RmRTJuT3VSNW9Dei9Kek15aFN6VXRibUc0WUV5
MlliZUFVenIrUWFXM1dtU2RXQUw5L0pyU1BGSlc4QmtMbzVqUVRPOEdhV2NOdFJSZz09IgorKTsK
KworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBl
bXB0eSBpbnRlZ3JpdHkuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUu
anMiLAorICAgICIiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAi
U2FtZS1vcmlnaW4gd2l0aCBpbmNvcnJlY3QgaGFzaC4iLAorICAgICJyZXNvdXJjZXMvbm9uLW1h
dGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYtY1doOW5QZm03L21SYktoemFy
blJZbHNKV3o1WFROY3NxUEZ6S0V4K3pTVT0iCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAg
ICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIG11bHRpcGxlIHNoYTI1NiBoYXNoZXMsIGlu
Y2x1ZGluZyBjb3JyZWN0LiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxl
LmpzIiwKKyAgICAic2hhMjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektF
eCt6U1U9IHNoYTI1Ni1kZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVh
ZCIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2lu
IHdpdGggbXVsdGlwbGUgc2hhMjU2IGhhc2hlcywgaW5jbHVkaW5nIHVua25vd24gYWxnb3JpdGht
LiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAic2hh
MjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IGZvbzY2Ni1k
ZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZCIKKyk7CisKK25ldyBT
UklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggc2hhMjU2IG1p
c21hdGNoLCBzaGE1MTIgbWF0Y2giLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1v
ZHVsZS5qcyIsCisgICAgInNoYTUxMi12K1hKZVlyY3RmRTJuT3VSNW9Dei9Kek15aFN6VXRibUc0
WUV5MlliZUFVenIrUWFXM1dtU2RXQUw5L0pyU1BGSlc4QmtMbzVqUVRPOEdhV2NOdFJSZz09IHNo
YTI1Ni1kZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZCIKKyk7CisK
K25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIHNo
YTI1NiBtYXRjaCwgc2hhNTEyIG1pc21hdGNoIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRp
Z2VzdC1tb2R1bGUuanMiLAorICAgICJzaGE1MTItZGVhZGJlZWZzcGJuVW53b29LR05OQ2IzOW52
ZytFVzBPOWhEU2NUWGVvLzlwVlp6dExTVVlVM0xOVjZIMGxaYXBvOGJDSlVweVBQTEF6RTlmRHpw
eGc9PSBzaGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6S0V4K3pTVT0i
CispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICI8Y3Jvc3NvcmlnaW49
J2Fub255bW91cyc+IHdpdGggY29ycmVjdCBoYXNoLCBBQ0FPOiAqIiwKKyAgICBjcm9zc29yaWdp
bl9hbm9uX3NjcmlwdCwKKyAgICAic2hhMjU2LXZpTHlDWUI2WWRkSktqVUFKNGRaMWVIZSsyNDJE
ZDd3VElDbXZOajJJQUE9IiwKKyAgICAiYW5vbnltb3VzIgorKTsKKworbmV3IFNSSU1vZHVsZVRl
c3QoCisgICAgZmFsc2UsCisgICAgIjxjcm9zc29yaWdpbj0nYW5vbnltb3VzJz4gd2l0aCBpbmNv
cnJlY3QgaGFzaCwgQUNBTzogKiIsCisgICAgY3Jvc3NvcmlnaW5fYW5vbl9zY3JpcHQsCisgICAg
InNoYTI1Ni1kZWFkYmVlZmNTTGxiRlpDajFPQUNMeFR4VmNrMlRPckJURWRVYnd6MXlVPSIsCisg
ICAgImFub255bW91cyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAg
Ijxjcm9zc29yaWdpbj0ndXNlLWNyZWRlbnRpYWxzJz4gd2l0aCBjb3JyZWN0IGhhc2gsIENPUlMt
ZWxpZ2libGUiLAorICAgIGNyb3Nzb3JpZ2luX2NyZWRzX3NjcmlwdCwKKyAgICAic2hhMjU2LU5u
Z1dpSEcyTjZLV2pIaE9jZ0d1RjBpSlhLUitNUE14bDNJcDZ3REFFR2c9IiwKKyAgICAidXNlLWNy
ZWRlbnRpYWxzIgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgZmFsc2UsCisgICAgIjxj
cm9zc29yaWdpbj0ndXNlLWNyZWRlbnRpYWxzJz4gd2l0aCBpbmNvcnJlY3QgaGFzaCBDT1JTLWVs
aWdpYmxlIiwKKyAgICBjcm9zc29yaWdpbl9jcmVkc19zY3JpcHQsCisgICAgInNoYTI1Ni1kZWFk
YmVlZjJTK3BUUlpnaXczRFdyaEM2SkxEbHQyelJ5R3B3SDd1blU4PSIsCisgICAgInVzZS1jcmVk
ZW50aWFscyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICI8Y3Jv
c3NvcmlnaW49J2Fub255bW91cyc+IHdpdGggQ09SUy1pbmVsaWdpYmxlIHJlc291cmNlIiwKKyAg
ICBjcm9zc29yaWdpbl9pbmVsaWdpYmxlX3NjcmlwdCwKKyAgICAic2hhMjU2LUloQitQa1RuSWY4
ODF6QkRXTkVPSjZwS3RqdTlLaXcrTDFmSzVabi9wbDA9IiwKKyAgICAiYW5vbnltb3VzIgorKTsK
KworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiQ3Jvc3Mtb3JpZ2luLCBlbXB0
eSBpbnRlZ3JpdHkiLAorICAgIGNyb3Nzb3JpZ2luX2Fub25fc2NyaXB0LAorICAgICIiCispOwor
CituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIGNv
cnJlY3QgaGFzaCwgb3B0aW9ucy4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1v
ZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5blBmbTcvbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQ
RnpLRXgrelNVPT9mb289YmFyP3NwYW09ZWdncyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAor
ICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggdW5rbm93biBhbGdvcml0aG0gb25seS4i
LAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgImZvbzY2
Ni1VOVdZRHRCV2tjSHgxMys5VUtrLzNRNWVvcURjNFlHeFliMDdFUFd6YjlFPSIKKyk7CisKKy8v
IFdlYktpdCBhZGRpdGlvbnMgdG8gdGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyB0ZXN0IGNhc2VzLgor
Ly8gRklYTUU6IFVwc3RyZWFtIHRoZXNlIGFkZGl0aW9uYWwgdGVzdHMgdG8gdGhlIG9mZmljaWFs
IHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5LgorCituZXcgU1JJTW9kdWxlVGVzdCgKKyAg
ICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhMjU2IGhhc2gsIHVzaW5n
IGJhc2U2NFVSTCBlbmNvZGluZy4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1v
ZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5blBmbTdfbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQ
RnpLRXgtelNVPSIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICJT
YW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhMjU2IGhhc2gsIHVzaW5nIGludGVybWl4ZWQgYmFz
ZTY0IGFuZCBiYXNlNjRVUkwgZW5jb2RpbmcsIHNob3VsZCBmYWlsLiIsCisgICAgInJlc291cmNl
cy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAic2hhMjU2LWNXaDluUGZtN19tUmJL
aHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3Qo
CisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBpbnZhbGlkIHN5bnRheCBvbmx5LiIs
CisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAiP2Zvbz1i
YXI/c3BhbT1lZ2dzIgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAi
U2FtZS1vcmlnaW4gd2l0aCBtdWx0aXBsZSB2YWxpZCBzaGEyNTYgaGFzaGVzLCBpbmNsdWRpbmcg
Y29ycmVjdC4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisg
ICAgInNoYTI1Ni1jV2g5blBmbTcvbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSBz
aGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6S0V4K3pTVT0iCispOwor
CituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBp
bmNvcnJlY3QgaGFzaCwgb3B0aW9ucy4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0
LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1VOVdZRHRCV2tjSHgxMys5VUtrLzNRNWVvcURjNFlH
eFliMDdFUFd6YjllPT9mb289YmFyP3NwYW09ZWdncyIKKyk7CisKK1NSSVRlc3RzLmV4ZWN1dGUo
KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vbW9kdWxlcy9tb2R1bGUtaW5saW5lLWlnbm9yZS1pbnRlZ3JpdHktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9kdWxlLWlubGluZS1pZ25vcmUtaW50
ZWdyaXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDE2MTgzZjkzMTRkYjgzZTRjOWU0M2Uw
MjdlYWFkNmEyMThjYWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL21v
ZHVsZXMvbW9kdWxlLWlubGluZS1pZ25vcmUtaW50ZWdyaXR5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBJbmxpbmUgbW9kdWxlIHNjcmlwdCBpZ25vcmVzIGludGVncml0eSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9kdWxlLWlubGluZS1p
Z25vcmUtaW50ZWdyaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9tb2R1bGUt
aW5saW5lLWlnbm9yZS1pbnRlZ3JpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzFkNjlhYTM3OGQ0YTNl
NGNjOTUwZDhhODEzMzdiM2FmYTQ1ODU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL21vZHVsZXMvbW9kdWxlLWlubGluZS1pZ25vcmUtaW50ZWdyaXR5Lmh0bWwKQEAgLTAs
MCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPklubGlu
ZSBtb2R1bGUgc2NyaXB0IGlnbm9yZXMgaW50ZWdyaXR5PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKKyAgICAgICAgc2NyaXB0LnR5
cGUgPSAnbW9kdWxlJzsKKyAgICAgICAgc2NyaXB0LnRleHRDb250ZW50ID0gYHdpbmRvdy5pbmxp
bmVNb2R1bGVJc0V4ZWN1dGVkID0gdHJ1ZWA7CisgICAgICAgIHNjcmlwdC5pbnRlZ3JpdHkgPSAn
c2hhMjU2LWRlYWRiZWVmJzsKKyAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod2luZG93LmlubGluZU1vZHVsZUlzRXhlY3V0ZWQs
IHRydWUpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9OworICAgICAgICBzY3Jp
cHQub25lcnJvciA9IHJlamVjdDsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChz
Y3JpcHQpOworICAgIH0pOworfSwgJ0lubGluZSBtb2R1bGUgc2NyaXB0IGlnbm9yZXMgaW50ZWdy
aXR5Jyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9tb2R1bGVzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10
b3AtbGV2ZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjU4NTQ3YjcyOGQxMjZkNGE5OWRm
NGY5YzEzOWY4M2M3MDU5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
bW9kdWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIE5vbiB0b3AgbGV2ZWwgbW9kdWxlIHNjcmlwdCBzaG91bGQgd29y
ayBldmVuIHdpdGggaW50ZWdyaXR5IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
bW9kdWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9tb2R1bGVzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjYWJmOTJiYjcyN2FkMmI3NGEyYWRkMWNkNjE0YTU4NDQ3MDkyZDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5v
bi10b3AtbGV2ZWwuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+Tm9uIHRvcCBsZXZlbCBtb2R1bGUgc2NyaXB0IHNob3VsZCB3b3Jr
IGV2ZW4gd2l0aCBpbnRlZ3JpdHk8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOworICAgICAgICBzY3JpcHQudHlwZSA9ICdtb2R1bGUn
OworICAgICAgICBzY3JpcHQuc3JjID0gJy4vc2NyaXB0LXRlc3RzL21vZHVsZS1pbnRlZ3JpdHkt
bm9uLXRvcC1sZXZlbC5qcyc7CisgICAgICAgIHNjcmlwdC5pbnRlZ3JpdHkgPSAnc2hhMjU2LVhM
YXY0ZDZtUE5KUDM5dVRXVHphdFE3YzNEcUdYVDFHeUliKzN0bnI3a0E9JzsKKyAgICAgICAgc2Ny
aXB0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod2lu
ZG93Lm5vblRvcExldmVsTW9kdWxlSXNFeGVjdXRlZCwgdHJ1ZSk7CisgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgIH07CisgICAgICAgIHNjcmlwdC5vbmVycm9yID0gcmVqZWN0OworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CisgICAgfSk7Cit9LCAnTm9u
IHRvcCBsZXZlbCBtb2R1bGUgc2NyaXB0IHNob3VsZCB3b3JrIGV2ZW4gd2l0aCBpbnRlZ3JpdHkn
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL21vZHVsZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZl
bC0yLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1p
bnRlZ3JpdHktbm9uLXRvcC1sZXZlbC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZWRlNmQ5NWRmZWZmM2Q2
NmFlMmRhOGI5Y2FmYjE3NWQzYjRhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vbW9kdWxlcy9zY3JpcHQtdGVzdHMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVs
LTIuanMKQEAgLTAsMCArMSBAQAord2luZG93Lm5vblRvcExldmVsTW9kdWxlSXNFeGVjdXRlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9zY3JpcHQtdGVz
dHMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9t
L21vZHVsZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yY2UwNjZkMWQ2ZWI1NzhjMjU3YzYwZDZjMWFiM2YyNGY2MjhlNjJiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvc2NyaXB0LXRlc3RzL21v
ZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC5qcwpAQCAtMCwwICsxIEBACitpbXBvcnQgIi4v
bW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLTIuanMiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323519</attachid>
            <date>2017-10-12 03:45:52 -0700</date>
            <delta_ts>2017-10-12 06:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177959-20171012194550.patch</filename>
            <type>text/plain</type>
            <size>111291</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NmRiOWQ5M2JmYjljY2RkOGZiZjFkZGVjNzEyNTc5OTI4NWFhZjY3Li44Yjk5MDdjMmRmMWIxZGU2
ZTVlYWM4YjZkYmY4MDg3NzBiMWFhNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMTctMTAtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnRlZ3JpdHk9IiIgb24gbW9kdWxlIHNjcmlwdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzk1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBTdWJyZXNvdXJjZSBJbnRlZ3JpdHkgY2hlY2sgZm9yIG1vZHVsZSBzY3JpcHRzLiBD
dXJyZW50bHksCisgICAgICAgIG9ubHkgdG9wLWxldmVsIG1vZHVsZSBjYW4gYmUgdmVyaWZpZWQg
d2l0aCBpbnRlZ3JpdHkgcGFyYW1ldGVyIHNpbmNlIHRoZXJlCisgICAgICAgIGlzIG5vIHdheSB0
byBwZXJmb3JtIGludGVncml0eSBjaGVjayBvbnRvIHRoZSBpbXBvcnRlZCBtb2R1bGVzLgorCisg
ICAgICAgIEluIEpTQyBzaWRlLCB3ZSBhZGQgYHBhcmFtZXRlcnNgIHRvIHRoZSBlbnRyeSBwb2lu
dCBvZiB0aGUgbW9kdWxlIGxvYWRlcgorICAgICAgICBwaXBlbGluZS4gVGhpcyBpcyBmZXRjaGlu
ZyBwYXJhbWV0ZXJzIGFuZCB1c2VkIHdoZW4gZmV0Y2hpbmcgbW9kdWxlcy4KKworICAgICAgICBX
ZSBzZXBhcmF0ZWx5IHBhc3MgdGhpcyBwYXJhbWV0ZXJzIHRvIHRoZSBwaXBlbGluZSBhbG9uZyB3
aXRoIHRoZSBzY3JpcHQgZmV0Y2hlci4KKyAgICAgICAgVGhlIHNjcmlwdCBmZXRjaGVyIGlzIG9u
bHkgb25lIGZvciBtb2R1bGUgZ3JhcGggc2luY2UgdGhpcyBpcyB0aGUgaW5pdGlhdG9yIG9mCisg
ICAgICAgIHRoaXMgbW9kdWxlIGdyYXBoIGxvYWRpbmcuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlz
IHBhcmFtZXRlcnMgaXMgZm9yIGVhY2gKKyAgICAgICAgbW9kdWxlIGZldGNoaW5nLiBXaGlsZSBz
ZXR0aW5nICJpbnRlZ3JpdHkiIHBhcmFtZXRlcnMgdG8gdGhpcyBzY3JpcHQgZmV0Y2hlciBpcwor
ICAgICAgICBzdWZmaWNpZW50IHRvIHBhc3MgcGFyYW1ldGVycyB0byB0b3AtbGV2ZWwtbW9kdWxl
J3MgZmV0Y2hpbmcsIGl0IGlzIG5vdCBlbm91Z2gKKyAgICAgICAgZm9yIHRoZSBmdXR1cmUgZXh0
ZW5zaW9uLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIHdpbGwgaW52ZXN0aWdhdGUgYSB3
YXkgdG8gcGFzcyBwYXJhbWV0ZXJzIHRvIGVhY2ggbm9uLXRvcC1sZXZlbAorICAgICAgICBtb2R1
bGUuIEF0IHRoYXQgdGltZSwgdGhpcyBgcGFyYW1ldGVyc2Agc2hvdWxkIGJlIHBlci1tb2R1bGUu
IFRoaXMgaXMgYmVjYXVzZQorICAgICAgICAiaW50ZWdyaXR5IiB2YWx1ZSBzaG91bGQgYmUgZGlm
ZmVyZW50IGZvciBlYWNoIG1vZHVsZS4gRm9yIGV4YW1wbGUsIHdlIHdpbGwgYWNjZXB0CisgICAg
ICAgIHNvbWUgZm9ybSBvZiBzeW50YXggdG8gYWRkIHBhcmFtZXRlcnMgdG8gYGltcG9ydGAuIFNv
bWUgcHJvcG9zZWQgc3ludGF4IGlzIGxpa2UKKyAgICAgICAgaHR0cHM6Ly9kaXNjb3Vyc2Uud2lj
Zy5pby90L3NwZWNpZnlpbmctbm9uY2Utb3ItaW50ZWdyaXR5LXdoZW4taW1wb3J0aW5nLW1vZHVs
ZXMvMTg2MQorCisgICAgICAgIGltcG9ydCAiLi94eHguanMiIGludGVncml0eSAieHh4eHh4eCIK
KworICAgICAgICBJbiB0aGlzIGNhc2UsIHRoaXMgYHBhcmFtZXRlcnNgIHdpbGwgYmUgcGFzc2Vk
IHRvICIuL3h4eC5qcyIgbW9kdWxlIGZldGNoaW5nLiBUaGlzCisgICAgICAgIGBwYXJhbWV0ZXJz
YCBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBvZiB0b3AtbGV2ZWwtbW9kdWxlJ3Mg
b25lLiBUaGF0J3Mgd2h5CisgICAgICAgIHdlIG5lZWQgcGVyLW1vZHVsZSBgcGFyYW1ldGVyc2Ag
YW5kIHdoeSB0aGlzIHBhdGNoIGFkZHMgYHBhcmFtZXRlcnNgIHRvIHRoZSBtb2R1bGUgcGlwZWxp
bmUuCisKKyAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHdlIGFsc28gd2FudCB0byBrZWVwIHNj
cmlwdCBmZXRjaGVyLiBUaGlzIGBwZXItbW9kdWxlLWdyYXBoYCB0aGluZworICAgICAgICBpcyBp
bXBvcnRhbnQgdG8gb2ZmZXIgbW9kdWxlLWdyYXBoLXdpZGUgaW5mb3JtYXRpb24uIEZvciBleGFt
cGxlLCBpbXBvcnQubWV0YSB3b3VsZAorICAgICAgICBoYXZlIGBpbXBvcnQubWV0YS5zY3JpcHRF
bGVtZW50YCwgd2hpY2ggaXMgdGhlIHNjcmlwdCBlbGVtZW50IGZldGNoaW5nIHRoZSBtb2R1bGUg
Z3JhcGgKKyAgICAgICAgaW5jbHVkaW5nIHRoaXMuIFNvLCB3ZSBrZWVwIHRoZSBib3RoLCBzY3Jp
cHQgZmV0Y2hlciBhbmQgcGFyYW1ldGVycy4KKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtaW1wb3J0LW1ldGEKKworICAgICAgICBUaGlzIHBhcmFtZXRlcnMgd2lsbCBi
ZSBmaW5hbGx5IHVzZWQgYnkgcGlwZWxpbmUncyBmZXRjaCBob29rLCBhbmQgV2ViQ29yZSBzaWRl
CisgICAgICAgIGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXJzIHRvIGZldGNoIG1vZHVsZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBmdXJ0aGVyIGNsZWFuIHVwIHRoZSBtb2R1bGUgcGlwZWxpbmUgYnkgZHJv
cHBpbmcgdW5uZWNlc3NhcnkgZmVhdHVyZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qczoKKyAgICAgICAgKHJlcXVlc3RG
ZXRjaCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFNh
dGlzZnkpOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgIChsb2FkQW5kRXZhbHVhdGVN
b2R1bGUpOgorICAgICAgICBUaGlzIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZSBzaG91bGQgYmUgaW1w
bGVtZW50ZWQgYnkganVzdCBjYWxsaW5nIGxvYWRNb2R1bGUgYW5kCisgICAgICAgIGxpbmtBbmRF
dmFsdWF0ZU1vZHVsZS4gV2UgY2FuIGRyb3AgcmVxdWVzdFJlYWR5IGFuZCByZXF1ZXN0TGluay4K
KworICAgICAgICAocmVxdWVzdExpbmspOiBEZWxldGVkLgorICAgICAgICAocmVxdWVzdEltcG9y
dE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9i
amVjdDo6bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6
bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICBpbXBvcnQgYW5kIGZldGNoIGhvb2sgdGFrZXMg
cGFyYW1ldGVycy4gQ3VycmVudGx5LCB3ZSBhbHdheXMgcGFzcyBgdW5kZWZpbmVkYCBmb3IKKyAg
ICAgICAgaW1wb3J0IGhvb2suIFdoZW4gZHluYW1pYyBgaW1wb3J0KClgIGlzIGV4dGVuZGVkIHRv
IGFjY2VwdCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMKKyAgICAgICAgbGlrZSBpbnRlZ3JpdHksIHRo
aXMgcGFyYW1ldGVycyB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbCB2YWx1ZS4KKwor
ICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToKKyAgICAgICAgKHJ1bldpdGhPcHRpb25zKToK
KyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkQW5k
RXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6aW1wb3J0TW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNJbXBvcnRNb2R1
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlND
OjpKU01vZHVsZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRl
cjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpp
bXBvcnRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1NjcmlwdEZldGNoUGFyYW1ldGVy
czo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnM6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpwYXJh
bWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKToKKyAgICAgICAgQWRkIFNjcmlwdEZldGNoUGFyYW1ldGVy
cycgSlNDZWxsIHdyYXBwZXIsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLgorICAgICAgICBJdCBp
cyB1c2VkIGluIHRoZSBtb2R1bGUgcGlwZWxpbmUuCisKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlRmV0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUv
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRGZXRj
aFBhcmFtZXRlcnM6On5TY3JpcHRGZXRjaFBhcmFtZXRlcnMpOgorICAgICAgICBBZGQgU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLiBXZSBjYW4gZGVmaW5lIG91ciBvd24gY3VzdG9tIFNjcmlwdEZldGNo
UGFyYW1ldGVycworICAgICAgICBieSBpbmhlcml0aW5nIHRoaXMgY2xhc3MuIFdlYkNvcmUgY3Jl
YXRlcyBNb2R1bGVGZXRjaFBhcmFtZXRlcnMgYnkgaW5oZXJpdGluZworICAgICAgICB0aGlzLgor
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgICogcnVudGltZS9WTS5oOgorCiAyMDE3LTEwLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIGltcG9ydC5tZXRhIHNob3VsZCBub3QgYmUgYXNz
aWduYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NWEyNjFjM2VhZjhhZjRmNGI4Yzc5N2U5ODIzYzUwMzMw
ZjEwY2MuLjliOWE3MzNhYjI0MzkxZWU4NDAyN2E0Yzg0ZDlmZTBiMzkwNGE2OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNy0xMC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IGludGVncml0eT0iIiBvbiBtb2R1bGUg
c2NyaXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc3OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBleHRlbmRzIG1vZHVsZSBob29rcyB0byBhY2NlcHQgZmV0Y2hpbmcgcGFyYW1l
dGVycy4KKyAgICAgICAgV2hlbiBzdGFydGluZyBmZXRjaGluZyBtb2R1bGVzLCBXZWJDb3JlIGNy
ZWF0ZXMgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLgorICAgICAgICBBbmQgdGhpcyBwYXJhbWV0ZXJz
IGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGZldGNoIGhvb2suIFRoZW4sIGZldGNoCisgICAgICAgIGhv
b2sgY2FuIHVzZSB0aGlzIHBhcmFtZXRlcnMgdG8gZmV0Y2ggbW9kdWxlcy4KKworICAgICAgICBU
aGlzIHBhcmFtZXRlcnMgb25seSBjb250YWlucyBgaW50ZWdyaXR5YCBmaWVsZC4gVGhpcyAiaW50
ZWdyaXR5IiBpcworICAgICAgICB1c2VkIHRvIHBlcmZvcm0gc3VicmVzb3VyY2UgaW50ZWdyaXR5
IGNoZWNrIGluIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuCisgICAgICAgIEFuZCB0aGlzIGVycm9y
IGlzIGp1c3QgcHJvcGFyYWdlZCBhcyBlcnJvcnMgaW4gbW9kdWxlIHBpcGVsaW5lLCB3aGljaAor
ICAgICAgICBpcyB0aGUgc2FtZSB0byB0aGUgb3RoZXIgdHlwZXMgb2YgZXJyb3JzIGluIG1vZHVs
ZSBwaXBlbGluZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVn
cml0eS9zcmktbW9kdWxlLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDogQWRkZWQuCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcik6CisgICAgICAgIFRh
a2UgcGFyYW1ldGVycywgd2hpY2ggaW5jbHVkZXMgImludGVncml0eSIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6CisgICAgICAgIGltcG9ydCBhbmQgZmV0Y2gg
aG9va3MgdGFrZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdCk6CisgICAgICAg
IFBhc3MgcGFyYW1ldGVycyB0byB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIG1vZHVsZSBwaXBlbGlu
ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgIElmIHBhcmFtZXRlcnMgYXJlIHBh
c3NlZCwgd2Ugc2V0IHRoZW0gdG8gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLgorCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgIFBh
c3MgcGFyYW1ldGVycyB0byB0aGUgZW50cnkgcG9pbnQgb2YgZHluYW1pYyBpbXBvcnQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICBJZiBzY3JpcHQgbG9hZGVyIGhhcyBwYXJhbWV0ZXJzLCB3ZSBwZXJmb3JtIHN1YnJlc291
cmNlIGludGVncml0eSBjaGVjayBoZXJlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmg6CisgICAgICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OkxvYWRhYmxlTW9kdWxlU2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKToKKyAgICAgICAg
Q3JlYXRlIE1vZHVsZUZldGNoUGFyYW1ldGVycyB3aXRoICJpbnRlZ3JpdHkiIHZhbHVlLgorCisg
ICAgICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgICogZG9tL01vZHVs
ZUZldGNoUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZl
dGNoUGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZldGNoUGFy
YW1ldGVyczo6aW50ZWdyaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZHVsZUZldGNo
UGFyYW1ldGVyczo6TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0TW9k
dWxlU2NyaXB0KToKKyAgICAgICAgUGFzcyAiaW50ZWdyaXR5IiB2YWx1ZSB0byB0aGUgbW9kdWxl
IHNjcmlwdC4KKwogMjAxNy0xMC0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3JyZWN0IG51bGxwdHIgZGVyZWYgaW4gc2VsZWN0aW9uIGhhbmRsaW5n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODNjYzJhOWQ0YTZkZjAwMWIyYzIz
ZTYwYmQ1ZGUzMmIwNjhhOWU4Li5lN2Y1MGI5NTJiOWFlMjMxNTRiYWFmOTAxY2Q1NjM3MTI2ODIx
ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYzMiw2ICsxNjMyLDggQEAK
IAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2
QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
MThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyMDFDMUQxRjhFODIzNjAwNzZBMDMy
IC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhEMDYwQjFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhE
MDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyMkU1QTMxREE2NDQz
OTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlw
cGV0UGFyYW1zLmggKi87IH07CiAJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlw
cGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovOyB9Owog
CQlFMzI4QzZDNzFEQTQzMDQ1MDBEMjU1RkQgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODYw
MTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDE5LDYg
KzQ0MjEsOSBAQAogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1h
Y3JvQXNzZW1ibGVySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
MEQ2NkIxRjE5MjQ5RDAwQTU5MDk1IC8qIEJ1aWx0aW5OYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzhEMDYwQjFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDA2MEMxRjhF
ODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM4RDA2MEQxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50
ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVy
cHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjQ3OSw2ICs2NDg0LDggQEAKIAkJCQkxNDg3NEFFMjE1RUJERTRBMDAyRTM1
ODcgLyogSlNTY29wZS5oICovLAogCQkJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBKU1Nj
cmlwdEZldGNoZXIuY3BwICovLAogCQkJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEZldGNoZXIuaCAqLywKKwkJCQlFMzhEMDYwRDFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuY3BwICovLAorCQkJCUUzOEQwNjBCMUY4RTgxNDEwMDY0OUNGMiAv
KiBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oICovLAogCQkJCTBGOTE5RDBFMTU3RjMzMjcwMDRB
NEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLywKIAkJCQkwRjkxOUQwRjE1
N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICovLAogCQkJCTBG
NEY4Mjg1MUUyRkZEREIwMDc1MTg0QyAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3Bh
Y2UuY3BwICovLApAQCAtNjY0OSw2ICs2NjU2LDcgQEAKIAkJCQkxNDczNDFFMDFEQzJDRTk2MDBB
QTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxQ0QxREMwMkQ3OTAw
QUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAqLywKIAkJCQk4ODUyMTUxQTlDMzg0MjM4OUIz
MjE1QjcgLyogU2NyaXB0RmV0Y2hlci5oICovLAorCQkJCUUzOEQwNjBDMUY4RTgxNDEwMDY0OUNG
MiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLywKIAkJCQlBNzI5OURBMzE3RDEyODU4MDA1
RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUE3Mjk5REE0MTdEMTI4NTgwMDVG
NUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oICovLAogCQkJCUE3OTBERDY3MTgyRjQ5OTcwMDU4ODgw
NyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8sCkBAIC04NzMyLDYgKzg3NDAsNyBAQAog
CQkJCTUzNDYzODcxMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkwNjQzMzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1NjcmlwdEZldGNoZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjAxQzFEMUY4RTgyMzYwMDc2QTAzMiAvKiBKU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMEM0QUMxNjgxMDMwMjAw
MTcwMTFEIC8qIEpTU2NyaXB0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlE
MTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNEY4Mjg4MUUyRkZERTAwMDc1MTg0QyAvKiBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0U3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLApAQCAtODk1NSw3ICs4OTY0LDYgQEAK
IAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1
Y3R1cmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzIzMUJEQTA4RUYw
MDMzMUI4NCAvKiBSZWZsZWN0T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBN0E4
RUMxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDA0LDYgKzkw
MTIsNyBAQAogCQkJCUE1MDNGQTI2MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxQ0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlw
dEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2
QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIwMUMxRTFGOEU4MjRD
MDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTUxNjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJvZmls
aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTA1NSw2ICs5MDY0LDcgQEAKIAkJCQkxNDJF
MzEzQjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDU3
MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzk4Njk0M0IxRjhDMEFDQzAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1
cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAppbmRleCA0Zjc4NjEyYjQ5ZWQ4NzlmOTlkNTIwZDY4YzkzYmIxNmVlMjc4Y2I0Li5mYTgz
ZjNjZmE2YzY3NzY5MDY4ZGQwZjEwNTRlNmMzYmQxMDgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CkBAIC04MDcsNiArODA3LDcgQEAgcnVudGltZS9KU1Byb3h5LmNwcAogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHAKIHJ1bnRpbWUvSlNTY29wZS5jcHAKIHJ1bnRpbWUvSlNTY3Jp
cHRGZXRjaGVyLmNwcAorcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAKIHJ1bnRp
bWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAKIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFN1YnNwYWNlLmNwcAogcnVudGltZS9KU1NldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCmlu
ZGV4IGJkOTdkMzA5NzZmY2Y5MTNjZDU0ZThmYTFjZGExNzUyNTcwMTU5NDguLmVkMGFlNjAzNGE1
ZjA5ODg3NjhjZjI5MDUyNjJjZWI3MWM2OTFlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcwpAQCAtMTQwLDcg
KzE0MCw3IEBAIGZ1bmN0aW9uIGZ1bGZpbGxGZXRjaChlbnRyeSwgc291cmNlKQogCiAvLyBMb2Fk
ZXIuCiAKLWZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIGZldGNoZXIpCitmdW5jdGlvbiByZXF1
ZXN0RmV0Y2goa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtZmV0Y2gKIApAQCAtMTU2LDcgKzE1Niw3IEBA
IGZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIGZldGNoZXIpCiAgICAgLy8gICAgIFRha2UgdGhl
IGtleSBhbmQgZmV0Y2ggdGhlIHJlc291cmNlIGFjdHVhbGx5LgogICAgIC8vICAgICBGb3IgZXhh
bXBsZSwgSmF2YVNjcmlwdENvcmUgc2hlbGwgY2FuIHByb3ZpZGUgdGhlIGhvb2sgZmV0Y2hpbmcg
dGhlIHJlc291cmNlCiAgICAgLy8gICAgIGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLgotICAg
IHZhciBmZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGtleSwgZmV0Y2hlcikudGhlbigoc291cmNl
KSA9PiB7CisgICAgdmFyIGZldGNoUHJvbWlzZSA9IHRoaXMuZmV0Y2goa2V5LCBwYXJhbWV0ZXJz
LCBmZXRjaGVyKS50aGVuKChzb3VyY2UpID0+IHsKICAgICAgICAgQHNldFN0YXRlVG9NYXgoZW50
cnksIEBNb2R1bGVJbnN0YW50aWF0ZSk7CiAgICAgICAgIHJldHVybiBzb3VyY2U7CiAgICAgfSk7
CkBAIC0xNjQsNyArMTY0LDcgQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgZmV0Y2hlcikK
ICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW5zdGFudGlh
dGUoa2V5LCBmZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSwgcGFyYW1l
dGVycywgZmV0Y2hlcikKIHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNyZXF1ZXN0LWluc3RhbnRpYXRlCiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBmdW5jdGlvbiByZXF1
ZXN0SW5zdGFudGlhdGUoa2V5LCBmZXRjaGVyKQogICAgIGlmIChlbnRyeS5pbnN0YW50aWF0ZSkK
ICAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3RhbnRpYXRlOwogCi0gICAgdmFyIGluc3RhbnRpYXRl
UHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwgZmV0Y2hlcikudGhlbigoc291cmNlKSA9
PiB7CisgICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwg
cGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7CiAgICAgICAgIHZhciBtb2R1
bGVSZWNvcmQgPSB0aGlzLnBhcnNlTW9kdWxlKGVudHJ5LmtleSwgc291cmNlKTsKIAogICAgICAg
ICAvLyBGSVhNRTogRGVzY3JpYmVkIGluIHRoZSBkcmFmdCwKQEAgLTIwNyw3ICsyMDcsNyBAQCBm
dW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBmZXRjaGVyKQogICAgIHJldHVybiBpbnN0
YW50aWF0ZVByb21pc2U7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgZmV0Y2hl
cikKK2Z1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsK
ICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzYXRpc2Z5LWluc3RhbmNl
CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBmdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShrZXksIGZldGNo
ZXIpCiAgICAgaWYgKGVudHJ5LnNhdGlzZnkpCiAgICAgICAgIHJldHVybiBlbnRyeS5zYXRpc2Z5
OwogCi0gICAgdmFyIHNhdGlzZnlQcm9taXNlID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5
LCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4geworICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9IHRo
aXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50
cnkpID0+IHsKICAgICAgICAgdmFyIGRlcExvYWRzID0gW107CiAgICAgICAgIGZvciAodmFyIGkg
PSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGxldCBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOwpAQCAtMjQ2
LDcgKzI0Niw4IEBAIGZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgZmV0Y2hlcikKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoZGVwS2V5LCBmZXRjaGVyKS50aGVuKChlbnRyeSkg
PT4geworICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgbW9kdWxlIGxvYWRlciBkbyBub3Qg
cGFzcyBhbnkgaW5mb3JtYXRpb24gZm9yIG5vbi10b3AtbGV2ZWwgbW9kdWxlIGZldGNoaW5nLgor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEtleSwgQHVuZGVm
aW5lZCwgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgICAgICAgICAgICAgcGFp
ci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5
OwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMjY0LDM2ICsyNjUsNiBAQCBmdW5jdGlvbiByZXF1
ZXN0U2F0aXNmeShrZXksIGZldGNoZXIpCiAgICAgcmV0dXJuIHNhdGlzZnlQcm9taXNlOwogfQog
Ci1mdW5jdGlvbiByZXF1ZXN0TGluayhrZXksIGZldGNoZXIpCi17Ci0gICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1saW5rCi0KLSAgICAidXNlIHN0cmljdCI7
Ci0KLSAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKLSAgICBpZiAo
ZW50cnkuc3RhdGUgPiBATW9kdWxlTGluaykgewotICAgICAgICB2YXIgZGVmZXJyZWQgPSBAbmV3
UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7Ci0gICAgICAgIGRlZmVycmVkLkBy
ZXNvbHZlLkBjYWxsKEB1bmRlZmluZWQsIGVudHJ5KTsKLSAgICAgICAgcmV0dXJuIGRlZmVycmVk
LkBwcm9taXNlOwotICAgIH0KLQotICAgIHJldHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGtleSwg
ZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKLSAgICAgICAgdGhpcy5saW5rKGVudHJ5LCBmZXRj
aGVyKTsKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgIH0pOwotfQotCi1mdW5jdGlvbiByZXF1
ZXN0UmVhZHkoa2V5LCBmZXRjaGVyKQotewotICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKLQotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHJldHVy
biB0aGlzLnJlcXVlc3RMaW5rKGtleSwgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKLSAgICAg
ICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7Ci0gICAgfSk7
Ci19Ci0KIC8vIExpbmtpbmcgc2VtYW50aWNzLgogCiBmdW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRj
aGVyKQpAQCAtMzYzLDcgKzMzNCw3IEBAIGZ1bmN0aW9uIHByb3ZpZGVGZXRjaChrZXksIHZhbHVl
KQogICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCB2YWx1ZSk7CiB9CiAKLWZ1bmN0aW9uIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlciwgZmV0Y2hlcikKK2Z1bmN0
aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsKICAgICAi
dXNlIHN0cmljdCI7CiAKQEAgLTM3MSwyMSArMzQyLDggQEAgZnVuY3Rpb24gbG9hZEFuZEV2YWx1
YXRlTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKQogICAgIC8vIHJlc29sdmU6
IG1vZHVsZU5hbWUgPT4gUHJvbWlzZShtb2R1bGVLZXkpCiAgICAgLy8gVGFrZSB0aGUgbmFtZSBh
bmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBs
b2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVy
biB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCi0gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1
bGVOYW1lLCByZWZlcnJlciwgZmV0Y2hlcikudGhlbigoa2V5KSA9PiB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnJlcXVlc3RSZWFkeShrZXksIGZldGNoZXIpOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKQotewotICAgICJ1c2Ug
c3RyaWN0IjsKLQotICAgIC8vIExvYWRlci5yZXNvbHZlIGhvb2sgcG9pbnQuCi0gICAgLy8gcmVz
b2x2ZTogbW9kdWxlTmFtZSA9PiBQcm9taXNlKG1vZHVsZUtleSkKLSAgICAvLyBUYWtlIHRoZSBu
YW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291
cmNlIGxvY2F0aW9uLgotICAgIC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQg
cmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZl
KG1vZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKS50aGVuKChrZXkpID0+IHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKTsKKyAgICByZXR1cm4gdGhp
cy5yZXNvbHZlKG1vZHVsZU5hbWUsIEB1bmRlZmluZWQsIGZldGNoZXIpLnRoZW4oKGtleSkgPT4g
eworICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXksIHBhcmFtZXRlcnMsIGZl
dGNoZXIpOwogICAgIH0pLnRoZW4oKGVudHJ5KSA9PiB7CiAgICAgICAgIHJldHVybiBlbnRyeS5r
ZXk7CiAgICAgfSk7CkBAIC00MDMsMTEgKzM2MSwyMCBAQCBmdW5jdGlvbiBsaW5rQW5kRXZhbHVh
dGVNb2R1bGUoa2V5LCBmZXRjaGVyKQogICAgIHJldHVybiB0aGlzLm1vZHVsZUV2YWx1YXRpb24o
ZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdEltcG9ydE1vZHVs
ZShrZXksIGZldGNoZXIpCitmdW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlTmFt
ZSwgcGFyYW1ldGVycywgZmV0Y2hlcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1
cm4gdGhpcy5sb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4o
KGtleSkgPT4geworICAgICAgICByZXR1cm4gdGhpcy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5
LCBmZXRjaGVyKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVxdWVzdEltcG9ydE1vZHVsZShr
ZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgcmV0
dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKS50aGVuKChlbnRyeSkgPT4gewor
ICAgIHJldHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlciku
dGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdGhpcy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50
cnkua2V5LCBmZXRjaGVyKTsKICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNl
T2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGM4
ZGE0MWJkNDNjYTliMDc1Y2Q4Nzg2ODcwYzNmZTc0NzhmN2VkMjguLmI1NmU3NzZmZGZhZmE4Y2Q4
YjAzMTIxNmZiNDQ2MDcwMjU1OTU2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNjU3LDkg
KzE2NTcsOSBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3Qgewog
ICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBt
b2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01v
ZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgY29uc3QgU291cmNlT3JpZ2luJik7CisgICAgc3RhdGlj
IEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgSlNWYWx1ZSwgY29u
c3QgU291cmNlT3JpZ2luJik7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVM
b2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIq
LCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21p
c2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1
bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21p
c2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1
bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNPYmpl
Y3QqIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU01vZHVsZVJlY29yZCos
IEpTVmFsdWUpOwogfTsKIApAQCAtMTgxMSw3ICsxODExLDcgQEAgc3RhdGljIFN0cmluZyBhYnNv
bHV0ZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICByZXR1cm4gcmVzb2x2ZVBhdGgo
ZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1bGVOYW1lKGZpbGVOYW1lLmltcGwoKSkpOwogfQog
Ci1KU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01vZHVs
ZUxvYWRlciosIEpTU3RyaW5nKiBtb2R1bGVOYW1lVmFsdWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYg
c291cmNlT3JpZ2luKQorSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVySW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyogbW9kdWxlTmFtZVZhbHVlLCBKU1ZhbHVl
IHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CkBAIC0xODM1LDcgKzE4MzUsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xv
YmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bAogICAgIGlmICghZGlyZWN0b3J5TmFtZSkKICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2Uo
Y3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVy
cmVyIG5hbWUgJyIsIFN0cmluZyhyZWZlcnJlci5pbXBsKCkpLCAiJy4iKSkpOwogCi0gICAgYXV0
byByZXN1bHQgPSBKU0M6OmltcG9ydE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1bGVOYW1lKG1vZHVs
ZU5hbWUpKSksIGpzVW5kZWZpbmVkKCkpOworICAgIGF1dG8gcmVzdWx0ID0gSlNDOjppbXBvcnRN
b2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc29sdmVQYXRoKGRpcmVj
dG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFtZShtb2R1bGVOYW1lKSkpLCBwYXJhbWV0ZXJzLCBq
c1VuZGVmaW5lZCgpKTsKICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTk4NSw3ICsxOTg1LDcgQEAgc3RhdGljIGJvb2wgZmV0
Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3Rv
cjxjaGFyPiYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogR2xv
YmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUp
CitKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlTG9hZGVy
KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUsIEpTVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
QEAgLTMyNzMsNyArMzI3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxv
Y2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCi0gICAgSlNJbnRlcm5hbFBy
b21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgZmlsZU5hbWUpOwor
ICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9taXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4
ZWMsIGZpbGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZXJy
b3I7CkBAIC0zNjYwLDcgKzM2NjAsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoT3B0aW9ucyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiAgICAgICAgICAg
ICAgICAgc2NyaXB0QnVmZmVyLmFwcGVuZCgiXCJ1c2Ugc3RyaWN0XCI7XG4iLCBzdHJsZW4oIlwi
dXNlIHN0cmljdFwiO1xuIikpOwogCiAgICAgICAgICAgICBpZiAoaXNNb2R1bGUpIHsKLSAgICAg
ICAgICAgICAgICBwcm9taXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBmaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRB
bmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUsIGpz
VW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0
QnVmZmVyKSkKQEAgLTM2NzYsNyArMzY3Niw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhPcHRpb25z
KEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9ucykKICAgICAg
ICAgYm9vbCBpc0xhc3RGaWxlID0gaSA9PSBzY3JpcHRzLnNpemUoKSAtIDE7CiAgICAgICAgIGlm
IChpc01vZHVsZSkgewogICAgICAgICAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICAgICAgICAg
IHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURihzY3JpcHRCdWZmZXIpLCBTb3VyY2VPcmlnaW4g
eyBhYnNvbHV0ZVBhdGgoZmlsZU5hbWUpIH0sIGZpbGVOYW1lLCBUZXh0UG9zaXRpb24oKSwgU291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpKTsKKyAgICAgICAgICAgICAgICBwcm9taXNl
ID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBtYWtl
U291cmNlKHN0cmluZ0Zyb21VVEYoc2NyaXB0QnVmZmVyKSwgU291cmNlT3JpZ2luIHsgYWJzb2x1
dGVQYXRoKGZpbGVOYW1lKSB9LCBmaWxlTmFtZSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6TW9kdWxlKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwogCiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdWxmaWxsSGFu
ZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBT
dHJpbmcoKSwgWyYsIGlzTGFzdEZpbGVdKEV4ZWNTdGF0ZSogZXhlYykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBiZmEyMGY2MjNlMThiNTM5
ZDBlZWFjMmZjNDcyMjAxNzBlMzhlZTY3Li4wNWZhMzE4YTMzYzhiYmQ5YjcxYWRjNDFlNTE3MmY3
MzU5M2RlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcApAQCAtMTU0LDI0ICsxNTQsMTQgQEAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiByZWpl
Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBy
ZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKIH0KIAotc3RhdGljIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiwgRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpT
VmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKLXsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIG1v
ZHVsZU5hbWUsIHJlZmVycmVyLCBzY3JpcHRGZXRjaGVyKTsKLX0KLQotc3RhdGljIEpTSW50ZXJu
YWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2Nr
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKLXsKLSAgICByZXR1
cm4gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRp
ZmllclRvSlNWYWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSwgc2Ny
aXB0RmV0Y2hlcik7Ci19Ci0KLUpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVy
cywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAotICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKKyAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZp
ZXJUb0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSkp
LCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAogSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMTkwLDI3ICsxODAsMTcgQEAgSlNJbnRl
cm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXIKICAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92
aWRlRmV0Y2goZXhlYywga2V5LCBzb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHJlamVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiAKLSAgICByZXR1cm4gbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVm
aW5lZCgpLCBzY3JpcHRGZXRjaGVyKTsKLX0KLQotc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVy
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCi17Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9k
dWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJyZXIsIHNjcmlw
dEZldGNoZXIpOwotfQotCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoY29u
c3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKLXsKLSAgICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBnbG9iYWxPYmpl
Y3QsIGlkZW50aWZpZXJUb0pTVmFsdWUoZXhlYy0+dm0oKSwgbW9kdWxlTmFtZSksIGpzVW5kZWZp
bmVkKCksIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVsZUxv
YWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywga2V5LCBqc1VuZGVmaW5lZCgpLCBz
Y3JpcHRGZXRjaGVyKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
cikKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0
Y2hlcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICByZXR1cm4gbG9hZE1v
ZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVy
biBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxl
KGV4ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgbW9kdWxlTmFtZSkpLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAogSlNJbnRl
cm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAgLTIzMCw3ICsyMTAsNyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNWYWx1ZQogICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnBy
b3ZpZGVGZXRjaChleGVjLCBrZXksIHNvdXJjZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgcmVqZWN0UHJvbWlzZShleGVjLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHJldHVybiBs
b2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5lZCgpLCBz
Y3JpcHRGZXRjaGVyKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+
bG9hZE1vZHVsZShleGVjLCBrZXksIGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOwogfQog
CiBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjQ0LDE0ICsy
MjQsMTQgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5tb2R1bGVMb2FkZXIoKS0+bGlua0FuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZpZXJU
b0pTVmFsdWUodm0sIG1vZHVsZUtleSksIHNjcmlwdEZldGNoZXIpOwogfQogCi1KU0ludGVybmFs
UHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0ludGVybmFsUHJvbWlzZSogaW1w
b3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBK
U1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0
cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAKLSAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgp
LT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXksIHNj
cmlwdEZldGNoZXIpOworICAgIHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1v
ZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1wb3J0TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgcGFyYW1l
dGVycywgc2NyaXB0RmV0Y2hlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IDc5MzRkNjMyZWE1MGMzNzAy
MjUyYTQ5YmIxNjk4ODRiNmM5ZWVkZGIuLmRlNDQ4YTQwODQ3MWM3NDJlNmYyMjg4ZjFhYTcyNGUz
M2Y4OTc0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgK
QEAgLTU3LDE2ICs1NywxNiBAQCBpbmxpbmUgSlNWYWx1ZSBwcm9maWxlZEV2YWx1YXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgY29uc3QgUwogSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBOYWtlZFB0cjxFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIC8vIExvYWQgdGhlIG1vZHVsZSBzb3VyY2UgYW5k
IGV2YWx1YXRlIGl0LgotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRB
bmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlciA9IGpzVW5kZWZpbmVkKCkpOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7CitK
U19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJz
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKIAogLy8gRmV0Y2ggdGhlIG1vZHVsZSBzb3VyY2Us
IGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZC4KLUpTX0VYUE9SVF9QUklWQVRFIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7Ci1KU19FWFBP
UlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7CitK
U19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2Fk
TW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOwogCiAvLyBMaW5rIGFuZCBldmFsdWF0ZSB0aGUgYWxyZWFkeSBsaW5rZWQgbW9kdWxlLiBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBhIHN5bmMgbWFubmVyLgotSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsK
IAotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
cik7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBwYXJhbWV0ZXJz
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGYxYThlZGQy
NDRmZjg3M2JmYmNhNGRmYzE5MzhhYjRjM2RlMTQyN2UuLjRhMjUwYjk2YzE3ZDU2ZTk1MGVkZjE2
NWIyNDkwZDAzMzdiZWUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTg2LDEzICsxODYsMTMgQEAgc3RydWN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0UHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGlt
ZW91dDsKIAotICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxlTG9hZGVySW1w
b3J0TW9kdWxlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVy
KiwgSlNTdHJpbmcqLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsKKyAgICB0eXBlZGVmIEpTSW50ZXJu
YWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckltcG9ydE1vZHVsZVB0cikoSlNHbG9iYWxPYmplY3Qq
LCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgSlNWYWx1ZSwgY29uc3Qg
U291cmNlT3JpZ2luJik7CiAgICAgTW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlUHRyIG1vZHVsZUxv
YWRlckltcG9ydE1vZHVsZTsKIAogICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9k
dWxlTG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVs
ZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlclJl
c29sdmVQdHIgbW9kdWxlTG9hZGVyUmVzb2x2ZTsKIAotICAgIHR5cGVkZWYgSlNJbnRlcm5hbFBy
b21pc2UqICgqTW9kdWxlTG9hZGVyRmV0Y2hQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICB0eXBlZGVmIEpTSW50
ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4
ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAg
ICAgTW9kdWxlTG9hZGVyRmV0Y2hQdHIgbW9kdWxlTG9hZGVyRmV0Y2g7CiAKICAgICB0eXBlZGVm
IEpTT2JqZWN0KiAoKk1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzUHRyKShK
U0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCAzNzE5MTk3NWUx
OTE0NzRhYjZlYTM0ZmRiYzJhOGFkYmY5N2FhYTAyLi40MjIwOWQ2ZmVkODA2MGFkNDVhMTI4NGVm
NmVjZDkwNjNjZjAzNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC03OTcsNyArNzk3LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJv
bWlzZSgpKTsKICAgICB9CiAKLSAgICBhdXRvKiBpbnRlcm5hbFByb21pc2UgPSBnbG9iYWxPYmpl
Y3QtPm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUoZXhlYywgc3BlY2lmaWVyLCBzb3VyY2VP
cmlnaW4pOworICAgIC8vIFdlIGFsd2F5cyBzcGVjaWZ5IHBhcmFtZXRlcnMgYXMgdW5kZWZpbmVk
LiBPbmNlIGR5bmFtaWMgaW1wb3J0KCkgc3RhcnRzIGFjY2VwdGluZyBmZXRjaGluZyBwYXJhbWV0
ZXJzLAorICAgIC8vIHdlIHNob3VsZCByZXRyaWV2ZSB0aGlzIGZyb20gdGhlIGFyZ3VtZW50cy4K
KyAgICBKU1ZhbHVlIHBhcmFtZXRlcnMgPSBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8qIGludGVy
bmFsUHJvbWlzZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmltcG9ydE1vZHVsZShl
eGVjLCBzcGVjaWZpZXIsIHBhcmFtZXRlcnMsIHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKEV4Y2Vw
dGlvbiogZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKSkgewogICAgICAgICBjYXRj
aFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBl
eGNlcHRpb24tPnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDVhZGMwMmM2NGE2YzAyZjQ0YTE1NTgwODE2MzAzNmRm
MjVlNWVjMTkuLjUwZjUxNDgwZTgyODYzMzk0ZTAxM2RmZjcwODFkNDVmN2NjOThhODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6cHJvdmlkZUZldGNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIGNvbnN0IFNvdXJjZUMKICAgICByZXR1cm4gY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogfQog
Ci1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwg
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
Ojpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtMTEyLDE0ICsxMTIsMTQgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9h
ZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1v
ZHVsZU5hbWUpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQocmVmZXJyZXIpOworICAgIGFyZ3VtZW50
cy5hcHBlbmQocGFyYW1ldGVycyk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVy
KTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQ
cm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBh
cmd1bWVudHMpKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2Fk
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVM
b2FkZXI6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpT
VmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtMTMyLDcgKzEzMiw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9h
ZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtCiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChtb2R1bGVOYW1l
KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKHJlZmVycmVyKTsKKyAgICBhcmd1bWVudHMuYXBwZW5k
KHBhcmFtZXRlcnMpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoc2NyaXB0RmV0Y2hlcik7CiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CkBAIC0xNTgsNyArMTU4LDcgQEAgSlNWYWx1ZSBKU01vZHVsZUxv
YWRlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1
bGVLZXkKICAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmd1bWVudHMpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2Fk
ZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBK
U01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNzEsMTMgKzE3MSwxNCBAQCBKU0ludGVybmFs
UHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZAogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcoZXhlYywgbW9kdWxlS2V5LmltcGwoKSkpOworICAg
IGFyZ3VtZW50cy5hcHBlbmQocGFyYW1ldGVycyk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3Jp
cHRGZXRjaGVyKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4ganNDYXN0PEpT
SW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9h
ZGVyOjppbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogbW9kdWxlTmFtZSwg
Y29uc3QgU291cmNlT3JpZ2luJiByZWZlcnJlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIG1vZHVsZU5h
bWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgU291cmNlT3JpZ2luJiByZWZlcnJlcikKIHsK
ICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAgICBkYXRh
TG9nKCJMb2FkZXIgW2ltcG9ydF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIG1vZHVsZU5h
bWUpLCAiXG4iKTsKQEAgLTE4Nyw3ICsxODgsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBtb2R1bAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIGlmIChnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckltcG9ydE1v
ZHVsZSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+bW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywg
bW9kdWxlTmFtZSwgcmVmZXJyZXIpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoZ2xvYmFsT2Jq
ZWN0LCBleGVjLCB0aGlzLCBtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCByZWZlcnJlcik7CiAKICAg
ICBhdXRvKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gbW9kdWxlTmFtZVN0cmluZyA9IG1vZHVsZU5hbWUt
PnZhbHVlKGV4ZWMpOwpAQCAtMjE0LDcgKzIxNSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01v
ZHVsZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1
CiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNl
KiBKU01vZHVsZUxvYWRlcjo6ZmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpm
ZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRp
bmdTdGF0ZSgpKQogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFibGVN
b2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CkBAIC0yMjMsNyArMjI0LDcgQEAgSlNJbnRlcm5h
bFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBKU1ZhbHVlIHMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIGlmIChnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKQotICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2Fk
ZXJGZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgc2NyaXB0RmV0Y2hlcik7Cisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1v
ZHVsZUxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywga2V5LCBwYXJhbWV0ZXJz
LCBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJl
ZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qp
OwogICAgIFN0cmluZyBtb2R1bGVLZXkgPSBrZXkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggOTNkMzhmNzM5Nzc2MTY3M2Y4MjBjNDhh
YWE4NTYxNjYzOTQ5NGMzMy4uODlhNDczNjNmMjFlNDE4NTcyMTlkNWI3MWRjZThhMThiNjllYWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CkBAIC02NCwxNSArNjQsMTUgQEAgY2xhc3MgSlNNb2R1bGVMb2FkZXIgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAKICAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIu
CiAgICAgSlNWYWx1ZSBwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIGNvbnN0
IFNvdXJjZUNvZGUmKTsKLSAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcik7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywg
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVs
ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAg
ICBKU0ludGVybmFsUHJvbWlzZSogcmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVybmFsUHJv
bWlzZSogcmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gUGxh
dGZvcm0gZGVwZW5kZW50IGhvb2tlZCBBUElzLgotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBv
cnRNb2R1bGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqIG1vZHVsZU5hbWUsIGNvbnN0IFNvdXJjZU9y
aWdpbiYgcmVmZXJyZXIpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhl
Y1N0YXRlKiwgSlNTdHJpbmcqIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29uc3Qg
U291cmNlT3JpZ2luJiByZWZlcnJlcik7CiAgICAgSlNJbnRlcm5hbFByb21pc2UqIHJlc29sdmUo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBmZXRjaChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSog
ZmV0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU09iamVjdCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRp
ZXMoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKIAogICAgIC8vIEFkZGl0aW9uYWwgcGxhdGZvcm0gZGVwZW5kZW50IGhvb2tl
ZCBBUElzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MTRhZmVkNDllYWI1N2QyYTBm
NTAyMGNkZDFjODViMzM0YjYyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHAKQEAgLTAsMCArMSw0MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgor
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpzX2luZm8gPSB7ICJKU1NjcmlwdEZldGNo
UGFyYW1ldGVycyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpIH07CisKK3ZvaWQgSlNTY3JpcHRGZXRjaFBhcmFt
ZXRlcnM6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzKj4oY2VsbCktPn5KU1NjcmlwdEZldGNoUGFyYW1ldGVycygpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YWQ3MjVjYjYw
MWY5MzdhOGZmYjE3ZmM5MmIyYjJhOGYxNDJjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzIDogcHVibGljIEpT
Q2VsbCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gdHJ1ZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU1NjcmlwdEZldGNoUGFyYW1ldGVycyogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFJlZjxTY3JpcHRGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKKyAgICB7
CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzPih2bS5oZWFwKSkgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnModm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRp
YyBKU1NjcmlwdEZldGNoUGFyYW1ldGVycyogY3JlYXRlKFZNJiB2bSwgUmVmPFNjcmlwdEZldGNo
UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2
bSwgdm0uc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3RydWN0dXJlLmdldCgpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpKTsKKyAgICB9CisKKyAgICBTY3JpcHRGZXRjaFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCitwcml2YXRlOgorICAgIEpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxT
Y3JpcHRGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKKyAgICAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCisg
ICAgeworICAgIH0KKworICAgIFJlZjxTY3JpcHRGZXRjaFBhcmFtZXRlcnM+IG1fcGFyYW1ldGVy
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAppbmRleCBlZWUyYTVlYTUxOTc3MWFkYTUzOWUxM2NkYTJiOWU1ZjMyMTdmNjQxLi5j
MDE3MDIzNGUyODZhYjc3MDg5ZThhZjE4MjFlNzQwNjQzMzFhZjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIEpTVHlwZSA6IHVp
bnQ4X3QgewogICAgIEpTRml4ZWRBcnJheVR5cGUsCiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAg
ICBKU1NjcmlwdEZldGNoZXJUeXBlLAorICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzVHlwZSwK
IAogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlw
ZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QuCiAgICAgT2JqZWN0VHlwZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5
cGUuY3BwCmluZGV4IDQ1ZTI2ZGVkZjU2MjU1Y2ZmNzY1NThhODBiNDUzYTY5YzRkMTI5ZDcuLmU4
MzYzODAyMjg0MmMxNzBkNTRkMzZlMGNhZTkyNDZhYTk3MmJkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcApA
QCAtNzAsMTEgKzcwLDkgQEAgY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlclByb3RvdHlwZTo6
c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywKICAgICBlbnN1cmVSZWdp
c3RlcmVkICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBmb3JjZUZ1bGZpbGxQcm9t
aXNlICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAg
ICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAg
ICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKLSAgICByZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICAgICAgSlNC
dWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKLSAgICByZXF1ZXN0U2F0aXNmeSAgICAgICAgICAgICAgICAgSlNCdWlsdGlu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKLSAgICByZXF1ZXN0TGluayAgICAgICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
LSAgICByZXF1ZXN0UmVhZHkgICAgICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBy
ZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICByZXF1ZXN0
SW5zdGFudGlhdGUgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICByZXF1ZXN0U2F0aXNm
eSAgICAgICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgICBsaW5rICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBtb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRp
YXRpb24gbW9kdWxlTG9hZGVyUHJvdG90eXBlTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9u
IERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgICBtb2R1bGVFdmFsdWF0aW9uICAgICAgICAgICAgICAg
SlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKQEAgLTgzLDEyICs4MSwxMiBAQCBjb25zdCBDbGFzc0luZm8gTW9kdWxl
TG9hZGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZv
LAogICAgIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZSAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAg
IGxvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIGxpbmtB
bmRFdmFsdWF0ZU1vZHVsZSAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3RJbXBv
cnRNb2R1bGUgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJlcXVlc3RJbXBvcnRNb2R1
bGUgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIGdldE1vZHVsZU5hbWVzcGFjZU9iamVj
dCAgICAgICBtb2R1bGVMb2FkZXJQcm90b3R5cGVHZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgogICAgIHJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQogICAgIHJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVSZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgotICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJQcm90
b3R5cGVGZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJQcm90b3R5cGVG
ZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogQGVuZAog
Ki8KIApAQCAtMTk1LDcgKzE5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyUHJvdG90eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQogICAgIEpTTW9kdWxlTG9h
ZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4odm0sIGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+
ZmV0Y2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmZldGNoKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVHZXRNb2R1bGVOYW1l
c3BhY2VPYmplY3QoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODgyODNm
ZTAyMTgzMDNmNWRiZjQ3OTIzZDM3OWEyYzY3OWEzODkwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEZldGNoUGFyYW1ldGVycyA6IHB1YmxpYyBSZWZD
b3VudGVkPFNjcmlwdEZldGNoUGFyYW1ldGVycz4geworcHVibGljOgorICAgIHZpcnR1YWwgflNj
cmlwdEZldGNoUGFyYW1ldGVycygpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWVhNzFjOGIxMTMwYTYyNmFkZWM2NDk3
ODg5NDY3MzI5N2M1MzNiZi4uZDRiMDY0ZDEyNmRkZWU0ZjFjMTcxZDNmMzFjNTYyMjQyOWMxODk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzMsNiArNzMsNyBAQAog
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCiAjaW5j
bHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCkBAIC0yNTMsNiArMjU0
LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGZpeGVk
QXJyYXlTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ZpeGVkQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzb3VyY2VDb2RlU3RydWN0dXJlLnNldCgqdGhpcywg
SlNTb3VyY2VDb2RlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
c2NyaXB0RmV0Y2hlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHNjcmlwdEZldGNoUGFyYW1ldGVy
c1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTcGFy
c2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVSZWdp
c3RyeUtleTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMjU4MGE4NTI1ZGIzYTg0YTgzNjY2ZmEwMDcwMDJhMTI2
MDI3NmMyMC4uMjk2ZjUxYTVmMzRkYjI2YzJmMTYwOTBjMGViYTI4MjhkNjczNTgyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zNjEsNiArMzYxLDcgQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5v
ZGU8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmaXhlZEFycmF5U3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHNvdXJjZUNvZGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gc2NyaXB0RmV0Y2hlclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBzY3Jp
cHRGZXRjaFBhcmFtZXRlcnNTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0
dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJyYXlWYWx1
ZU1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczMjliYjBiOWQwODRlM2JkMjE2Nzc0NzRlMTFjOWI4ZjQ0ODg0MzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTRmYzhhNmQ1YWMyZGJkYTc5NGMyMDE1OTk1OTQ1ZGY2
NWFjM2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOGM0MmFhNmNhYmIxZjc5NmUzYTg2OWE2ZDI5ZjMzZTNiZmIxNWNiNy4uYTk1ZWZmN2MwNDk2
ZjkzMzRmYTcxNTJjZWM0Njc4MmFiOGExNDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgyOSw2ICs2ODI5LDcgQEAKIAkJ
RTMxNTBFQTYxREE3MjE5MDAwMTk0MDEyIC8qIEpTTm9kZURPTUpJVC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0FGQTk2NDFEQTZFOTA4MDAyODYx
QkQgLyogSlNOb2RlRE9NSklULmNwcCAqLzsgfTsKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0MDEy
IC8qIERPTUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi87
IH07CiAJCUUzMTgwMzlEMURDNDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNTg3MkUxREMz
RjUyNjAwRjYwN0E2IC8qIEpTRHluYW1pY0Rvd25jYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8q
IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4RDA2MDkxRjhFODExOTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFy
YW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzMjNDRkZBMUU1QUY2QUYwMEYwQjRBMCAvKiBKU0RPTUNvbnZlcnRQcm9taXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIzQ0ZGOTFFNUFG
NkE1MDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTY1QjdCMURDMkQ2QzkwMDIxN0RCRCAv
KiBKU0V2ZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTgwMkI2MURD
ODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyog
RE9NSklUSURMVHlwZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNTY4Nyw2ICsxNTY4OCw3IEBACiAJCUUzN0M4NjRGMUVCNjNFMkQw
MDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk0
MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1v
ZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1
bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDA2MDkxRjhFODEx
OTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1lbnRGcmFnbWVu
dERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3Vt
ZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk3
NUI3NzFFQzlBRjM5MDA4NDc3MTcgLyogSlNFbGVtZW50RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVudERPTUpJVC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc4MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0V2ZW50RE9N
SklULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRET01K
SVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NDAsNiArMjY1NDIsNyBA
QAogCQkJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAq
LywKIAkJCQlDQjhDRjAxNTFBOTM0QjQzMDAwRDUxMEIgLyogTWljcm90YXNrcy5jcHAgKi8sCiAJ
CQkJNTNCODk1QUQxOURDN0MzNzAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCAqLywKKwkJCQlFMzhE
MDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8sCiAJCQkJ
ODUwMzFCMkYwQTQ0RUZDNzAwRjk5MkUwIC8qIE1vdXNlRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjMwMEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZUV2ZW50LmggKi8sCiAJCQkJMTQxQjk0RTUwOUVD
NDIyMzAwMEU5NDEzIC8qIE1vdXNlRXZlbnQuaWRsICovLApAQCAtMjk1MjYsNiArMjk1MjksNyBA
QAogCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyog
TW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyMDFDMUExRjhF
ODIxMzAwNzZBMDMyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjU1QjNEQzYxMjUxRjEyRDAwM0VGMjY5IC8qIE1vbnRoSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAzMUI0NjBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGYxNWE0NjQyZTg3ZmE0MWJjODk5
NjNlZjdmM2M0YTc4NjI0YzRhMGYuLjIwMTg4NDc3OTYxOTAyYjc1ZTVkYjhmMTBmNDliZWQ3ZjBh
Mjg3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVdy
YXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgpAQCAtMzgsMTUgKzM5LDE2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcj4gQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyOjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiBjbGll
bnQsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0
RmV0Y2hlcikKK1JlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcjo6Y3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBE
ZWZlcnJlZFByb21pc2UmIHByb21pc2UsIENhY2hlZFNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNo
ZXIsIFJlZlB0cjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoY2xpZW50LCBwcm9t
aXNlLCBzY3JpcHRGZXRjaGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyKGNsaWVudCwgcHJvbWlzZSwgc2NyaXB0RmV0Y2hlciwgV1RGTW92ZShw
YXJhbWV0ZXJzKSkpOwogfQogCi1DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OkNhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgRGVm
ZXJyZWRQcm9taXNlJiBwcm9taXNlLCBDYWNoZWRTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVy
KQorQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiBjbGllbnQsIERlZmVycmVkUHJvbWlzZSYgcHJv
bWlzZSwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlciwgUmVmUHRyPE1vZHVsZUZl
dGNoUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzKQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAg
ICAsIG1fcHJvbWlzZSgmcHJvbWlzZSkKICAgICAsIG1fc2NyaXB0RmV0Y2hlcihzY3JpcHRGZXRj
aGVyKQorICAgICwgbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgKaW5kZXggMDQ5MjNmNGRjMjMzN2FiNjIwYWEwZjUwZGRjODU3OTlkMWViMWZkMC4uZjNl
MzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTM5
LDExICszOSwxMiBAQCBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyOwogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNz
IE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRGZXRjaGVyJik7
CisgICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+IGNyZWF0ZShDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2UmLCBDYWNoZWRTY3JpcHRG
ZXRjaGVyJiwgUmVmUHRyPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7CiAKICAgICB2aXJ0dWFs
IH5DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoKTsKIApAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZQogCiAgICAgQ2FjaGVkU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hl
cigpIHsgcmV0dXJuIG1fc2NyaXB0RmV0Y2hlci5nZXQoKTsgfQogICAgIENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KCkgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KKyAgICBNb2R1
bGVGZXRjaFBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0
KCk7IH0KIAogICAgIHZvaWQgY2xlYXJDbGllbnQoKQogICAgIHsKQEAgLTU5LDEzICs2MSwxNCBA
QCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZQogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50JiwgRGVmZXJy
ZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYpOworICAgIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcihDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQmLCBEZWZlcnJlZFByb21pc2Um
LCBDYWNoZWRTY3JpcHRGZXRjaGVyJiwgUmVmUHRyPE1vZHVsZUZldGNoUGFyYW1ldGVycz4mJik7
CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAg
ICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKICAgICBSZWY8Q2FjaGVkU2Ny
aXB0RmV0Y2hlcj4gbV9zY3JpcHRGZXRjaGVyOworICAgIFJlZlB0cjxNb2R1bGVGZXRjaFBhcmFt
ZXRlcnM+IG1fcGFyYW1ldGVyczsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IG1fY2FjaGVkU2NyaXB0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMzA1N2MyNjE4ODBlNzFlYTkzNGYwZThmZjcwNTM1
YmU4OTRiYjdkNC4uYWQyOGU4ZDg0ZjYzN2E5Y2YyOTU0OGMwZTg1NjhjNmY0ZGQ3NmE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0z
NzMsMTEgKzM3MywxMSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBkZWZl
cnJlZC0+cmVqZWN0KGV4ZWMsIGpzVW5kZWZpbmVkKCkpOwogfQogCi1KU0M6OkpTSW50ZXJuYWxQ
cm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVM
b2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlND
OjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpT
Qzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFJlZlB0
cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZmV0Y2goZ2xvYmFsT2Jq
ZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CisgICAg
ICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPmZldGNoKGdsb2JhbE9iamVjdCwg
ZXhlYywgbW9kdWxlTG9hZGVyLCBtb2R1bGVLZXksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIp
OwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzkw
LDExICszOTAsMTEgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVy
RXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOwogfQogCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jh
c2U6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVM
b2FkZXIsIEpTQzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2lu
JiBzb3VyY2VPcmlnaW4pCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2Fk
ZXIsIEpTQzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBj
b25zdCBKU0M6OlNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luKQogewogICAgIEpTRE9NV2luZG93
QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2JhbE9i
amVjdCk7CiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT53
cmFwcGVkKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2Fk
ZXIoKS0+aW1wb3J0TW9kdWxlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlTG9hZGVyLCBtb2R1
bGVOYW1lLCBzb3VyY2VPcmlnaW4pOworICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxv
YWRlcigpLT5pbXBvcnRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1v
ZHVsZU5hbWUsIHBhcmFtZXRlcnMsIHNvdXJjZU9yaWdpbik7CiAgICAgSlNDOjpKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJl
ZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5oCmluZGV4IDA3NmNiNjNkYWQ5NWU1YzA5YTQ5ZjY5NjkzZTM1ZjNj
YzVlNDNlZWMuLjIxNTBjNmEwZGFiNDg5NjJlY2VhNTAxYzQzZGNjMGRkMTQ3OWJmNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC03Niw5ICs3
Niw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTRE9NV2luZG93QmFzZSA6IHB1YmxpYyBKU0RP
TUdsb2JhbE9iamVjdCB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFBy
b21pc2UqIG1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1
bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRp
YyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBtb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxv
YWRlckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyosIGNvbnN0IEpTQzo6U291cmNlT3Jp
Z2luJik7CisgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlcklt
cG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
TW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpT
b3VyY2VPcmlnaW4mKTsKICAgICBzdGF0aWMgdm9pZCBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTUHJvbWlzZSosIEpT
Qzo6SlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsKIAogICAgIFJlZlB0cjxET01XaW5kb3c+
IG1fd3JhcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmgKaW5kZXggZjY0MTA5Y2I5NTM2YjJiNDlmZGM5Y2U1OTc3MzE0ODA3NDM2
YWUwMC4uYTQ0NjFhMTU0MDE5OGRlZWNkY2ZlYTljYTJkZDVjMjcwMmQ5OGUwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAg
LTkwLDEwICs5MCwxMCBAQCBjbGFzcyBKU01haW5UaHJlYWRFeGVjU3RhdGUgewogICAgICAgICB0
YXNrLnJ1bihleGVjKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlz
ZSYgbG9hZE1vZHVsZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCisgICAgc3RhdGljIEpTQzo6SlNJbnRl
cm5hbFByb21pc2UmIGxvYWRNb2R1bGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJp
bmcmIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU0M6OkpTVmFsdWUgc2Ny
aXB0RmV0Y2hlcikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50
U3RhdGUoJnN0YXRlKTsKLSAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1bGUoJnN0YXRlLCBt
b2R1bGVOYW1lLCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1
bGUoJnN0YXRlLCBtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSYgbG9hZE1vZHVsZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNDOjpK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI4MjY4M2MyYmU0ZjM5Mjg0NjQwOGYxMDJmMTliNjIy
NWU2MzJiOTEuLjZiZTNjMGFiNjIzNzBkZDBhZGVhMGNjN2NiNGQ4NDhiZjcwZTE0ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTG9hZGFibGVNb2R1bGVTY3JpcHQuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmgiCisjaW5j
bHVkZSAiTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTlBfanNvYmplY3QuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKQEAgLTYy
LDYgKzYzLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU1NjcmlwdEZldGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC0xOTAsMjAg
KzE5MiwyMCBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbgogICAgIHJldHVybiBldmFsdWF0ZUlu
V29ybGQoc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGV4Y2VwdGlvbkRldGFp
bHMpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxk
KExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmIHRv
cExldmVsRmV0Y2hQYXJhbWV0ZXJzLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCiAgICAgYXV0byYgcHJveHkgPSAqd2luZG93
UHJveHkod29ybGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxF
eGVjKCk7CiAKLSAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2Fk
TW9kdWxlKHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHN0
YXRlLnZtKCksIHsgJm1vZHVsZVNjcmlwdCB9KSk7CisgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1Nj
cmlwdEZldGNoUGFyYW1ldGVyczo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1vdmUodG9wTGV2ZWxG
ZXRjaFBhcmFtZXRlcnMpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgp
LCB7ICZtb2R1bGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMobW9k
dWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVT
Y3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiYmIHRvcExldmVsRmV0Y2hQYXJh
bWV0ZXJzKQogewotICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbW9k
dWxlTmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJ
bldvcmxkKG1vZHVsZVNjcmlwdCwgbW9kdWxlTmFtZSwgV1RGTW92ZSh0b3BMZXZlbEZldGNoUGFy
YW1ldGVycyksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9k
dWxlU2NyaXB0LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IGVjNGVkMzcwZDcxOTc3NzRhZjA0OTkyMGQ0NmNjYTc4MDUyZDBiNWEuLmQ4
NWY2NmRiOGQ5Nzg4ODhmOTQ4MWIyZjY5M2FkYTg5YjJkNTFkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsK
IGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0OworY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
VVJMOwpAQCAtMTE1LDggKzExNiw4IEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIEpT
Qzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0
YWlscyogPSBudWxscHRyKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9
IG51bGxwdHIpOwogCi0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1v
ZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgRE9NV3JhcHBlcldvcmxkJik7
Ci0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3Qg
U3RyaW5nJiBtb2R1bGVOYW1lKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBSZWY8TW9kdWxl
RmV0Y2hQYXJhbWV0ZXJzPiYmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxvYWRNb2R1
bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUs
IFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlw
dEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9k
dWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRleCBiNjdmZmEzZTYw
MjU4MGUyZjZmMzU1ZThjOTQ1YWY2M2VkNGIyNTZkLi4xYzYyZjQyY2E3MTI4NjkyMDBhMGY5YTQw
MWUzODhkOTIyNWU1NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTM1LDEzICszNSwxNiBAQAogI2luY2x1ZGUgIkxvYWRh
YmxlTW9kdWxlU2NyaXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCIKKyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNlSW50ZWdyaXR5LmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CkBAIC0xMzks
OSArMTQyLDEwIEBAIHN0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRlTmV0d29ya0Vycm9yKERl
ZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoCiAgICAgfSk7CiB9CiAKLUpTQzo6
SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2Jh
bE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9k
dWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgc2Ny
aXB0RmV0Y2hlcikKK0pTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6
ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVl
LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7
Ci0gICAgQVNTRVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KGV4
ZWMtPnZtKCksIHNjcmlwdEZldGNoZXIpKTsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgQVNTRVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KHZt
LCBzY3JpcHRGZXRjaGVyKSk7CiAKICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihqc0dsb2JhbE9iamVjdCk7CiAgICAgYXV0byYganNQcm9t
aXNlID0gKkpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsICZnbG9i
YWxPYmplY3QpOwpAQCAtMTY0LDcgKzE2OCwxMSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBT
Y3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsTwog
ICAgICAgICByZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKICAgICB9CiAKLSAgICBhdXRvIGxv
YWRlciA9IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5n
ZXQoKSwgKnN0YXRpY19jYXN0PENhY2hlZFNjcmlwdEZldGNoZXIqPihKU0M6OmpzQ2FzdDxKU0M6
OkpTU2NyaXB0RmV0Y2hlcio+KHNjcmlwdEZldGNoZXIpLT5mZXRjaGVyKCkpKTsKKyAgICBSZWZQ
dHI8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiB0b3BMZXZlbEZldGNoUGFyYW1ldGVyczsKKyAgICBp
ZiAoYXV0byogc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMqPih2bSwgcGFyYW1ldGVycykpCisgICAgICAgIHRvcExl
dmVsRmV0Y2hQYXJhbWV0ZXJzID0gc3RhdGljX2Nhc3Q8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzKj4o
JnNjcmlwdEZldGNoUGFyYW1ldGVycy0+cGFyYW1ldGVycygpKTsKKworICAgIGF1dG8gbG9hZGVy
ID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVycmVkLmdldCgp
LCAqc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0RmV0Y2hlcio+KEpTQzo6anNDYXN0PEpTQzo6SlNT
Y3JpcHRGZXRjaGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIoKSksIFdURk1vdmUodG9wTGV2
ZWxGZXRjaFBhcmFtZXRlcnMpKTsKICAgICBtX2xvYWRlcnMuYWRkKGxvYWRlci5jb3B5UmVmKCkp
OwogICAgIGlmICghbG9hZGVyLT5sb2FkKG1fZG9jdW1lbnQsIGNvbXBsZXRlZFVSTCkpIHsKICAg
ICAgICAgbG9hZGVyLT5jbGVhckNsaWVudCgpOwpAQCAtMjEyLDcgKzIyMCw3IEBAIHN0YXRpYyBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiByZWplY3RQcm9taXNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNET01HbG9iYWxPCiAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CiB9CiAKLUpT
Qzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNTdHJpbmcqIG1vZHVsZU5hbWUsIGNvbnN0IEpT
Qzo6U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4pCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBT
Y3JpcHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0ds
b2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTU3RyaW5nKiBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgY29uc3Qg
SlNDOjpTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbikKIHsKICAgICBhdXRvJiBzdGF0ZSA9ICpl
eGVjOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI0OCw3ICsyNTYsNyBAQCBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBqcwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
cmVqZWN0UHJvbWlzZShzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBUeXBlRXJyb3IsIHJlc3VsdC5lcnJv
cigpKTsKIAotICAgIHJldHVybiBKU0M6OmltcG9ydE1vZHVsZShleGVjLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCByZXN1bHQtPnN0cmluZygpKSwgSlNDOjpKU1NjcmlwdEZldGNo
ZXI6OmNyZWF0ZSh2bSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSApKTsKKyAgICByZXR1cm4gSlND
OjppbXBvcnRNb2R1bGUoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVz
dWx0LT5zdHJpbmcoKSksIHBhcmFtZXRlcnMsIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUo
dm0sIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgKSk7CiB9CiAKIHZvaWQgU2NyaXB0TW9kdWxlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXImIGxvYWRlciwgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZSkKQEAgLTI4NCw2ICsyOTIsMTMgQEAgdm9pZCBT
Y3JpcHRNb2R1bGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZE1vZHVsZVNjcmlwdExvYWRl
ciYgbG9hZGVyLCBSZWZQdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChhdXRv
KiBwYXJhbWV0ZXJzID0gbG9hZGVyLnBhcmFtZXRlcnMoKSkgeworICAgICAgICBpZiAoIW1hdGNo
SW50ZWdyaXR5TWV0YWRhdGEoY2FjaGVkU2NyaXB0LCBwYXJhbWV0ZXJzLT5pbnRlZ3JpdHkoKSkp
IHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIkNh
bm5vdCBsb2FkIHNjcmlwdCAiLCBjYWNoZWRTY3JpcHQudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCksICIuIEZhaWxlZCBpbnRlZ3JpdHkgbWV0YWRhdGEgY2hlY2suIikpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgbV9yZXF1ZXN0VVJM
VG9SZXNwb25zZVVSTE1hcC5hZGQoY2FjaGVkU2NyaXB0LnVybCgpLCBjYWNoZWRTY3JpcHQucmVz
cG9uc2UoKS51cmwoKSk7CiAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhDYWxsYmFjayhbJl0gKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmKSB7CiAgICAgICAgIHJldHVy
biBKU0M6OkpTU291cmNlQ29kZTo6Y3JlYXRlKHN0YXRlLnZtKCksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4IDZlN2E2MWI1Nzg0Mzhj
Nzc2NGI4ODBiMTJhNTk0NzlkYmFjNGVhYjguLjc5ZmRmNDc3YjhkZmY1NGEyZGE4NzFkNDk0N2M0
YzExOTgzZWU4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCkBAIC01Niw5ICs1Niw5IEBAIGNsYXNzIFNjcmlwdE1vZHVsZUxvYWRlciBm
aW5hbCA6IHByaXZhdGUgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBEb2N1
bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKICAgICBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlKiByZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0g
ICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVL
ZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlKiBmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
TW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFt
ZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0M6OkpTVmFsdWUgZXZh
bHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVs
ZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNv
cmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlKiBpbXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNTdHJpbmcqLCBjb25zdCBKU0M6OlNvdXJjZU9y
aWdpbiYpOworICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlND
OjpKU1N0cmluZyosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBKU0M6OlNvdXJjZU9y
aWdpbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyJiwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4pIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKaW5kZXggMTI1NzU5ODExODdiNGY0
ZGIwNmU4MGFkMzVjNjlhZDkzOGYwMTQyNS4uZDc2OWU4MjEyMGI4Mzc1MjMyOGFjMjA2MmU1NDUy
NGZlZmQ4ZGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxl
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQu
Y3BwCkBAIC0yOCwxOCArMjgsMjAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gTG9hZGFibGVNb2R1
bGVTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3Nz
T3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
aXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitSZWY8TG9hZGFibGVN
b2R1bGVTY3JpcHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
b25jZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9y
TmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFy
c2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IExvYWRhYmxlTW9kdWxlU2NyaXB0KG5vbmNlLCBpbnRlZ3JpdHksIGNy
b3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRv
d1RyZWUpKTsKIH0KIAotTG9hZGFibGVNb2R1bGVTY3JpcHQ6OkxvYWRhYmxlTW9kdWxlU2NyaXB0
KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9v
bCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKK0xvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJs
ZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0
eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKQogICAgIDogTG9hZGFibGVTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hh
cnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgLCBtX3Bh
cmFtZXRlcnMoTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGUoaW50ZWdyaXR5KSkKIHsKIH0K
IApAQCAtOTEsNyArOTMsNyBAQCB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0OjpleGVjdXRlKFNj
cmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojps
b2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMKQogewogICAgIGlmIChh
dXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5s
b2FkTW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpKTsKKyAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIG1fcGFy
YW1ldGVycy5jb3B5UmVmKCkpOwogfQogCiB2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2Fk
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKaW5kZXggN2M1NWZlNzEw
NjU3N2Y1M2NjNDgxNWI1ZTU5NGM3NjY0ZGM3ZDE2Ny4uYmExZmUxZGExZjkwNDlhNGZiN2NkMmU0
ZjlkOWIxMjYzNWUwNmExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
TW9kdWxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgKQEAgLTMxLDEyICszMSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOworY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwogCiBjbGFzcyBM
b2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TG9hZGFibGVNb2R1bGVTY3JpcHQoKTsKIAotICAgIHN0YXRpYyBS
ZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUp
OworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09y
aWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgaXNM
b2FkZWQoKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNv
bnN0IGZpbmFsOwpAQCAtNTksOCArNjAsOSBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBm
aW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCB7CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1v
ZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlS2V5LmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgTG9hZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3Ry
aW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAg
ICBMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcm
IGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKIAorICAgIFJlZjxNb2R1bGVGZXRjaFBhcmFtZXRlcnM+IG1fcGFy
YW1ldGVyczsKICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fbW9kdWxlS2V5OwogICAg
IHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vycm9yOwogICAgIGJvb2wg
bV93YXNDYW5jZWxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW9kdWxlRmV0Y2hQ
YXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIxOThiZmRjZmM3OTAyZDQ5N2QzYjk0MTFkMjA5MTJm
ZTc4NGFiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb2R1bGVGZXRj
aFBhcmFtZXRlcnMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxydW50aW1lL1NjcmlwdEZldGNoUGFyYW1ldGVycy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVycyA6IHB1Ymxp
YyBKU0M6OlNjcmlwdEZldGNoUGFyYW1ldGVycyB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxN
b2R1bGVGZXRjaFBhcmFtZXRlcnM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGludGVncml0eSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZUZldGNoUGFyYW1ldGVycyhp
bnRlZ3JpdHkpKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZWdyaXR5OyB9CisKK3ByaXZhdGU6CisgICAgTW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzKGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5KQorICAgICAgICA6IG1faW50ZWdyaXR5KGlu
dGVncml0eSkKKyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIG1faW50ZWdyaXR5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmlu
ZGV4IGE4MzNlMjgyMjZkZGQxZGNkMTQyZDVjYTIyYjM1NDYyZTJiOWMwZWYuLjQyODZiMTdhZjEz
YmRmZjJiNTliODQ1MGI3MjU0ZjQ3M2Q4Zjg2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKQEAgLTMzNiwxMyArMzM2LDE5IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVz
dE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQgPSB0cnVlOwotICAgICAgICBh
dXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3Jp
Z2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQubG9jYWxOYW1lKCksIG1fZWxlbWVu
dC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBMb2Fk
YWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKAorICAgICAgICAgICAgbm9uY2UsCisgICAgICAgICAg
ICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnN1YnJlc291cmNlSW50ZWdyaXR5RW5h
YmxlZCgpID8gbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjppbnRlZ3JpdHlBdHRyKS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCksCisgICAgICAgICAg
ICBjcm9zc09yaWdpbk1vZGUsCisgICAgICAgICAgICBzY3JpcHRDaGFyc2V0KCksCisgICAgICAg
ICAgICBtX2VsZW1lbnQubG9jYWxOYW1lKCksCisgICAgICAgICAgICBtX2VsZW1lbnQuaXNJblVz
ZXJBZ2VudFNoYWRvd1RyZWUoKSk7CiAgICAgICAgIHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9j
dW1lbnQoKSwgbW9kdWxlU2NyaXB0Um9vdFVSTCk7CiAgICAgICAgIG1fbG9hZGFibGVTY3JpcHQg
PSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1
dG8gc2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmln
aW5Nb2RlLCBzY3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50
LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVN
b2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgZW1wdHlTdHJpbmcoKSwgY3Jvc3NPcmlnaW5Nb2Rl
LCBzY3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5V
c2VyQWdlbnRTaGFkb3dUcmVlKCkpOwogCiAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gbV9l
bGVtZW50LmRvY3VtZW50KCkuaXNJbkRvY3VtZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDog
c2NyaXB0U3RhcnRQb3NpdGlvbjsKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2Ny
aXB0Q29udGVudCgpLCBtX2VsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgcG9zaXRpb24sIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdC5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRjNjJjNjdmNzc5NjE1N2E3NDk2ODhkOTJmMjYwN2I4NTk4YjdlNjQuLjdiZGEzZTcwMmNl
OTE5N2IwMjIzNTk0YjNlNDkwZjZlMDFhMDljYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
Ny0xMC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGludGVncml0eT0iIiBvbiBtb2R1bGUgc2NyaXB0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNl
LWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQtbW9kdWxlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJj
ZXMvY3Jvc3NvcmlnaW4tY3JlZHMtc2NyaXB0LW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWlu
ZWxpZ2libGUtc2NyaXB0LW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
dWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanM6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291
cmNlcy9ub24tbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qczogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL3NyaS11dGlsaXRpZXMuanM6
CisgICAgICAgIChhZGRfcmVzdWx0X2NhbGxiYWNrKToKKyAgICAgICAgKFNSSU1vZHVsZVRlc3Qp
OgorICAgICAgICAoU1JJTW9kdWxlVGVzdC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgICog
aHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLW1vZHVsZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1t
b2R1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL21vZHVsZXMvbW9kdWxlLWlubGlu
ZS1pZ25vcmUtaW50ZWdyaXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9t
L21vZHVsZXMvbW9kdWxlLWlubGluZS1pZ25vcmUtaW50ZWdyaXR5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL2RvbS9tb2R1bGVzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9tb2R1bGVzL21vZHVsZS1pbnRlZ3Jp
dHktbm9uLXRvcC1sZXZlbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vbW9kdWxlcy9z
Y3JpcHQtdGVzdHMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLTIuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL2RvbS9tb2R1bGVzL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5v
bi10b3AtbGV2ZWwuanM6IEFkZGVkLgorCiAyMDE3LTEwLTExICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFn
ZS9jYWNoZS1jbGVhcmluZy5odHRwcy5odG1sIGFzIGZhaWxpbmcgb24gV2luZG93cy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291
cmNlcy9jcm9zc29yaWdpbi1hbm9uLXNjcmlwdC1tb2R1bGUuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1z
Y3JpcHQtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Y2IxZjk2MDM3ZTJmOWJjM2UwMjQ1NDU2ZWU4
NWE4ODQ1NDQzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1
YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQtbW9k
dWxlLmpzCkBAIC0wLDAgKzEgQEAKK3dpbmRvdy5jcm9zc29yaWdpbl9hbm9uX3NjcmlwdD10cnVl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3Jp
dHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWNyZWRzLXNjcmlwdC1tb2R1bGUuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3Nvcmln
aW4tY3JlZHMtc2NyaXB0LW1vZHVsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTc0MzdjYzJhZWY3YzMwNzg2
YzI3OWRhYjExNTg4MDkxZWFjMDEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWNyZWRz
LXNjcmlwdC1tb2R1bGUuanMKQEAgLTAsMCArMSBAQAord2luZG93LmNyb3Nzb3JpZ2luX2NyZWRz
X3NjcmlwdD10cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNv
dXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL2Nyb3Nzb3JpZ2luLWluZWxpZ2libGUtc2NyaXB0LW1v
ZHVsZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jl
c291cmNlcy9jcm9zc29yaWdpbi1pbmVsaWdpYmxlLXNjcmlwdC1tb2R1bGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2Q2NjkzY2QwNzg5NjBlMTJmNGE4NDJiMjQ1YmMzMTY4NmM4ZTRkZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291
cmNlcy9jcm9zc29yaWdpbi1pbmVsaWdpYmxlLXNjcmlwdC1tb2R1bGUuanMKQEAgLTAsMCArMSBA
QAord2luZG93LmNyb3Nzb3JpZ2luX2luZWxpZ2libGVfc2NyaXB0PXRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMv
bWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVz
b3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhMjE4ZGEyYjg4MmJmMjc1MWNhMmIxNDZiYjk1NmI0NmUzYzljYjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9y
ZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcwpAQCAtMCwwICsxIEBACit3aW5kb3cu
bWF0Y2hpbmdfZGlnZXN0PXRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvbm9uLW1hdGNoaW5nLWRpZ2VzdC1tb2R1
bGUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNv
dXJjZXMvbm9uLW1hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFjNmQ5M2I0
NjUwMDAxMzdiMmVlZDQ0MTk1YWY5YmMxNjYwODkzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291cmNlcy9ub24tbWF0
Y2hpbmctZGlnZXN0LW1vZHVsZS5qcwpAQCAtMCwwICsxIEBACit3aW5kb3cubm9uX21hdGNoaW5n
X2RpZ2VzdD10cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNv
dXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2VzL3NyaS11dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGllcy5q
cwppbmRleCA4OGI0ODhhNWE1YTMyZTNhYWU0OWMyOWMwMGFkZDc1ZGNlNmZjNzk0Li45NGUxYTY2
MzMyNTUyZTNlNGEyMzY0Yzg1MmJhNDdhOTk1ZDdhODc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvc3JpLXV0aWxpdGll
cy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9y
ZXNvdXJjZXMvc3JpLXV0aWxpdGllcy5qcwpAQCAtNiw3ICs2LDcgQEAKIH0KIAogYWRkX3Jlc3Vs
dF9jYWxsYmFjayhmdW5jdGlvbihyZXMpIHsKLSAgICBpZiAocmVzLm5hbWUuc3RhcnRzV2l0aCgi
U2NyaXB0OiAiKSB8fCByZXMubmFtZS5zdGFydHNXaXRoKCJTdHlsZTogIikpIHsKKyAgICBpZiAo
cmVzLm5hbWUuc3RhcnRzV2l0aCgiU2NyaXB0OiAiKSB8fCByZXMubmFtZS5zdGFydHNXaXRoKCJT
dHlsZTogIikgfHwgcmVzLm5hbWUuc3RhcnRzV2l0aCgiTW9kdWxlOiAiKSkgewogICAgICAgU1JJ
VGVzdHMuZXhlY3V0ZSgpOwogICAgIH0KIH0pOwpAQCAtMTA3LDMgKzEwNyw0MCBAQAogICAgIGNv
bnRhaW5lci5hcHBlbmRDaGlsZChlKTsKICAgICB0aGlzLmN1c3RvbUNhbGxiYWNrKGUsIGNvbnRh
aW5lcik7CiB9OworCit2YXIgU1JJTW9kdWxlVVJMQ291bnRlciA9IDA7Cit2YXIgU1JJTW9kdWxl
VGVzdCA9IGZ1bmN0aW9uKHBhc3MsIG5hbWUsIHNyYywgaW50ZWdyaXR5VmFsdWUsIGNyb3Nzb3Jp
Z2luVmFsdWUpIHsKKyAgICB0aGlzLnBhc3MgPSBwYXNzOworICAgIHRoaXMubmFtZSA9ICJNb2R1
bGU6ICIgKyBuYW1lOworICAgIHRoaXMuc3JjID0gc3JjOworICAgIHRoaXMuaW50ZWdyaXR5VmFs
dWUgPSBpbnRlZ3JpdHlWYWx1ZTsKKyAgICB0aGlzLmNyb3Nzb3JpZ2luVmFsdWUgPSBjcm9zc29y
aWdpblZhbHVlOworCisgICAgdGhpcy50ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5hbWUpOworCisg
ICAgdGhpcy5xdWV1ZSA9IFNSSVRlc3RzOworICAgIHRoaXMucXVldWUucHVzaCh0aGlzKTsKK30K
KworU1JJTW9kdWxlVGVzdC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZh
ciB0ZXN0ID0gdGhpcy50ZXN0OworICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c2NyaXB0Iik7CisgICAgZS50eXBlID0gIm1vZHVsZSI7CisgICAgZS5zcmMgPSB0aGlzLnNyYyAr
ICIjIiArIChTUklNb2R1bGVVUkxDb3VudGVyKyspOworICAgIGUuc2V0QXR0cmlidXRlKCJpbnRl
Z3JpdHkiLCB0aGlzLmludGVncml0eVZhbHVlKTsKKyAgICBpZih0aGlzLmNyb3Nzb3JpZ2luVmFs
dWUpIHsKKyAgICAgICAgZS5zZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIiwgdGhpcy5jcm9zc29y
aWdpblZhbHVlKTsKKyAgICB9CisgICAgaWYodGhpcy5wYXNzKSB7CisgICAgICAgIGUuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkge3Rlc3QuZG9uZSgpfSk7CisgICAgICAgIGUu
YWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3Qu
c3RlcChmdW5jdGlvbigpeyBhc3NlcnRfdW5yZWFjaGVkKCJHb29kIGxvYWQgZmlyZWQgZXJyb3Ig
aGFuZGxlci4iKSB9KQorICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgIGUuYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJCYWQgbG9hZCBzdWNjZWVkZWQuIikgfSkKKyAg
ICAgICAgfSk7CisgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9uKCkg
e3Rlc3QuZG9uZSgpfSk7CisgICAgfQorICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7
Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRl
Z3JpdHkvc3JpLW1vZHVsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1
YnJlc291cmNlLWludGVncml0eS9zcmktbW9kdWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDUwODQxMWRjZGE3NWM2YmJkZWNiMzQyZmYwMGNjMjRjMjU0N2EyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLW1vZHVs
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJy
b3I6IENhbm5vdCBsb2FkIHNjcmlwdCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc3VicmVzb3VyY2Ut
aW50ZWdyaXR5L3Jlc291cmNlcy9ub24tbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcy4gRmFpbGVk
IGludGVncml0eSBtZXRhZGF0YSBjaGVjay4KK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiBD
YW5ub3QgbG9hZCBzY3JpcHQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3N1YnJlc291cmNlLWludGVn
cml0eS9yZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcy4gRmFpbGVkIGludGVncml0
eSBtZXRhZGF0YSBjaGVjay4KK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiBDYW5ub3QgbG9h
ZCBzY3JpcHQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N1YnJlc291cmNlLWludGVncml0eS9yZXNv
dXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQtbW9kdWxlLmpzLiBGYWlsZWQgaW50ZWdyaXR5
IG1ldGFkYXRhIGNoZWNrLgorQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IENhbm5vdCBsb2Fk
IHNjcmlwdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Jlc291
cmNlcy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzLiBGYWlsZWQgaW50ZWdyaXR5
IG1ldGFkYXRhIGNoZWNrLgorQ09OU09MRSBNRVNTQUdFOiBPcmlnaW4gaHR0cDovLzEyNy4wLjAu
MTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4KK0NP
TlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiBDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVk
IGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4KK0NPTlNPTEUgTUVTU0FH
RTogVHlwZUVycm9yOiBDYW5ub3QgbG9hZCBzY3JpcHQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3N1
YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcy4g
RmFpbGVkIGludGVncml0eSBtZXRhZGF0YSBjaGVjay4KK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBDYW5ub3QgbG9hZCBzY3JpcHQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3N1YnJlc291cmNl
LWludGVncml0eS9yZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcy4gRmFpbGVkIGlu
dGVncml0eSBtZXRhZGF0YSBjaGVjay4KKworUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGgg
Y29ycmVjdCBzaGEyNTYgaGFzaC4gCitQQVNTIE1vZHVsZTogU2FtZS1vcmlnaW4gd2l0aCBjb3Jy
ZWN0IHNoYTM4NCBoYXNoLiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qg
c2hhNTEyIGhhc2guIAorUEFTUyBNb2R1bGU6IFNhbWUtb3JpZ2luIHdpdGggZW1wdHkgaW50ZWdy
aXR5LiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIGluY29ycmVjdCBoYXNoLiAKK1BB
U1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIG11bHRpcGxlIHNoYTI1NiBoYXNoZXMsIGluY2x1
ZGluZyBjb3JyZWN0LiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIG11bHRpcGxlIHNo
YTI1NiBoYXNoZXMsIGluY2x1ZGluZyB1bmtub3duIGFsZ29yaXRobS4gCitQQVNTIE1vZHVsZTog
U2FtZS1vcmlnaW4gd2l0aCBzaGEyNTYgbWlzbWF0Y2gsIHNoYTUxMiBtYXRjaCAKK1BBU1MgTW9k
dWxlOiBTYW1lLW9yaWdpbiB3aXRoIHNoYTI1NiBtYXRjaCwgc2hhNTEyIG1pc21hdGNoIAorUEFT
UyBNb2R1bGU6IDxjcm9zc29yaWdpbj0nYW5vbnltb3VzJz4gd2l0aCBjb3JyZWN0IGhhc2gsIEFD
QU86ICogCitQQVNTIE1vZHVsZTogPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnPiB3aXRoIGluY29y
cmVjdCBoYXNoLCBBQ0FPOiAqIAorUEFTUyBNb2R1bGU6IDxjcm9zc29yaWdpbj0ndXNlLWNyZWRl
bnRpYWxzJz4gd2l0aCBjb3JyZWN0IGhhc2gsIENPUlMtZWxpZ2libGUgCitQQVNTIE1vZHVsZTog
PGNyb3Nzb3JpZ2luPSd1c2UtY3JlZGVudGlhbHMnPiB3aXRoIGluY29ycmVjdCBoYXNoIENPUlMt
ZWxpZ2libGUgCitQQVNTIE1vZHVsZTogPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnPiB3aXRoIENP
UlMtaW5lbGlnaWJsZSByZXNvdXJjZSAKK1BBU1MgTW9kdWxlOiBDcm9zcy1vcmlnaW4sIGVtcHR5
IGludGVncml0eSAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3QgaGFzaCwg
b3B0aW9ucy4gCitQQVNTIE1vZHVsZTogU2FtZS1vcmlnaW4gd2l0aCB1bmtub3duIGFsZ29yaXRo
bSBvbmx5LiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhMjU2IGhh
c2gsIHVzaW5nIGJhc2U2NFVSTCBlbmNvZGluZy4gCitQQVNTIE1vZHVsZTogU2FtZS1vcmlnaW4g
d2l0aCBjb3JyZWN0IHNoYTI1NiBoYXNoLCB1c2luZyBpbnRlcm1peGVkIGJhc2U2NCBhbmQgYmFz
ZTY0VVJMIGVuY29kaW5nLCBzaG91bGQgZmFpbC4gCitQQVNTIE1vZHVsZTogU2FtZS1vcmlnaW4g
d2l0aCBpbnZhbGlkIHN5bnRheCBvbmx5LiAKK1BBU1MgTW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRo
IG11bHRpcGxlIHZhbGlkIHNoYTI1NiBoYXNoZXMsIGluY2x1ZGluZyBjb3JyZWN0LiAKK1BBU1Mg
TW9kdWxlOiBTYW1lLW9yaWdpbiB3aXRoIGluY29ycmVjdCBoYXNoLCBvcHRpb25zLiAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3Jp
LW1vZHVsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3Jp
dHkvc3JpLW1vZHVsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZDA1OTM5Y2Y3YTA1M2U0YzQyZGExMWVi
ODBmYTRkYmE4MjI3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N1YnJlc291cmNlLWludGVncml0eS9zcmktbW9kdWxlLmh0bWwKQEAgLTAsMCArMSwxOTIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcmktdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImxvZyI+
PC9kaXY+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBt
YWluX2hvc3QgPSAnMTI3LjAuMC4xJzsKK3ZhciByZW1vdGVfaG9zdCA9ICdsb2NhbGhvc3QnOwor
dmFyIHBvcnRfc3RyaW5nID0gIjgwMDAiOwordmFyIG1haW5faG9zdF9hbmRfcG9ydCA9IG1haW5f
aG9zdCArICc6JyArIHBvcnRfc3RyaW5nOwordmFyIHJlbW90ZV9ob3N0X2FuZF9wb3J0ID0gcmVt
b3RlX2hvc3QgKyAnOicgKyBwb3J0X3N0cmluZzsKKwordmFyIGNyb3Nzb3JpZ2luX2Fub25fc2Ny
aXB0ID0gbG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgcmVtb3RlX2hvc3RfYW5kX3BvcnQgKyAn
L3N1YnJlc291cmNlLWludGVncml0eS9yZXNvdXJjZXMvY3Jvc3NvcmlnaW4tYW5vbi1zY3JpcHQt
bW9kdWxlLmpzJzsKK3ZhciBjcm9zc29yaWdpbl9jcmVkc19zY3JpcHQgPSBsb2NhdGlvbi5wcm90
b2NvbCArICcvLycgKyByZW1vdGVfaG9zdF9hbmRfcG9ydCArICcvc3VicmVzb3VyY2UtaW50ZWdy
aXR5L3Jlc291cmNlcy9jcm9zc29yaWdpbi1jcmVkcy1zY3JpcHQtbW9kdWxlLmpzJzsKK3ZhciBj
cm9zc29yaWdpbl9pbmVsaWdpYmxlX3NjcmlwdCA9IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyAr
IHJlbW90ZV9ob3N0X2FuZF9wb3J0ICsgJy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvcmVzb3VyY2Vz
L2Nyb3Nzb3JpZ2luLWluZWxpZ2libGUtc2NyaXB0LW1vZHVsZS5qcyc7CisKKy8vIFNjcmlwdCB0
ZXN0cyBmcm9tIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkKKworbmV3
IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0
IHNoYTI1NiBoYXNoLiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpz
IiwKKyAgICAic2hhMjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6
U1U9IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmln
aW4gd2l0aCBjb3JyZWN0IHNoYTM4NCBoYXNoLiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1k
aWdlc3QtbW9kdWxlLmpzIiwKKyAgICAic2hhMzg0LWc4Zm4reHg0YnRtQlpESmxvblpOTitkRFNZ
alA1TnNNcWxKdzBDU042b0dHKzZNU0g3MXNSaEVQZUFjUlVNcUoiCispOworCituZXcgU1JJTW9k
dWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIGNvcnJlY3Qgc2hhNTEy
IGhhc2guIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAg
ICJzaGE1MTItditYSmVZcmN0ZkUybk91UjVvQ3ovSnpNeWhTelV0Ym1HNFlFeTJZYmVBVXpyK1Fh
VzNXbVNkV0FMOS9KclNQRkpXOEJrTG81alFUTzhHYVdjTnRSUmc9PSIKKyk7CisKK25ldyBTUklN
b2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggZW1wdHkgaW50ZWdy
aXR5LiIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxlLmpzIiwKKyAgICAi
IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgZmFsc2UsCisgICAgIlNhbWUtb3JpZ2lu
IHdpdGggaW5jb3JyZWN0IGhhc2guIiwKKyAgICAicmVzb3VyY2VzL25vbi1tYXRjaGluZy1kaWdl
c3QtbW9kdWxlLmpzIiwKKyAgICAic2hhMjU2LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhU
TmNzcVBGektFeCt6U1U9IgorKTsKKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAg
ICAiU2FtZS1vcmlnaW4gd2l0aCBtdWx0aXBsZSBzaGEyNTYgaGFzaGVzLCBpbmNsdWRpbmcgY29y
cmVjdC4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAg
InNoYTI1Ni1jV2g5blBmbTcvbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSBzaGEy
NTYtZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCitu
ZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIG11bHRp
cGxlIHNoYTI1NiBoYXNoZXMsIGluY2x1ZGluZyB1bmtub3duIGFsZ29yaXRobS4iLAorICAgICJy
ZXNvdXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5blBm
bTcvbVJiS2h6YXJuUllsc0pXejVYVE5jc3FQRnpLRXgrelNVPSBmb282NjYtZGVhZGJlZWZkZWFk
YmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCituZXcgU1JJTW9kdWxlVGVz
dCgKKyAgICB0cnVlLAorICAgICJTYW1lLW9yaWdpbiB3aXRoIHNoYTI1NiBtaXNtYXRjaCwgc2hh
NTEyIG1hdGNoIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAor
ICAgICJzaGE1MTItditYSmVZcmN0ZkUybk91UjVvQ3ovSnpNeWhTelV0Ym1HNFlFeTJZYmVBVXpy
K1FhVzNXbVNkV0FMOS9KclNQRkpXOEJrTG81alFUTzhHYVdjTnRSUmc9PSBzaGEyNTYtZGVhZGJl
ZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWQiCispOworCituZXcgU1JJTW9k
dWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBzaGEyNTYgbWF0Y2gs
IHNoYTUxMiBtaXNtYXRjaCIsCisgICAgInJlc291cmNlcy9tYXRjaGluZy1kaWdlc3QtbW9kdWxl
LmpzIiwKKyAgICAic2hhNTEyLWRlYWRiZWVmc3BiblVud29vS0dOTkNiMzludmcrRVcwTzloRFNj
VFhlby85cFZaenRMU1VZVTNMTlY2SDBsWmFwbzhiQ0pVcHlQUExBekU5ZkR6cHhnPT0gc2hhMjU2
LWNXaDluUGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IgorKTsKKworbmV3
IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiPGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMn
PiB3aXRoIGNvcnJlY3QgaGFzaCwgQUNBTzogKiIsCisgICAgY3Jvc3NvcmlnaW5fYW5vbl9zY3Jp
cHQsCisgICAgInNoYTI1Ni12aUx5Q1lCNllkZEpLalVBSjRkWjFlSGUrMjQyRGQ3d1RJQ212Tmoy
SUFBPSIsCisgICAgImFub255bW91cyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZh
bHNlLAorICAgICI8Y3Jvc3NvcmlnaW49J2Fub255bW91cyc+IHdpdGggaW5jb3JyZWN0IGhhc2gs
IEFDQU86ICoiLAorICAgIGNyb3Nzb3JpZ2luX2Fub25fc2NyaXB0LAorICAgICJzaGEyNTYtZGVh
ZGJlZWZjU0xsYkZaQ2oxT0FDTHhUeFZjazJUT3JCVEVkVWJ3ejF5VT0iLAorICAgICJhbm9ueW1v
dXMiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAorICAgICI8Y3Jvc3Nvcmln
aW49J3VzZS1jcmVkZW50aWFscyc+IHdpdGggY29ycmVjdCBoYXNoLCBDT1JTLWVsaWdpYmxlIiwK
KyAgICBjcm9zc29yaWdpbl9jcmVkc19zY3JpcHQsCisgICAgInNoYTI1Ni1ObmdXaUhHMk42S1dq
SGhPY2dHdUYwaUpYS1IrTVBNeGwzSXA2d0RBRUdnPSIsCisgICAgInVzZS1jcmVkZW50aWFscyIK
Kyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIGZhbHNlLAorICAgICI8Y3Jvc3NvcmlnaW49
J3VzZS1jcmVkZW50aWFscyc+IHdpdGggaW5jb3JyZWN0IGhhc2ggQ09SUy1lbGlnaWJsZSIsCisg
ICAgY3Jvc3NvcmlnaW5fY3JlZHNfc2NyaXB0LAorICAgICJzaGEyNTYtZGVhZGJlZWYyUytwVFJa
Z2l3M0RXcmhDNkpMRGx0MnpSeUdwd0g3dW5VOD0iLAorICAgICJ1c2UtY3JlZGVudGlhbHMiCisp
OworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAiPGNyb3Nzb3JpZ2luPSdh
bm9ueW1vdXMnPiB3aXRoIENPUlMtaW5lbGlnaWJsZSByZXNvdXJjZSIsCisgICAgY3Jvc3Nvcmln
aW5faW5lbGlnaWJsZV9zY3JpcHQsCisgICAgInNoYTI1Ni1JaEIrUGtUbklmODgxekJEV05FT0o2
cEt0anU5S2l3K0wxZks1Wm4vcGwwPSIsCisgICAgImFub255bW91cyIKKyk7CisKK25ldyBTUklN
b2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIkNyb3NzLW9yaWdpbiwgZW1wdHkgaW50ZWdyaXR5
IiwKKyAgICBjcm9zc29yaWdpbl9hbm9uX3NjcmlwdCwKKyAgICAiIgorKTsKKworbmV3IFNSSU1v
ZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAgICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0IGhhc2gs
IG9wdGlvbnMuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAor
ICAgICJzaGEyNTYtY1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6S0V4K3pTVT0/
Zm9vPWJhcj9zcGFtPWVnZ3MiCispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICB0cnVlLAor
ICAgICJTYW1lLW9yaWdpbiB3aXRoIHVua25vd24gYWxnb3JpdGhtIG9ubHkuIiwKKyAgICAicmVz
b3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJmb282NjYtVTlXWUR0Qldr
Y0h4MTMrOVVLay8zUTVlb3FEYzRZR3hZYjA3RVBXemI5RT0iCispOworCisvLyBXZWJLaXQgYWRk
aXRpb25zIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgdGVzdCBjYXNlcy4KKy8vIEZJWE1FOiBV
cHN0cmVhbSB0aGVzZSBhZGRpdGlvbmFsIHRlc3RzIHRvIHRoZSBvZmZpY2lhbCB3ZWItcGxhdGZv
cm0tdGVzdHMgcmVwb3NpdG9yeS4KKworbmV3IFNSSU1vZHVsZVRlc3QoCisgICAgdHJ1ZSwKKyAg
ICAiU2FtZS1vcmlnaW4gd2l0aCBjb3JyZWN0IHNoYTI1NiBoYXNoLCB1c2luZyBiYXNlNjRVUkwg
ZW5jb2RpbmcuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAor
ICAgICJzaGEyNTYtY1doOW5QZm03X21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6S0V4LXpTVT0i
CispOworCituZXcgU1JJTW9kdWxlVGVzdCgKKyAgICBmYWxzZSwKKyAgICAiU2FtZS1vcmlnaW4g
d2l0aCBjb3JyZWN0IHNoYTI1NiBoYXNoLCB1c2luZyBpbnRlcm1peGVkIGJhc2U2NCBhbmQgYmFz
ZTY0VVJMIGVuY29kaW5nLCBzaG91bGQgZmFpbC4iLAorICAgICJyZXNvdXJjZXMvbWF0Y2hpbmct
ZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgInNoYTI1Ni1jV2g5blBmbTdfbVJiS2h6YXJuUllsc0pX
ejVYVE5jc3FQRnpLRXgrelNVPSIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUs
CisgICAgIlNhbWUtb3JpZ2luIHdpdGggaW52YWxpZCBzeW50YXggb25seS4iLAorICAgICJyZXNv
dXJjZXMvbWF0Y2hpbmctZGlnZXN0LW1vZHVsZS5qcyIsCisgICAgIj9mb289YmFyP3NwYW09ZWdn
cyIKKyk7CisKK25ldyBTUklNb2R1bGVUZXN0KAorICAgIHRydWUsCisgICAgIlNhbWUtb3JpZ2lu
IHdpdGggbXVsdGlwbGUgdmFsaWQgc2hhMjU2IGhhc2hlcywgaW5jbHVkaW5nIGNvcnJlY3QuIiwK
KyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMiLAorICAgICJzaGEyNTYt
Y1doOW5QZm03L21SYktoemFyblJZbHNKV3o1WFROY3NxUEZ6S0V4K3pTVT0gc2hhMjU2LWNXaDlu
UGZtNy9tUmJLaHphcm5SWWxzSld6NVhUTmNzcVBGektFeCt6U1U9IgorKTsKKworbmV3IFNSSU1v
ZHVsZVRlc3QoCisgICAgZmFsc2UsCisgICAgIlNhbWUtb3JpZ2luIHdpdGggaW5jb3JyZWN0IGhh
c2gsIG9wdGlvbnMuIiwKKyAgICAicmVzb3VyY2VzL21hdGNoaW5nLWRpZ2VzdC1tb2R1bGUuanMi
LAorICAgICJzaGEyNTYtVTlXWUR0QldrY0h4MTMrOVVLay8zUTVlb3FEYzRZR3hZYjA3RVBXemI5
ZT0/Zm9vPWJhcj9zcGFtPWVnZ3MiCispOworCitTUklUZXN0cy5leGVjdXRlKCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL21v
ZHVsZXMvbW9kdWxlLWlubGluZS1pZ25vcmUtaW50ZWdyaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS9tb2R1bGVzL21vZHVsZS1pbmxpbmUtaWdub3JlLWludGVncml0eS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQxNjE4M2Y5MzE0ZGI4M2U0YzllNDNlMDI3ZWFhZDZhMjE4
Y2FjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL21vZHVs
ZS1pbmxpbmUtaWdub3JlLWludGVncml0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgSW5saW5lIG1vZHVsZSBzY3JpcHQgaWdub3JlcyBpbnRlZ3JpdHkgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL21vZHVsZS1pbmxpbmUtaWdub3JlLWludGVn
cml0eS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9kdWxlLWlubGluZS1pZ25v
cmUtaW50ZWdyaXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMxZDY5YWEzNzhkNGEzZTRjYzk1MGQ4YTgx
MzM3YjNhZmE0NTg1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1
bGVzL21vZHVsZS1pbmxpbmUtaWdub3JlLWludGVncml0eS5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5JbmxpbmUgbW9kdWxlIHNj
cmlwdCBpZ25vcmVzIGludGVncml0eTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
ZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CisgICAgICAgIHNjcmlwdC50eXBlID0gJ21vZHVs
ZSc7CisgICAgICAgIHNjcmlwdC50ZXh0Q29udGVudCA9IGB3aW5kb3cuaW5saW5lTW9kdWxlSXNF
eGVjdXRlZCA9IHRydWVgOworICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gJ3NoYTI1Ni1kZWFk
YmVlZic7CisgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5pbmxpbmVNb2R1bGVJc0V4ZWN1dGVkLCB0cnVlKTsKKyAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICAgICAgc2NyaXB0Lm9uZXJyb3Ig
PSByZWplY3Q7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKKyAg
ICB9KTsKK30sICdJbmxpbmUgbW9kdWxlIHNjcmlwdCBpZ25vcmVzIGludGVncml0eScpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
bW9kdWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTY1ODU0N2I3MjhkMTI2ZDRhOTlkZjRmOWMxMzlmODNj
NzA1OTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9k
dWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBOb24gdG9wIGxldmVsIG1vZHVsZSBzY3JpcHQgc2hvdWxkIHdvcmsgZXZlbiB3aXRo
IGludGVncml0eSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9k
dWxlLWludGVncml0eS1ub24tdG9wLWxldmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9k
dWxlcy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2Fi
ZjkyYmI3MjdhZDJiNzRhMmFkZDFjZDYxNGE1ODQ0NzA5MmQzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvbW9kdWxlLWludGVncml0eS1ub24tdG9wLWxldmVs
Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPk5vbiB0b3AgbGV2ZWwgbW9kdWxlIHNjcmlwdCBzaG91bGQgd29yayBldmVuIHdpdGgg
aW50ZWdyaXR5PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citw
cm9taXNlX3Rlc3QoKCkgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzY3JpcHQnKTsKKyAgICAgICAgc2NyaXB0LnR5cGUgPSAnbW9kdWxlJzsKKyAgICAgICAg
c2NyaXB0LnNyYyA9ICcuL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2
ZWwuanMnOworICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gJ3NoYTI1Ni1YTGF2NGQ2bVBOSlAz
OXVUV1R6YXRRN2MzRHFHWFQxR3lJYiszdG5yN2tBPSc7CisgICAgICAgIHNjcmlwdC5vbmxvYWQg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5ub25Ub3BM
ZXZlbE1vZHVsZUlzRXhlY3V0ZWQsIHRydWUpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICB9OworICAgICAgICBzY3JpcHQub25lcnJvciA9IHJlamVjdDsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOworICAgIH0pOworfSwgJ05vbiB0b3AgbGV2ZWwg
bW9kdWxlIHNjcmlwdCBzaG91bGQgd29yayBldmVuIHdpdGggaW50ZWdyaXR5Jyk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1
bGVzL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwtMi5qcyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5v
bi10b3AtbGV2ZWwtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGVkZTZkOTVkZmVmZjNkNjZhZTJkYThiOWNh
ZmIxNzVkM2I0YWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVs
ZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1pbnRlZ3JpdHktbm9uLXRvcC1sZXZlbC0yLmpzCkBAIC0w
LDAgKzEgQEAKK3dpbmRvdy5ub25Ub3BMZXZlbE1vZHVsZUlzRXhlY3V0ZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvc2NyaXB0LXRlc3RzL21vZHVsZS1p
bnRlZ3JpdHktbm9uLXRvcC1sZXZlbC5qcyBiL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL3Nj
cmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdyaXR5LW5vbi10b3AtbGV2ZWwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmNlMDY2ZDFkNmViNTc4YzI1N2M2MGQ2YzFhYjNmMjRmNjI4ZTYyYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL3NjcmlwdC10ZXN0cy9tb2R1bGUtaW50ZWdy
aXR5LW5vbi10b3AtbGV2ZWwuanMKQEAgLTAsMCArMSBAQAoraW1wb3J0ICIuL21vZHVsZS1pbnRl
Z3JpdHktbm9uLXRvcC1sZXZlbC0yLmpzIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>