<?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>239527</bug_id>
          
          <creation_ts>2022-04-19 19:20:27 -0700</creation_ts>
          <short_desc>[GPU Process] Make WebImage be backed by ImageBuffer</short_desc>
          <delta_ts>2022-05-04 22:38:35 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240100</see_also>
          <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>
          
          <blocked>239615</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862794</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-19 19:20:27 -0700</bug_when>
    <thetext>WebImage is used to take page snapshots. Currently a snapshot can be drawn in WebProcess and used by UIProcess. With enabling GPUProcess for rendering, the snapshot will be recorded in WebProcess, drawn in GPUProcess and used in UIProcess. This will require replacing the ShareableBitmap in WebImage by ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862795</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-19 19:20:56 -0700</bug_when>
    <thetext>rdar://91113628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862797</commentid>
    <comment_count>2</comment_count>
      <attachid>457949</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-19 19:25:52 -0700</bug_when>
    <thetext>Created attachment 457949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862837</commentid>
    <comment_count>3</comment_count>
      <attachid>457963</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-19 23:44:38 -0700</bug_when>
    <thetext>Created attachment 457963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863027</commentid>
    <comment_count>4</comment_count>
      <attachid>458006</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-20 13:05:47 -0700</bug_when>
    <thetext>Created attachment 458006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863053</commentid>
    <comment_count>5</comment_count>
      <attachid>458014</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-20 14:11:05 -0700</bug_when>
    <thetext>Created attachment 458014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863548</commentid>
    <comment_count>6</comment_count>
      <attachid>458114</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-21 22:41:32 -0700</bug_when>
    <thetext>Created attachment 458114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864009</commentid>
    <comment_count>7</comment_count>
      <attachid>458240</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-24 22:03:24 -0700</bug_when>
    <thetext>Created attachment 458240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864013</commentid>
    <comment_count>8</comment_count>
      <attachid>458243</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-24 22:47:58 -0700</bug_when>
    <thetext>Created attachment 458243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864014</commentid>
    <comment_count>9</comment_count>
      <attachid>458244</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-24 22:57:21 -0700</bug_when>
    <thetext>Created attachment 458244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864358</commentid>
    <comment_count>10</comment_count>
      <attachid>458331</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-25 22:24:55 -0700</bug_when>
    <thetext>Created attachment 458331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864361</commentid>
    <comment_count>11</comment_count>
      <attachid>458333</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-25 22:55:42 -0700</bug_when>
    <thetext>Created attachment 458333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864380</commentid>
    <comment_count>12</comment_count>
      <attachid>458338</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-26 01:22:47 -0700</bug_when>
    <thetext>Created attachment 458338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864971</commentid>
    <comment_count>13</comment_count>
      <attachid>458477</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-27 16:06:16 -0700</bug_when>
    <thetext>Created attachment 458477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864974</commentid>
    <comment_count>14</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-27 16:09:15 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #13)
&gt; Created attachment 458477 [details]
&gt; Patch

This patch fixes the failures in the api-mac tests. The change in WebChromeClient::createImageBuffer() fixes the timeout in two api tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865010</commentid>
    <comment_count>15</comment_count>
      <attachid>458477</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-04-27 17:38:56 -0700</bug_when>
    <thetext>Comment on attachment 458477
Patch

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

&gt; Source/WebCore/page/FrameSnapshotting.cpp:84
&gt; +    auto&amp; document = *frame.document();

Should this be a strong reference?

&gt; Source/WebCore/platform/graphics/ConcreteImageBuffer.h:296
&gt; +        ref(); // Balanced by deref below.

Could this be a RefPtr that gets captured by the block, instead of this raw ref/deref?

&gt; Source/WebKit/Shared/UserData.cpp:402
&gt; +        result = WebImage::create(*paramters, WTFMove(handle));

Spelling: &quot;paramters&quot;

&gt; Source/WebKit/Shared/WebImage.cpp:38
&gt; +    // Create shareable RemoteImageBuffer if GPU Process is enabled.

I kind of see the need for these comments, but they feel indicative of how weird some of this code has gotten :)

I don&apos;t think they&apos;re quite worded correctly, though, because e.g. this code has NO IDEA why ChromeClient might or might not give you a imagebuffer (doesn&apos;t know that it&apos;s about GPUP), and would get stale if that reason changed. So maybe we leave them out? Or word them differently (&quot;allow the chrome client to override the image if it wants to&quot; etc. etc. but then it&apos;s fairly obvious from reading the code).

&gt; Source/WebKit/Shared/WebImage.h:48
&gt; +    static RefPtr&lt;WebImage&gt; create(const WebCore::IntSize&amp;, ImageOptions, const WebCore::DestinationColorSpace&amp; = WebCore::DestinationColorSpace::SRGB(), WebCore::ChromeClient* = nullptr);

Wasn&apos;t Sam pushing us in the direction of &quot;never default to SRGB, always make clients say it, so you can fix them one-by-one&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865014</commentid>
    <comment_count>16</comment_count>
      <attachid>458484</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-27 18:13:09 -0700</bug_when>
    <thetext>Created attachment 458484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865016</commentid>
    <comment_count>17</comment_count>
      <attachid>458477</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-27 18:20:28 -0700</bug_when>
    <thetext>Comment on attachment 458477
Patch

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

&gt;&gt; Source/WebCore/page/FrameSnapshotting.cpp:84
&gt;&gt; +    auto&amp; document = *frame.document();
&gt; 
&gt; Should this be a strong reference?

Fixed. This was changed to
    Ref document = *frame.document();

&gt;&gt; Source/WebCore/platform/graphics/ConcreteImageBuffer.h:296
&gt;&gt; +        ref(); // Balanced by deref below.
&gt; 
&gt; Could this be a RefPtr that gets captured by the block, instead of this raw ref/deref?

Unfortunately we can&apos;t do that. A lambda can be used as a pointer to function as long as it doesn&apos;t capture variables.

&gt;&gt; Source/WebKit/Shared/UserData.cpp:402
&gt;&gt; +        result = WebImage::create(*paramters, WTFMove(handle));
&gt; 
&gt; Spelling: &quot;paramters&quot;

Fixed.

&gt;&gt; Source/WebKit/Shared/WebImage.cpp:38
&gt;&gt; +    // Create shareable RemoteImageBuffer if GPU Process is enabled.
&gt; 
&gt; I kind of see the need for these comments, but they feel indicative of how weird some of this code has gotten :)
&gt; 
&gt; I don&apos;t think they&apos;re quite worded correctly, though, because e.g. this code has NO IDEA why ChromeClient might or might not give you a imagebuffer (doesn&apos;t know that it&apos;s about GPUP), and would get stale if that reason changed. So maybe we leave them out? Or word them differently (&quot;allow the chrome client to override the image if it wants to&quot; etc. etc. but then it&apos;s fairly obvious from reading the code).

I agree. Comments were removed.

&gt;&gt; Source/WebKit/Shared/WebImage.h:48
&gt;&gt; +    static RefPtr&lt;WebImage&gt; create(const WebCore::IntSize&amp;, ImageOptions, const WebCore::DestinationColorSpace&amp; = WebCore::DestinationColorSpace::SRGB(), WebCore::ChromeClient* = nullptr);
&gt; 
&gt; Wasn&apos;t Sam pushing us in the direction of &quot;never default to SRGB, always make clients say it, so you can fix them one-by-one&quot;?

Fixed. Default color space was removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865085</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-28 01:22:28 -0700</bug_when>
    <thetext>Committed r293570 (250084@main): &lt;https://commits.webkit.org/250084@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458484.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457949</attachid>
            <date>2022-04-19 19:25:52 -0700</date>
            <delta_ts>2022-04-19 23:44:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220419192551.patch</filename>
            <type>text/plain</type>
            <size>66135</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OTEyMzU3NzI4Y2U3
ZjRlNzljMTI4MGNjNDQ1Y2ZjNTUxODIzYi4uZTdiMmRkZGEwMmYwYjk5MTk1Mjg4YzczZjNlMTdl
NTdlMmFmZGRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6
CisKIDIwMjItMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBsZXNzIGFuZCBtb3JlIFNvcnRlZEFycmF5
TWFwIC8gU29ydGVkQXJyYXlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWMzZGM2OWRhNjQ5YzlhZjAyZWQ4ZGU0
MzgxYWIyYmFkYmU4ZDI2Yy4uYjUwODhiNjA2ZTU2ZDNmMWVhZTI4MjgzYjkwZTQ2NjAzZTJlYmM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NCBAQAorMjAyMi0wNC0xOSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1h
Z2UgYmUgYmFja2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKToKKyAg
ICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhh
bmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1VzZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OldlYkltYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbWFnZTo6cGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpj
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFn
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXAgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW1hZ2U6On5XZWJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dl
YkltYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXApOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Yml0bWFwIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAg
ICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0Ol0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNj
cmVlbnNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6Yml0bWFwIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0
ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAg
ICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRoT3B0
aW9uczp3aWR0aDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3Jl
YXRlU2VsZWN0aW9uU25hcHNob3QgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKFdlYktp
dDo6c25hcHNob3RDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNo
b3RBdFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdE5vZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2hhcmVhYmxlQml0bWFwU25hcHNob3RGb3JOb2RlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRCb3R0b21PdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IpOgorCiAyMDIyLTA0LTE4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXVtXUF0gQWRkIHRlbGVtZXRyeSB3aXRoIGJhY2t0cmFjZSBmb3Ig
bmV0d29yayByZWxhdGVkIHN5c3RlbSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAppbmRleCAwYjRiNTU2ZDk3MTRlMGJjMmE1NmUwOWMwYjgyOTc3NmZmNTA5
ZTY3Li5kMmU2YWE5NTFhMWM5MGIwZDhlMzNlYzk2YzcyMTk3MTdmYTcyYzRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAo
QykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCkBAIC04MSw3ICs4MSw4IEBAIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNv
bnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYgKCFmcmFtZS5wYWdlKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAg
YXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBkb2N1bWVudC51cGRhdGVM
YXlvdXQoKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRJbmNs
dWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2VsZWN0aW9uOwogICAgIGlmIChvcHRp
b25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGln
aHRpbmcpKQpAQCAtMTE0LDkgKzExNSwxMSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAg
IGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBhaW50V2l0aEludGVn
cmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9y
KTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6
ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMu
Y29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7CisgICAgYXV0byBob3N0V2luZG93ID0g
KGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC52
aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6
U25hcHNob3QsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxG
b3JtYXQsIHsgfSwgeyBob3N0V2luZG93IH0pOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VS
ZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwogCiAgICAgaWYgKCFjbGlwUmVjdHMuaXNFbXB0eSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmgKaW5kZXggMWNhY2M4ZjY5NDU2ZGVjMjdjNDIzZjBhZGRhODM5ZjA1ZGUx
ZWNmOS4uYTUyZjg4Y2ZjMTYwMmZhNDNmYmFjOTQ4MGZjMGIyNzUzODcwMTZjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJh
Y2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY3JlYXRpb25Db250ZXh0KTsKICAgICAgICAg
aWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2Vu
ZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCks
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTUzLDYgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
YXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsK
ICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZmZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJh
Y2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVm
ZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
clR5cGU+IGNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCisgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
QnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDMyNThmNzBj
YTNlODBhNWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLmJkMTBlYjZiZTAzNjRmZWUxZDNmNDI0
ZjNkZmNhODEzZmUxOWE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCw2ICs5MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7CiAgICAgICAgIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgICAgICBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2U7
CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKTsKQEAgLTE4Myw2ICsx
ODYsNDUgQEAgcHJvdGVjdGVkOgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFt
ZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
bG9naWNhbFNpemU7CisgICAgZW5jb2RlciA8PCByZXNvbHV0aW9uU2NhbGU7CisgICAgZW5jb2Rl
ciA8PCBjb2xvclNwYWNlOworICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2Rl
ciA8PCBwdXJwb3NlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlv
bmFsPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0U2l6ZT4gbG9naWNhbFNpemU7CisgICAgZGVjb2RlciA+PiBsb2dpY2FsU2l6ZTsKKyAg
ICBpZiAoIWxvZ2ljYWxTaXplKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gcmVzb2x1dGlvblNjYWxlOworICAgIGRlY29kZXIgPj4gcmVz
b2x1dGlvblNjYWxlOworICAgIGlmICghcmVzb2x1dGlvblNjYWxlKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7Cisg
ICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUHVycG9zZT4gcHVycG9zZTsKKyAgICBkZWNvZGVyID4+
IHB1cnBvc2U7CisgICAgaWYgKCFwdXJwb3NlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyAqbG9naWNhbFNpemUsICpyZXNvbHV0aW9uU2NhbGUsICpjb2xv
clNwYWNlLCAqcGl4ZWxGb3JtYXQsICpwdXJwb3NlIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAppbmRleCBhMjE2YjBlZDE1ZjczZTYzODE2Y2NjZjBl
NjZlNmFkMGE5MDkxZDIwLi4xYzA4Zjk2MjkxNTkxZjc1N2QzNTM5NzY4OTgzNmFjMGJiMmU4MTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdN
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9k
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDYgKzMyLDcgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7
CiAgICAgQ2FudmFzLAogICAgIERPTSwKICAgICBMYXllckJhY2tpbmcsCisgICAgU25hcHNob3Qs
CiAgICAgTWVkaWFQYWludGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nn
L1dLSW1hZ2VDRy5jcHAKaW5kZXggZjJkMzMzNDc4YzJhZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQw
YzVhZS4uY2JlOTEyNGY0MzU5YjJlNDhmOGU0YmRhYmQ4N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDEyIEBAIENH
SW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKICAgICBp
ZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJJ
bWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkubGVha1JlZigpOworICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2Ug
PSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdl
LmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJ
bWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTUzLDE0ICs1OCwx
MiBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdl
UmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VT
aXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpX
ZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25z
KSk7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNv
bnRleHQoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9p
bnQoMCwgMCksIGltYWdlU2l6ZSk7Ci0gICAgCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJl
Y3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUlt
YWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworCisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFy
UmVjdChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJ
bWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
bGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRhNzBiZmZjOWMuLmIz
MjM3OGQ3MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKGNv
bnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3Jl
YXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAg
YXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRhKG1f
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0MzY5ODI1Yjc3MmU4
MTBkMjAwNTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZjMmEwMDM3YTIyYmYx
NjBjZTg2MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6
ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNr
ZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNy
ZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTk9URTogVGhl
c2UgYWxsIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNw
cAppbmRleCBlMTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5MTRhY2QwMGQzMjYxYTc1Li43ZmZhOWRh
ZjI3NDE1YTcyNmNlNDRhOWQzNDZlNWQ1NjcyMDM0ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRh
dGEuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIxMSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogICAgIGNhc2UgQVBJOjpPYmpl
Y3Q6OlR5cGU6OkltYWdlOiB7CiAgICAgICAgIGF1dG8mIGltYWdlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViSW1hZ2UmPihvYmplY3QpOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKLSAgICAgICAgQVNTRVJUKGltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRN
ZW1vcnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1l
bW9yeSgpIHx8ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgeworICAgICAg
ICBhdXRvIGhhbmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRsZSgpOworICAgICAgICBpZiAoaGFuZGxl
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBh
bGxvY2F0ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVy
IDw8IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjEsNiArMjIwLDcgQEAgdm9pZCBV
c2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3Qm
IG9iamVjdCkKIAogICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5kaWNhdGVzIGEgYml0bWFwIHdh
cyBhbGxvY2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwor
ICAgICAgICBlbmNvZGVyIDw8IGltYWdlLnBhcmFtZXRlcnMoKTsKICAgICAgICAgZW5jb2RlciA8
PCBoYW5kbGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5MCwxNSArMzkwLDE2IEBAIGJv
b2wgVXNlckRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mIHJlc3VsdCkKICAgICAgICAgaWYgKCFkaWRFbmNvZGUpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IHBhcmFtdGVyczsKKyAgICAgICAgZGVj
b2RlciA+PiBwYXJhbXRlcnM7CisgICAgICAgIGlmICghcGFyYW10ZXJzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoaGFuZGxlKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisgICAgICAgIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdl
OjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXN1bHQgPSBXZWJJ
bWFnZTo6Y3JlYXRlKCpwYXJhbXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVkMjJlNTc0Li5iNzhiMzEz
ZTcwMzYzZTMxZGFkNzFlMzlhMTk5MjU1NjM1NjllOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4NzIsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U+IHsKICAgICAg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAgICAgICBXZWJDb3JlOjpS
ZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6
OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U25hcHNo
b3QsCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAg
ICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdh
ZTdlMzViMzVkYjBjMWU0MTg1MjJjMDU4Li5kOTExOGE5YTQyOTgwNTBmZDU2MjgwYWE5OGMzNDcy
YzU3ZmUwMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwxMDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
aHJvbWVDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRy
PFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0
aW9ucyBvcHRpb25zKQotewotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlv
bnMsIHsgfSk7Ci19Ci0KLVJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQorUmVmUHRyPFdl
YkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIElt
YWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIENocm9tZUNsaWVudCogY2xpZW50KQogewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRp
b25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlmICgh
Yml0bWFwKQorICAgICAgICBpZiAoY2xpZW50KSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IGNsaWVudC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+Ojpj
cmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBSZW5kZXJpbmdQ
dXJwb3NlOjpTbmFwc2hvdCwgeyB9KTsKKyAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFw
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZm
ZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgaWYgKCFiaXRt
YXApCisgICAgCisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJl
bmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJu
IFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitSZWZQdHI8
V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmIGhhbmRsZSkKK3sK
KyAgICBhdXRvIGJhY2tlbmQgPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGlmICghYmFja2VuZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUlt
YWdlQnVmZmVyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShwYXJh
bWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworfQorCitSZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShX
VEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCit7Cit9CisKK0lu
dFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlci0+dHJ1
bmNhdGVkTG9naWNhbFNpemUoKTsKIH0KIAotUmVmPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRl
KFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwKQorY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShiaXRtYXApKSk7CisgICAgcmV0dXJuIG1f
YnVmZmVyLT5wYXJhbWV0ZXJzKCk7CiB9CiAKLVdlYkltYWdlOjpXZWJJbWFnZShSZWY8U2hhcmVh
YmxlQml0bWFwPiYmIGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKK0dy
YXBoaWNzQ29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAogeworICAgIHJldHVybiBt
X2J1ZmZlci0+Y29udGV4dCgpOwogfQogCi1XZWJJbWFnZTo6fldlYkltYWdlKCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gV2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvcikgY29uc3QKIHsKKyAgICByZXR1cm4gbV9idWZmZXItPmNvcHlOYXRpdmVJbWFn
ZShjb3B5QmVoYXZpb3IpOwogfQogCi1jb25zdCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNv
bnN0CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0bWFwKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKKyAgICBhdXRvKiBiYWNrZW5kID0gbV9idWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRT
aGFyaW5nKCk7CisgICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihz
aGFyaW5nKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOworfQor
CitTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIGF1dG8qIGJhY2tlbmQg
PSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tlbmQpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNr
ZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJhY2tlbmRIYW5k
bGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZyku
Y3JlYXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9uKTsKKworICAgIGlmIChhdXRvIGhhbmRsZSA9
IHN0ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPigmYmFja2VuZEhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaAppbmRleCAyMmYzODZm
OWQyOWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1Li4xZjhkOGEyOTE1NDNhYzhkMDE3MGFm
NjZlMzJjNjAwNTNhZGE4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDE1
IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAj
aW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdl
QnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJ
bWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsKLSAgICBzdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7Ci0gICAgc3RhdGljIFJlZjxXZWJJ
bWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOwotICAgIH5XZWJJbWFnZSgpOwot
ICAgIAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKKyAgICBzdGF0
aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdl
T3B0aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXZWJDb3JlOjpDaHJvbWVDbGllbnQqID0g
bnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViSW1hZ2U+IGNyZWF0ZShSZWY8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+JiYpOwogCi0gICAgU2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSB7IHJldHVybiBt
X2JpdG1hcC5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUo
KSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0OworCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5
TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNv
bnN0OworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRlSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsK
KyAgICBXZWJJbWFnZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgUmVmPFNo
YXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBt
X2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjU3YTc0NGY5NGMyOTZlMDA1NzMxYTc4OGJjY2Vl
MDVlZjAyODcwYS4uNjE1YjNkZTIwMGExNmFkMDZhMzhjZThiYmZkYjI2YjczY2I2NmFmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02ODk3LDE0ICs2ODk3
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291CiAgICAgbV9maW5kQ2xpZW50LT5kaWRDb3Vu
dFN0cmluZ01hdGNoZXModGhpcywgc3RyaW5nLCBtYXRjaENvdW50KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250
ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5kbGUpOwotICAgIGlmICgh
Yml0bWFwKSB7CisgICAgYXV0byBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUocGFyYW1ldGVycywg
V1RGTW92ZShjb250ZW50SW1hZ2VIYW5kbGUpKTsKKyAgICBpZiAoIWltYWdlKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZmlu
ZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgV2ViSW1hZ2U6
OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSkucHRyKCksIG1hdGNoSW5kZXgpOworICAg
IG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgaW1h
Z2UuZ2V0KCksIG1hdGNoSW5kZXgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dElu
ZGljYXRvcihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgdWludDY0X3Qg
bGlmZXRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA3ZmNk
OTI4ZGEwOTFkNDZmYTA2MzgzMTUwZjU5ZTM5M2EwYWZhODguLjgzNmFmZDNhMmNiY2FhZjI2NWQz
MTc2M2YxNDA3ZmM1OWU3YjE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRJbWFnZUZvckZp
bmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGlu
dDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRNYXRjaChpbnQzMl90IG1h
dGNoSW5kZXgpOwotICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRl
eCk7CisgICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250
ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRV
SSgpOwogICAgIHZvaWQgaGlkZUZpbmRJbmRpY2F0b3IoKTsKICAgICB2b2lkIGNvdW50U3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBlMjc2ZDNlMmY3NjQwOTg2YzM4ZmVjNDlkM2RjOTliMWJhZWRh
ZmEwLi40NTU2NGRiOTNkYjg5MzExZWViODNmOGI1NGYzMzA2NWY5MjJiOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNDIs
NyArMjQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5kU3RyaW5n
KFN0cmluZyBzdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBtYXRjaFJlY3QsIHVpbnQz
Ml90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKQog
ICAgIERpZEZhaWxUb0ZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZykKICAgICBEaWRGaW5kU3RyaW5n
TWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiBt
YXRjaGVzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbikKLSAgICBEaWRHZXRJbWFn
ZUZvckZpbmRNYXRjaChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFn
ZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKKyAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRj
aChzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1
aW50MzJfdCBtYXRjaEluZGV4KQogCiAgICAgIyBQb3B1cE1lbnUgbWVzc2FnZXMKICAgICBTaG93
UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwg
VmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDcyMDc1
ZmJjODYyYzM0ZDBjODZiNGFjNTM4ZTRjNDY2OTljYmVlNDIuLjRiOWUzNTk1M2I2YjM3N2UxZTkw
N2ExMDY3MGFlMGM2NmY0NGJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTEgKzI5NCwxNSBAQCAtICh2b2lkKWRpZEdl
dEltYWdlRm9yTWF0Y2hSZXN1bHQ6KFdlYktpdDo6V2ViSW1hZ2UgKilpbWFnZQogICAgIGlmIChf
aW1hZ2VSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdl
YkNvcmU6OkludFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS5zaXplKCk7CisgICAgYXV0byBz
aXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBzaXplLnNjYWxlKDEgLyBfcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0
aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIGltYWdlQ2FsbGJhY2sgPSBfaW1hZ2VSZXBseUNhbGxiYWNrcy50YWtlRmlyc3QoKTsK
LSAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpzaXplXSkuZ2V0KCkp
OworICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgp
KTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUZXh0RmluZGVyTWF0Y2ggY2FsbGJhY2tzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDdhYjY3YTM0MzdhMjhhMTliZDY2ZTQ1
NTdjM2I0NzQ1NmMxZTIxMTUuLjQ5ZGFjZDYzYjVlYjdlMDFmY2EzNzU4MDUzOGZlNGQyZWI2N2Iy
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC04NjEsNyArODYxLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNy
ZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNr
SUQsIGhhbmRsZSwgeyB9KSwgMCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaAppbmRleCBiZjhhNDcwMzg1ZmNhNzQwZDQ0Mzc1NmVhYTdmNGQ3ZmM3OWQyNjU2Li42
ZWM1NjhkMDZkYjI4ZWQ0MDYzMWUyNzUwMmE1MDBhZDI4N2QxNDAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNSArNDMs
MyBAQCB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBzdGQ6OnZhcmlhbnQ8CiA+Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKaW5kZXggNTgwMjI4
YWY4NWY3NTNlNThiZGY1ZWZjMWQwN2QxYTZhZjAzNjNmYi4uY2QyZTllM2UxNGI5ODEwNjRlNWI4
OTAzZWI0OWZkMWZkODkyZjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAKQEAgLTM0LDcgKzMyLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJp
bmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyB7CiBwdWJsaWM6
Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRs
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVh
dGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikg
eyB9CiAgICAgdmlydHVhbCBib29sIGhhc0JhY2tlbmRIYW5kbGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNTIsNSArNTEsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRv
VmFsdWVUeXBlTmFtZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JVRkZFUl9CQUNLRU5EX1NIQVJJTkcoV2ViS2l0OjpJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLCBpc0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNo
YXJpbmcoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBhMTE3MDcyNDkwZTVj
N2E3OTU0ZmJiZTc4ZjcwZjc5MzZlZGMyZWQxLi5mODI3NmZiNjVkY2E3MDVjMTBhNzdhNWU2YWI4
OTAwODY3Zjk1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTI2LDEwICsxMjYsMTAgQEAgSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFy
YW0KICAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxl
KCkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tl
bmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7CiAg
ICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIG1fYml0bWFwLT5jcmVhdGVI
YW5kbGUoaGFuZGxlKTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgcHJvdGVj
dGlvbik7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRs
ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aAppbmRleCAyMWRkMGQ4NzUwYWRlMzMyNjdkMDhlODgwNzFkNWQ1Y2QzMzA4NGJmLi5lMzFkYjc2
YjY4YWY3YjY2YTlkODA1YmJiNjUyOWY5YzczZGJhYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KQEAg
LTU1LDkgKzUzLDEwIEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4
dDsgfQotICAgIAogICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5h
bDsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNv
bnN0IGZpbmFsOworCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRI
YW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYml0bWFwOyB9CiAKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVD
b3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdl
YkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFsOwpAQCAtNzcsNSArNzYs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
UmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0N2ZiZThi
ZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3Njk3NTcy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWMK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+
KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmln
aHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4uMjBkOGM2
MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwog
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7Ci0g
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBm
aW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRX
cml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNr
ZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDQz
MjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJlMTY0ZTA1N2Y2YjgxNjAuLmFlZGU3YmVhODJhODBlMDA2
NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFu
ZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
aAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5iMTQ0MjZl
N2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRp
dHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5h
bDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0K
aW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIxZDcwZmYz
YTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNCArNjksMTgg
QEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9w
dGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgpCiAgICAgICAgIG9wdGlv
bmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6V2ViSW1h
Z2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90
T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVy
Zmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5k
ZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBr
V0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7Cisg
ICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVTRShBUFBL
SVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
Q0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6
ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgp
XSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0b3Jl
bGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMxYjY3ZjJl
ZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCArMTcxLDEy
IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1l
VmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5i
aXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0g
c25hcHNob3QtPmNvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+YXBw
bHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xl
YXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBncmFw
aGljc0NvbnRleHQuc2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4
dC50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1lVmlldzo6
U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5j
bHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVT
ZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0
JiBwYWludGkKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRC
ZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9y
KTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250
ZXh0LmdldCgpLCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6
OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlv
biwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBh
aW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA5NzUy
OWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNlZWYyZmYx
Y2I2NTgwYTMzZGE4OGI3MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQdHI8V2Vi
SW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RP
cHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5z
aXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBh
dXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tp
bmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0byBzbmFw
c2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RPcHRpb25z
VG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkpOworICAg
IGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBiYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGdy
YXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBoaWNzQ29u
dGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNj
YWxlRmFjdG9yKTsKIAogICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVSZWN0KCku
eCgpLCBmcmFtZVZpZXctPmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeSgt
ZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJh
bnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5z
bGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7
CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIGZyYW1l
Vmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBh
aW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50UmVj
dCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwog
CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCi0g
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcAppbmRleCBkZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVhYjdlLi5i
ZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogICAg
IEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2Up
OwogICAgIEludFNpemUgc2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8gd2ViSW1h
Z2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCkp
OwotCi0gICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0gICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShi
aXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBF
WElGIHJvdGF0aW9uLgorICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250
ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwgeyB7IH0s
IHNpemUgfSk7CiAKICAgICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CmluZGV4IDE4ZGE4MzdkMWQ2NzI1ZDZlODQ2ZTFkMmY2OWEzNjY0YzNhNTlhYzMuLjhlNjI5YmUx
MGNkMTI5ZjJlYjQzYzkzZGZlMTUxMWM2NTdjZDc2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVjdGlvbkRpc2FibGVyLmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKQEAgLTY3
LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvckNob29zZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyLmg+CkBAIC05MzgsOCArOTQwLDEyIEBAIFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6ZGlzcGxheVJlZnJlc2hNb25pdG9y
RmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpIHsKKyAgICAgICAgaWYgKHB1cnBvc2UgIT0g
UmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICByZXR1cm4gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgeyB9KTsKKyAgICB9CiAKICAgICBy
ZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDFkNjQzYjZiNDI4OGQwOGUw
MzhjNDYyNWQwNTQ5ZGU2OGFmMmFhNzcuLjdlNWRkZGVkZWJlYWI4MDY4MjQyOThkZGE5N2VmZmNj
NDBjN2M2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTMxOCwyMCArMzE5LDE4IEBAIHZvaWQgRmluZENv
bnRyb2xsZXI6OmdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihtX2ZpbmRNYXRjaGVz
W21hdGNoSW5kZXhdKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNlbGVjdGlvblNu
YXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QoKTsKKyAgICBhdXRvIHNlbGVjdGlvblNuYXBzaG90ID0gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKTsKIAogICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKIAogICAgIGlmICghc2Vs
ZWN0aW9uU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKLSAgICBzZWxlY3Rpb25TbmFwc2hvdC0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSk7Ci0KKyAgICBhdXRvIGhhbmRsZSA9IHNlbGVjdGlvblNuYXBzaG90LT5jcmVhdGVIYW5kbGUo
KTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goaGFuZGxlLCBtYXRjaEluZGV4KSk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEdldEltYWdlRm9yRmluZE1hdGNoKHNlbGVjdGlvblNuYXBzaG90LT5w
YXJhbWV0ZXJzKCksIGhhbmRsZSwgbWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIEZpbmRDb250cm9s
bGVyOjpzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3MWVkMTg4MmZiNDI0ZDIx
YzY3OWQxM2JiN2I1MWI0ZWM4NGExNjVlLi5lOWE5MTRjM2U1MDZjMTg4OGNjNWM3YjYyM2I0ODgx
MDU0YTAyMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50
TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CkBAIC04NTksMjcgKzg2MCwxMyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2Vi
QXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZAogfQogI2VuZGlm
CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFw
c2hvdCgpIGNvbnN0CitSZWZQdHI8V2ViSW1hZ2U+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25T
bmFwc2hvdCgpIGNvbnN0CiB7CiAgICAgYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90U2VsZWN0aW9u
KCpjb3JlRnJhbWUoKSwgeyB7IFdlYkNvcmU6OlNuYXBzaG90RmxhZ3M6OkZvcmNlQmxhY2tUZXh0
IH0sIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7
CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IHNoYXJlZFNuYXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNo
b3QtPmJhY2tlbmRTaXplKCksIHsgfSk7Ci0gICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHBy
b3ZpZGluZyBhIHdheSB0byB1c2Ugc3VicGl4ZWwgYW50aWFsaWFzaW5nIGZvciB0aGUgc25hcHNo
b3QKLSAgICAvLyBpZiB3ZSdyZSBjb21wb3NpdGluZyB0aGlzIGltYWdlIG9udG8gYSBzb2xpZCBj
b2xvciAoZS5nLiB0aGUgbW9kZXJuIGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KLSAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
LSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShkZXZpY2VTY2FsZUZhY3Rv
cik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92
ZShzbmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7Ci0KLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3Q7
CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3QucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA2YzNhOTQ4NmU0NDM0MmFmY2I1NGRhNzZh
MjJjYTNkMDNjMjE2ZWM1Li5kMzlmYjI1YjZiZmFjMzZhZjlhNjdmYmM2Y2VmZjQ5MWUwOThlNzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
Myw2ICs2Myw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOworY2xhc3MgV2ViSW1hZ2U7CiBjbGFz
cyBXZWJQYWdlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVz
RGF0YTsKQEAgLTE4NCw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gd2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAj
ZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hv
dCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlvbklE
IGZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQ3
MDU2OGJkYmZiNjU2ODBjNDgxODYyMjZmYmY1YTJiOTE2YjZiN2IuLjk1YjA3MWVhMDQwZTNlOWEw
Zjg4Y2IzMjE1ZWMyYTE3NjJjOTE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnRh
a2VTbmFwc2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50
MzJfdCBvcAogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChp
bWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+
Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KQEAgLTI3MDUsMTQgKzI3MDUsMTMgQEAgdm9p
ZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIGJpdG1hcFNpemUKICAgICB9CiB9CiAKLXN0YXRpYyBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQorc3RhdGljIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBzbmFwc2hvdENvbG9yU3BhY2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBh
Z2UmIHBhZ2UpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247CiAjaWYgVVNFKENHKQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNl
U2NyZWVuQ29sb3JTcGFjZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2Ny
ZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAg
ICAgIHJldHVybiBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
dmlldygpKTsKICNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAogUmVmUHRyPFdlYkltYWdlPiBXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKQEAgLTI3MjUsMTQgKzI3MjQsMTIg
QEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShi
aXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNo
b3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0
byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25z
VG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhp
cyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90
LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBwYWludFNuYXBzaG90QXRTaXpl
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsICpncmFw
aGljc0NvbnRleHQpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250
ZXh0KCk7CisgICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25z
LCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0NvbnRleHQpOwogCiAgICAgcmV0dXJu
IHNuYXBzaG90OwogfQpAQCAtMjc2MywyNyArMjc2MCwyNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdl
YlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aQogICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgp
ICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWlnaHQpOwogICAgIH0KIAotICAgIGF1dG8gc25hcHNo
b3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFn
ZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihv
cHRpb25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNu
YXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBz
aG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgp
KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCiAg
ICAgaWYgKCEob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3Rv
cikpIHsKICAgICAgICAgZG91YmxlIGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNj
YWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBzY2FsZUZh
Y3RvciAvPSBkZXZpY2VTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQt
PnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25h
cHNob3RSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShzY2FsZUZh
Y3Rvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0
aW9uKCkpOwogCiAgICAgQ29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJh
c2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJh
dygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3Jh
cGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwg
RnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29u
dGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3
OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAg
ICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9y
KTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CkBAIC01NjczLDM3ICs1
NjY5LDMzIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgICAgIEFTU0VSVChjb3JlRnJh
bWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkpOwogI2VuZGlmCiAKLSAgICAgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0g
ICAgICAgIGlmICghYml0bWFwKSB7CisgICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShp
bWFnZVNpemUsIEltYWdlT3B0aW9uc1NoYXJlYWJsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgIGlmIChn
cmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oaW1hZ2VTaXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShwcmludGluZ1NjYWxlKTsKKworICAgICAgICBh
dXRvJiBncmFwaGljc0NvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOworICAgICAgICBmbG9hdCBw
cmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJl
Y3Qud2lkdGgoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHByaW50aW5nU2NhbGUp
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1
bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1l
KSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOwotICAgICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKLSAgICAgICAg
ICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9wcmlu
dENvbnRleHQtPnNwb29sUmVjdCgqZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZE
b2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgeworICAgICAgICAgICAgQVNTRVJU
KCFtX3ByaW50Q29udGV4dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxv
YXRTaXplKDEsIC0xKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAs
IC1yZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0Nv
bnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJl
Y3QpOworICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBtX3By
aW50Q29udGV4dC0+c3Bvb2xSZWN0KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0K
LQotICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OwotCiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhh
bmRsZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA0ZTJl
OWJhODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1ZDAwMzU3YWFiLi42MTc1YTY5MzFkZjk3MTdlZTY2
ZmY0MTNiZGM5ZTdjODA2NDM2ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzAzNyw4ICszMDM3LDggQEAgc3RhdGlj
IHZvaWQgdGV4dEludGVyYWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBj
b25zdCBIVE1MSW5wdXRFbGUKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2U6OnNoYXJl
YWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEVu
c3VyZSB0aGF0IHRoZSBpbWFnZSBjb250YWlucyBhdCBtb3N0IDYwMEsgcGl4ZWxzLCBzbyB0aGF0
IGl0IGlzIG5vdCB0b28gYmlnLgotICAgIGlmIChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0g
c25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAy
NCkpCi0gICAgICAgIHJldHVybiAmc25hcHNob3QtPmJpdG1hcCgpOworICAgIGlmIChhdXRvIHNu
YXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwg
NjAwICogMTAyNCkpCisgICAgICAgIHJldHVybiBzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMWE3ODlmOTlkODlmNjdmODAyMTVmZDE2NjE1MDlj
ZTMzNGRiMTg2MS4uYmQ1NThiMjgyYjY1ZTEzZTQyNGZhZmQ3MjUyMTVmYzk1NTViMDg1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NzYsOSArNTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFn
ZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAo
IW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFn
ZS0+c2l6ZSgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2Ut
PnNpemUoKS5oZWlnaHQoKSkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMg
PSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwor
ICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRCb3R0
b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKQEAgLTU5MSw4ICs1OTUsMTIgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBp
ZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1h
a2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVu
dHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjp1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXllcnNGb3JEZXZpY2VTY2Fs
ZUNoYW5nZShmbG9hdCBzY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1YWFhZDQxMDkxNmEyZDUxNjhhNGIxMjRhNzMwLi4x
MGM4MjQ5Mjk3YjZjYWFjZDYzOGJiZTk3NTVhOGEyOTVjMWUwYWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQ3LDYgKzIxNDcsNyBAQCBib29sIFdlYlBy
b2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UpCiAgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmc7CiAg
ICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpET006CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3Nl
OjpMYXllckJhY2tpbmc6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDoKICAg
ICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZzsKICAgICBjYXNlIFJl
bmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAgICAgICAgIHJldHVybiBtX3VzZUdQVVBy
b2Nlc3NGb3JNZWRpYTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457963</attachid>
            <date>2022-04-19 23:44:38 -0700</date>
            <delta_ts>2022-04-20 13:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220419234438.patch</filename>
            <type>text/plain</type>
            <size>67632</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OTEyMzU3NzI4Y2U3
ZjRlNzljMTI4MGNjNDQ1Y2ZjNTUxODIzYi4uZTdiMmRkZGEwMmYwYjk5MTk1Mjg4YzczZjNlMTdl
NTdlMmFmZGRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6
CisKIDIwMjItMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBsZXNzIGFuZCBtb3JlIFNvcnRlZEFycmF5
TWFwIC8gU29ydGVkQXJyYXlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWMzZGM2OWRhNjQ5YzlhZjAyZWQ4ZGU0
MzgxYWIyYmFkYmU4ZDI2Yy4uMzlmN2FhNGNkNTVjNjMxYmQwZDcyNzVmYWM3YTlhM2U3ODAxMGQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAyMi0wNC0xOSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1h
Z2UgYmUgYmFja2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0
ZUNHSW1hZ2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQv
VXNlckRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlckRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpwYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1h
cCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6fldlYkltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1h
cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0
Y2hSZXN1bHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2Vi
S2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjppbWFnZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgor
ICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0Zvcik6CisKIDIwMjItMDQtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dQXSBBZGQgdGVsZW1ldHJ5IHdpdGgg
YmFja3RyYWNlIGZvciBuZXR3b3JrIHJlbGF0ZWQgc3lzdGVtIGNhbGxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCmluZGV4IDBiNGI1NTZkOTcxNGUwYmMyYTU2ZTA5
YzBiODI5Nzc2ZmY1MDllNjcuLmQyZTZhYTk1MWExYzkwYjBkOGUzM2VjOTZjNzIxOTcxN2ZhNzJj
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQog
ICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KQEAgLTgxLDcg
KzgxLDggQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZy
YW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOworICAgIGRv
Y3VtZW50LnVwZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CiAgICAgaWYgKG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6RXhjbHVkZVNl
bGVjdGlvbkhpZ2hsaWdodGluZykpCkBAIC0xMTQsOSArMTE1LDExIEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJl
Y3QmIGltYWdlCiAgICAgaWYgKG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6
UGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gY2Vp
bGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZUZh
Y3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRpb25zLnBpeGVsRm9ybWF0KTsKKyAgICBhdXRv
IGhvc3RXaW5kb3cgPSAoZG9jdW1lbnQudmlldygpICYmIGRvY3VtZW50LnZpZXcoKS0+cm9vdCgp
KSA/IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwg
b3B0aW9ucy5waXhlbEZvcm1hdCwgeyB9LCB7IGhvc3RXaW5kb3cgfSk7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CiAKICAgICBpZiAoIWNsaXBS
ZWN0cy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAxY2FjYzhmNjk0NTZkZWMyN2M0MjNm
MGFkZGE4MzlmMDVkZTFlY2Y5Li5hNTJmODhjZmMxNjAyZmE0M2ZiYWM5NDgwZmMwYjI3NTM4NzAx
NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjcmVhdGlvbkNvbnRl
eHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywg
V1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikp
OworICAgICAgICByZXR1cm4gY3JlYXRlPEltYWdlQnVmZmVyVHlwZT4ocGFyYW1ldGVycywgV1RG
TW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJ
bWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtNTMsNiArNTMsMTIgQEAgcHVi
bGljOgogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRl
cnMsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggMzI1OGY3MGNhM2U4MGE1ZmM2MTVmZDE0Mjc4ZmE0MDZjMzg2NWE2NC4uYmQxMGViNmJl
MDM2NGZlZTFkM2Y0MjRmM2RmY2E4MTNmZTE5YTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYg
KzkwLDkgQEAgcHVibGljOgogICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZTsKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CiAgICAgICAgIFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgp
OwpAQCAtMTgzLDYgKzE4Niw0NSBAQCBwcm90ZWN0ZWQ6CiAgICAgUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEltYWdlQnVmZmVy
QmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBsb2dpY2FsU2l6ZTsKKyAgICBlbmNvZGVyIDw8IHJlc29sdXRpb25TY2Fs
ZTsKKyAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7CisgICAgZW5jb2RlciA8PCBwaXhlbEZvcm1h
dDsKKyAgICBlbmNvZGVyIDw8IHB1cnBvc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBsb2dpY2FsU2l6ZTsKKyAgICBkZWNvZGVyID4+IGxv
Z2ljYWxTaXplOworICAgIGlmICghbG9naWNhbFNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiByZXNvbHV0aW9uU2NhbGU7CisgICAg
ZGVjb2RlciA+PiByZXNvbHV0aW9uU2NhbGU7CisgICAgaWYgKCFyZXNvbHV0aW9uU2NhbGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Cisg
ICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBw
aXhlbEZvcm1hdDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdQdXJwb3NlPiBwdXJwb3NlOwor
ICAgIGRlY29kZXIgPj4gcHVycG9zZTsKKyAgICBpZiAoIXB1cnBvc2UpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpsb2dpY2FsU2l6ZSwgKnJlc29sdXRp
b25TY2FsZSwgKmNvbG9yU3BhY2UsICpwaXhlbEZvcm1hdCwgKnB1cnBvc2UgfSB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCmluZGV4IGEyMTZiMGVkMTVm
NzNlNjM4MTZjY2NmMGU2NmU2YWQwYTkwOTFkMjAuLjFjMDhmOTYyOTE1OTFmNzU3ZDM1Mzk3Njg5
ODM2YWMwYmIyZTgxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBv
c2UgOiB1aW50OF90IHsKICAgICBDYW52YXMsCiAgICAgRE9NLAogICAgIExheWVyQmFja2luZywK
KyAgICBTbmFwc2hvdCwKICAgICBNZWRpYVBhaW50aW5nCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCBjOGNjNWFhOGZj
Yjk0ODIwYmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi4zOWZhMzkyMmNkZTg1ODRhNzljNTljYWY3
NzA5M2IwZGFlZjAzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
YWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nh
aXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogY2Fpcm9fc3VyZmFjZV90
KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAg
Ly8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1
c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFnZVJl
ZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCku
bGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNl
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAg
ICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKICAg
ICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2Vi
S2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0byYg
Z3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAotICAgIGNhaXJvX3QqIGNy
ID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190
KiBjciA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWly
b19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZjJkMzMzNDc4YzJh
ZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2JlOTEyNGY0MzU5YjJlNDhmOGU0YmRhYmQ4
N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJ
bWFnZVJlZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCku
bGVha1JlZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+Y29weU5hdGl2ZUlt
YWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwor
ICAgIHJldHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0lt
YWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMg
b3B0aW9ucykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9t
Q0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAg
IFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKICAgICBh
dXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0
Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9
IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhp
Y3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7Ci0gICAgCi0gICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworCisg
ICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKICAg
ICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3Yzhm
ODUzODM2OTgwOWRhNzBiZmZjOWMuLmIzMjM3OGQ3MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2Iy
NmVkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
OTcsNyArOTcsNyBAQCBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFj
a2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHND
b250ZXh0Q29weUVuY29kZWREYXRhKG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAg
ICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
aAppbmRleCAyZWE0MzY5ODI1Yjc3MmU4MTBkMjAwNTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUz
NGQxMTdkMTRjMTZjMmEwMDM3YTIyYmYxNjBjZTg2MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZp
bmFsOwogCiAgICAgLy8gTk9URTogVGhlc2UgYWxsIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAg
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAppbmRleCBlMTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5
MTRhY2QwMGQzMjYxYTc1Li43ZmZhOWRhZjI3NDE1YTcyNmNlNDRhOWQzNDZlNWQ1NjcyMDM0ZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJE
YXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2Jq
ZWN0KQogICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlOiB7CiAgICAgICAgIGF1dG8m
IGltYWdlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW1hZ2UmPihvYmplY3QpOwogCi0gICAgICAg
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgQVNTRVJUKGltYWdlLmJp
dG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0
bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIHx8ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVI
YW5kbGUoaGFuZGxlKSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRs
ZSgpOworICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBJbml0
aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFi
bGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0yMjEsNiArMjIwLDcgQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkKIAogICAgICAgICAvLyBJbml0aWFsIHRy
dWUgaW5kaWNhdGVzIGEgYml0bWFwIHdhcyBhbGxvY2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAg
ICAgICAgZW5jb2RlciA8PCB0cnVlOworICAgICAgICBlbmNvZGVyIDw8IGltYWdlLnBhcmFtZXRl
cnMoKTsKICAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTM5MCwxNSArMzkwLDE2IEBAIGJvb2wgVXNlckRhdGE6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJlc3VsdCkKICAgICAgICAgaWYgKCFkaWRF
bmNvZGUpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+
IHBhcmFtdGVyczsKKyAgICAgICAgZGVjb2RlciA+PiBwYXJhbXRlcnM7CisgICAgICAgIGlmICgh
cGFyYW10ZXJzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKLSAgICAgICAgaWYgKCFiaXRt
YXApCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICByZXN1bHQgPSBXZWJJbWFnZTo6Y3JlYXRlKCpwYXJhbXRlcnMsIFdURk1vdmUo
aGFuZGxlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcw
N2ZkNzczMWVkMjJlNTc0Li5iNzhiMzEzZTcwMzYzZTMxZGFkNzFlMzlhMTk5MjU1NjM1NjllOWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTg3Miw2ICs4NzIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2U+IHsKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2Fu
dmFzLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdl
YkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6
UmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNw
cAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdlMzViMzVkYjBjMWU0MTg1MjJjMDU4Li40ZjA1ZDdj
M2ViZWM2NjQ3MTg0Yzc2YmVhNjQ3MTQxODBhOWQ4ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1h
Z2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDQ1ICsyNiwxMDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJJbWFnZS5oIgogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQotewotICAgIHJldHVybiBXZWJJ
bWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Ci19Ci0KLVJlZlB0cjxXZWJJbWFnZT4g
V2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlv
bnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBiaXRtYXBD
b25maWd1cmF0aW9uKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIENocm9tZUNsaWVudCogY2xpZW50KQogewogICAg
IGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmln
dXJhdGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBpZiAoY2xpZW50KSB7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Qs
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICBpZiAoIWJ1
ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVy
biBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgeyB9KTsKKyAgICAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmln
dXJhdGlvbik7Ci0gICAgaWYgKCFiaXRtYXApCisgICAgCisgICAgYXV0byBidWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOworfQorCitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3Qg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRvIGJhY2tlbmQgPSBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkp
OworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAg
YXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZD46OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKTsKKyAgICBp
ZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkltYWdl
OjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitSZWY8V2ViSW1hZ2U+IFdl
YkltYWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworV2ViSW1hZ2U6
OldlYkltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCit7Cit9CisKK0ludFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2J1ZmZlci0+YmFja2VuZFNpemUoKTsKIH0KIAotUmVmPFdlYkltYWdlPiBX
ZWJJbWFnZTo6Y3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwKQorY29uc3QgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShiaXRtYXApKSk7
CisgICAgcmV0dXJuIG1fYnVmZmVyLT5wYXJhbWV0ZXJzKCk7CiB9CiAKLVdlYkltYWdlOjpXZWJJ
bWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKFdURk1v
dmUoYml0bWFwKSkKK0dyYXBoaWNzQ29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAog
eworICAgIHJldHVybiBtX2J1ZmZlci0+Y29udGV4dCgpOwogfQogCi1XZWJJbWFnZTo6fldlYklt
YWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gV2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKKyAgICByZXR1cm4gbV9idWZmZXIt
PmNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogfQogCi1jb25zdCBJbnRTaXplJiBXZWJJ
bWFnZTo6c2l6ZSgpIGNvbnN0CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0
bWFwKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKKyAgICBhdXRvKiBi
YWNrZW5kID0gbV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNr
ZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNr
ZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcp
LmJpdG1hcCgpOworfQorCitTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRl
SGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAg
IGF1dG8qIGJhY2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBp
ZiAoIWJhY2tlbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBzaGFyaW5nID0g
YmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBh
dXRvIGJhY2tlbmRIYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9uKTsKKworICAgIGlm
IChhdXRvIGhhbmRsZSA9IHN0ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPigmYmFj
a2VuZEhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUpOworCisgICAgcmV0
dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2Uu
aAppbmRleCAyMmYzODZmOWQyOWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1Li4xZjhkOGEy
OTE1NDNhYzhkMDE3MGFmNjZlMzJjNjAwNTNhZGE4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1h
Z2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDsKK2NsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdl
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpJbWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1h
Z2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsKLSAgICBz
dGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIElt
YWdlT3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7Ci0gICAg
c3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOwotICAg
IH5XZWJJbWFnZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXZWJDb3JlOjpD
aHJvbWVDbGllbnQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYsIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViSW1hZ2U+IGNyZWF0ZShS
ZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgU2hhcmVhYmxlQml0bWFwJiBiaXRt
YXAoKSB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cCYgYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBXZWJDb3Jl
OjpJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OworCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdl
YkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCgpIGNvbnN0OworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRl
SGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZFdyaXRlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVh
YmxlQml0bWFwPiYmKTsKKyAgICBXZWJJbWFnZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYp
OwogCi0gICAgUmVmPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjU3YTc0NGY5NGMyOTZl
MDA1NzMxYTc4OGJjY2VlMDVlZjAyODcwYS4uNjE1YjNkZTIwMGExNmFkMDZhMzhjZThiYmZkYjI2
YjczY2I2NmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC02ODk3LDE0ICs2ODk3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291CiAgICAgbV9maW5k
Q2xpZW50LT5kaWRDb3VudFN0cmluZ01hdGNoZXModGhpcywgc3RyaW5nLCBtYXRjaENvdW50KTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNo
SW5kZXgpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3Qg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0g
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5k
bGUpOwotICAgIGlmICghYml0bWFwKSB7CisgICAgYXV0byBpbWFnZSA9IFdlYkltYWdlOjpjcmVh
dGUocGFyYW1ldGVycywgV1RGTW92ZShjb250ZW50SW1hZ2VIYW5kbGUpKTsKKyAgICBpZiAoIWlt
YWdlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQo
dGhpcywgV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSkucHRyKCksIG1h
dGNoSW5kZXgpOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hS
ZXN1bHQodGhpcywgaW1hZ2UuZ2V0KCksIG1hdGNoSW5kZXgpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9y
RGF0YSwgdWludDY0X3QgbGlmZXRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDA3ZmNkOTI4ZGEwOTFkNDZmYTA2MzgzMTUwZjU5ZTM5M2EwYWZhODguLjgzNmFm
ZDNhMmNiY2FhZjI2NWQzMTc2M2YxNDA3ZmM1OWU3YjE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2Vs
ZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRN
YXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwotICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWlu
dDMyX3QgbWF0Y2hJbmRleCk7CisgICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25z
dCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAg
IHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgaGlkZUZpbmRJbmRpY2F0b3IoKTsKICAgICB2
b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlv
bnM+LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMjc2ZDNlMmY3NjQwOTg2YzM4ZmVj
NDlkM2RjOTliMWJhZWRhZmEwLi40NTU2NGRiOTNkYjg5MzExZWViODNmOGI1NGYzMzA2NWY5MjJi
OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yNDIsNyArMjQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBEaWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBt
YXRjaFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBk
aWRXcmFwQXJvdW5kKQogICAgIERpZEZhaWxUb0ZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZykKICAg
ICBEaWRGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBWZWN0b3I8VmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+PiBtYXRjaGVzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbikK
LSAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKKyAgICBEaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVu
dEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogCiAgICAgIyBQb3B1cE1lbnUgbWVz
c2FnZXMKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0X3Qg
dGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJf
dCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50
Lm1tCmluZGV4IDcyMDc1ZmJjODYyYzM0ZDBjODZiNGFjNTM4ZTRjNDY2OTljYmVlNDIuLjRiOWUz
NTk1M2I2YjM3N2UxZTkwN2ExMDY3MGFlMGM2NmY0NGJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTEgKzI5NCwxNSBA
QCAtICh2b2lkKWRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6KFdlYktpdDo6V2ViSW1hZ2UgKilp
bWFnZQogICAgIGlmIChfaW1hZ2VSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS5zaXpl
KCk7CisgICAgYXV0byBzaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBzaXplLnNjYWxlKDEgLyBf
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9
IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlQ2FsbGJhY2sgPSBfaW1hZ2VSZXBseUNhbGxiYWNr
cy50YWtlRmlyc3QoKTsKLSAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6
ZTpzaXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNp
emU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUZXh0RmluZGVyTWF0Y2gg
Y2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDdhYjY3YTM0
MzdhMjhhMTliZDY2ZTQ1NTdjM2I0NzQ1NmMxZTIxMTUuLjQ5ZGFjZDYzYjVlYjdlMDFmY2EzNzU4
MDUzOGZlNGQyZWI2N2IyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBA
IC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2Ny
ZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHMKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFu
ZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3Jl
ZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAppbmRleCBiZjhhNDcwMzg1ZmNhNzQwZDQ0Mzc1NmVhYTdm
NGQ3ZmM3OWQyNjU2Li42ZWM1NjhkMDZkYjI4ZWQ0MDYzMWUyNzUwMmE1MDBhZDI4N2QxNDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDx2YXJpYW50
PgpAQCAtNDUsNSArNDMsMyBAQCB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBzdGQ6
OnZhcmlhbnQ8CiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
LmgKaW5kZXggNTgwMjI4YWY4NWY3NTNlNThiZGY1ZWZjMWQwN2QxYTZhZjAzNjNmYi4uY2QyZTll
M2UxNGI5ODEwNjRlNWI4OTAzZWI0OWZkMWZkODkyZjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAKQEAg
LTM0LDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hh
cmluZyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUmJikgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc0JhY2tlbmRIYW5kbGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTIsNSArNTEsMyBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JVRkZFUl9CQUNLRU5EX1NIQVJJ
TkcoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLCBpc0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRl
eCBhMTE3MDcyNDkwZTVjN2E3OTU0ZmJiZTc4ZjcwZjc5MzZlZGMyZWQxLi5mODI3NmZiNjVkY2E3
MDVjMTBhNzdhNWU2YWI4OTAwODY3Zjk1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2LDEwICsxMjYsMTAgQEAgSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQoY29uc3QgUGFyYW0KICAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
cmVzb2x1dGlvblNjYWxlKCkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QK
K0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rp
b24pIGNvbnN0CiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIG1f
Yml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgcHJvdGVjdGlvbik7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaAppbmRleCAyMWRkMGQ4NzUwYWRlMzMyNjdkMDhlODgwNzFkNWQ1Y2Qz
MzA4NGJmLi5lMzFkYjc2YjY4YWY3YjY2YTlkODA1YmJiNjUyOWY5YzczZGJhYzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDgg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaD4KQEAgLTU1LDkgKzUzLDEwIEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwog
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gKm1fY29udGV4dDsgfQotICAgIAogICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNp
emUoKSBjb25zdCBmaW5hbDsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFj
a2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYml0bWFwOyB9CiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3Jl
OjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFs
OwpAQCAtNzcsNSArNzYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVh
OTkzZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5
YjlhOThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3
NGFjOTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
QmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuY3BwCmluZGV4IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJlMTY0ZTA1N2Y2YjgxNjAuLmFl
ZGU3YmVhODJhODBlMDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgx
YzI0ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZp
bmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRT
aGFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1
MDllMC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
czooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgp
CiAgICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRy
PFdlYktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2Vi
S2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9u
b2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9u
cyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFs
V2lkdGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KwogI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpO
U1plcm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
IHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9w
dE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtl
Q0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNh
Y2Q3MzY2MTMxYjY3ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDli
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE3MSwxNCArMTcxLDEyIEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChG
cmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAo
IWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3Jh
cGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBo
aWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFw
aGljc0NvbnRleHQuY2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAg
IGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAog
ICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9
IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAg
c3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiBwYWludGkKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZy
YW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlv
cihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hv
dCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0
aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91
bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBm
cmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1
cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAppbmRleCA5NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZi
MjZjOTNkNTNlZWYyZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwx
NyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVk
SW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6
ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZh
Y3Rvcik7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUp
CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwg
c25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1No
YXJlYWJsZSkpOworICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1
dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmll
dy0+ZnJhbWVSZWN0KCkueCgpLCBmcmFtZVZpZXctPmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFp
bnRSZWN0Lm1vdmVCeSgtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBo
aWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVo
YXZpb3IoKTsKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9s
ZFBhaW50QmVoYXZpb3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9w
dGlvbgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAg
ICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFw
aGljc0NvbnRleHQsIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0Nv
bnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBh
aW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRT
ZWxlY3Rpb24pOwogCi0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJl
bGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFh
MGVmYWQzODVhYjdlLi5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3
MywxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1h
Z2UoKSBjb25zdAogICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1h
cEltYWdlPigqaW1hZ2UpOwogICAgIEludFNpemUgc2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwog
ICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PElt
YWdlT3B0aW9ucz4oMCkpOwotCi0gICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90
YXRpb24uCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgaWYg
KCF3ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBu
ZWVkIHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgorICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9
IHdlYkltYWdlLT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRt
YXBJbWFnZSwgeyB7IH0sIHNpemUgfSk7CiAKICAgICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDE4ZGE4MzdkMWQ2NzI1ZDZlODQ2ZTFkMmY2OWEzNjY0YzNh
NTlhYzMuLjhlNjI5YmUxMGNkMTI5ZjJlYjQzYzkzZGZlMTUxMWM2NTdjZDc2MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmluZENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVjdGlv
bkRpc2FibGVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlv
bkRhdGEuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC05MzgsOCArOTQwLDEyIEBAIFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6ZGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogUmVmUHRyPEltYWdl
QnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJw
b3NlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpIHsKKyAgICAgICAg
aWYgKHB1cnBvc2UgIT0gUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgeyB9KTsK
KyAgICB9CiAKICAgICByZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDFk
NjQzYjZiNDI4OGQwOGUwMzhjNDYyNWQwNTQ5ZGU2OGFmMmFhNzcuLjdlNWRkZGVkZWJlYWI4MDY4
MjQyOThkZGE5N2VmZmNjNDBjN2M2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTMxOCwyMCArMzE5LDE4
IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1h
dGNoSW5kZXgpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IHNlbGVjdGlvblNuYXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+
Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKTsKKyAgICBhdXRvIHNlbGVjdGlvblNuYXBzaG90ID0g
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9uU25hcHNob3Qo
KTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsK
IAogICAgIGlmICghc2VsZWN0aW9uU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBzZWxlY3Rpb25TbmFwc2hvdC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7Ci0KKyAgICBhdXRvIGhhbmRsZSA9IHNlbGVjdGlvblNuYXBzaG90
LT5jcmVhdGVIYW5kbGUoKTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0
SW1hZ2VGb3JGaW5kTWF0Y2goaGFuZGxlLCBtYXRjaEluZGV4KSk7CisgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldEltYWdlRm9yRmluZE1hdGNoKHNlbGVj
dGlvblNuYXBzaG90LT5wYXJhbWV0ZXJzKCksIGhhbmRsZSwgbWF0Y2hJbmRleCkpOwogfQogCiB2
b2lkIEZpbmRDb250cm9sbGVyOjpzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3
MWVkMTg4MmZiNDI0ZDIxYzY3OWQxM2JiN2I1MWI0ZWM4NGExNjVlLi5lOWE5MTRjM2U1MDZjMTg4
OGNjNWM3YjYyM2I0ODgxMDU0YTAyMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCkBAIC04NTksMjcgKzg2MCwxMyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZAogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVh
dGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CitSZWZQdHI8V2ViSW1hZ2U+IFdlYkZyYW1lOjpj
cmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiB7CiAgICAgYXV0byBzbmFwc2hvdCA9IHNu
YXBzaG90U2VsZWN0aW9uKCpjb3JlRnJhbWUoKSwgeyB7IFdlYkNvcmU6OlNuYXBzaG90RmxhZ3M6
OkZvcmNlQmxhY2tUZXh0IH0sIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoc25hcHNob3QtPmJhY2tlbmRTaXplKCksIHsgfSk7Ci0gICAgaWYgKCFzaGFyZWRT
bmFwc2hvdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbnNpZGVyIHByb3ZpZGluZyBhIHdheSB0byB1c2Ugc3VicGl4ZWwgYW50aWFsaWFzaW5n
IGZvciB0aGUgc25hcHNob3QKLSAgICAvLyBpZiB3ZSdyZSBjb21wb3NpdGluZyB0aGlzIGltYWdl
IG9udG8gYSBzb2xpZCBjb2xvciAoZS5nLiB0aGUgbW9kZXJuIGZpbmQgaW5kaWNhdG9yIHN0eWxl
KS4KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5w
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShk
ZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoV1RGTW92ZShzbmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7Ci0KLSAgICByZXR1cm4g
c2hhcmVkU25hcHNob3Q7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3QucmVs
ZWFzZU5vbk51bGwoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA2YzNhOTQ4NmU0
NDM0MmFmY2I1NGRhNzZhMjJjYTNkMDNjMjE2ZWM1Li5kMzlmYjI1YjZiZmFjMzZhZjlhNjdmYmM2
Y2VmZjQ5MWUwOThlNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOworY2xhc3Mg
V2ViSW1hZ2U7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3Qg
V2Vic2l0ZVBvbGljaWVzRGF0YTsKQEAgLTE4NCw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiwgdm9p
ZCogY29udGV4dCk7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0
ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGVT
ZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBUcmFuc2FjdGlvbklEIGZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0
TG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJE
aWRDb21taXRMb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDQ3MDU2OGJkYmZiNjU2ODBjNDgxODYyMjZmYmY1YTJiOTE2YjZiN2IuLjk1
YjA3MWVhMDQwZTNlOWEwZjg4Y2IzMjE1ZWMyYTE3NjJjOTE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2
b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCB1aW50MzJfdCBvcAogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRs
ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBo
YW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KQEAgLTI3MDUsMTQg
KzI3MDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUKICAgICB9CiB9CiAKLXN0YXRpYyBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQorc3RhdGlj
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzbmFwc2hvdENvbG9yU3BhY2UoU25hcHNob3RPcHRpb25z
IG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAgIGlmIChvcHRpb25zICYgU25h
cHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5j
b2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnZpZXcoKSk7CisgICAgICAgIHJldHVybiBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9u
OworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAogUmVmUHRy
PFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKQEAgLTI3
MjUsMTQgKzI3MjQsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6
ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBpZiAoIWZyYW1l
VmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2Vi
SW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhv
cHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKG9wdGlvbnMsICp0
aGlzKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwg
c25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFj
ZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAo
IXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBwYWlu
dFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpm
cmFtZVZpZXcsICpncmFwaGljc0NvbnRleHQpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9
IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRt
YXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0NvbnRleHQp
OwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwogfQpAQCAtMjc2MywyNyArMjc2MCwyNiBAQCBSZWZQ
dHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBT
bmFwc2hvdE9wdGlvbnMgb3B0aQogICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRTaXplKHNuYXBz
aG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWlnaHQpOwogICAgIH0KIAot
ICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNo
b3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFw
Q29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJ
bWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMo
b3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+
Y29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVE
ZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91YmxlIGRldmljZVNjYWxlRmFjdG9yID0g
Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgICAgICBzY2FsZUZhY3RvciAvPSBkZXZpY2VTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBn
cmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4
dC5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc25h
cHNob3RSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgQ29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3Ig
PSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBmcmFtZVZpZXctPnNldEJh
c2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGZyYW1lVmll
dy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhj
bHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFt
ZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHNuYXBzaG90
UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29v
cmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVk
QmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7
CkBAIC01NjczLDM3ICs1NjY5LDMzIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgICAg
IEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkpOwogI2VuZGlmCiAKLSAg
ICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFn
ZVNpemUsIHsgfSk7Ci0gICAgICAgIGlmICghYml0bWFwKSB7CisgICAgICAgIGltYWdlID0gV2Vi
SW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIEltYWdlT3B0aW9uc1NoYXJlYWJsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKKyAgICAg
ICAgaWYgKCFpbWFnZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgfQotICAgICAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAgICAgIGZsb2F0IHByaW50
aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VTaXplLndpZHRoKCkpIC8gcmVjdC53
aWR0aCgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShwcmludGluZ1NjYWxl
KTsKKworICAgICAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOwor
ICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6
ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxl
KHByaW50aW5nU2NhbGUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFJl
dGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5n
RnJhbWUoY29yZUZyYW1lKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRl
eHQpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEs
IC0xKSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoMCwgLXJl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCBy
ZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgqZ3JhcGhpY3NDb250ZXh0LCByZWN0
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRm
RG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgeworICAg
ICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7CisgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRyYXdQREZEb2N1
bWVudChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBkZkRvY3VtZW50LmdldCgp
LCBwcmludEluZm8sIHJlY3QpOworICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICB7Cisg
ICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KGdyYXBoaWNzQ29udGV4dCwgcmVj
dCk7CiAgICAgICAgIH0KLQotICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFw
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwotCiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFw
KCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCA0ZTJlOWJhODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1ZDAwMzU3YWFiLi42MTc1
YTY5MzFkZjk3MTdlZTY2ZmY0MTNiZGM5ZTdjODA2NDM2ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzAzNyw4ICsz
MDM3LDggQEAgc3RhdGljIHZvaWQgdGV4dEludGVyYWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihX
ZWJQYWdlJiBwYWdlLCBjb25zdCBIVE1MSW5wdXRFbGUKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFdlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShFbGVtZW50JiBlbGVtZW50
KQogewogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbWFnZSBjb250YWlucyBhdCBtb3N0IDYwMEsg
cGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28gYmlnLgotICAgIGlmIChSZWZQdHI8V2ViSW1h
Z2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJl
YWJsZSwgNjAwICogMTAyNCkpCi0gICAgICAgIHJldHVybiAmc25hcHNob3QtPmJpdG1hcCgpOwor
ICAgIGlmIChhdXRvIHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0
aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCisgICAgICAgIHJldHVybiBzbmFwc2hvdC0+Yml0
bWFwKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMWE3ODlmOTlkODlmNjdm
ODAyMTVmZDE2NjE1MDljZTMzNGRiMTg2MS4uYmQ1NThiMjgyYjY1ZTEzZTQyNGZhZmQ3MjUyMTVm
Yzk1NTViMDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NzYsOSArNTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0
VG9wT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1h
Z2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXll
ci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludCgwLCAtaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdl
Q29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19i
cmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKQEAgLTU5MSw4
ICs1OTUsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdl
KiBpbWFnZSkKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkp
OwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1h
Z2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9y
bUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXll
cnNGb3JEZXZpY2VTY2FsZUNoYW5nZShmbG9hdCBzY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1YWFhZDQxMDkxNmEyZDUx
NjhhNGIxMjRhNzMwLi4xMGM4MjQ5Mjk3YjZjYWFjZDYzOGJiZTk3NTVhOGEyOTVjMWUwYWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQ3LDYgKzIxNDcs
NyBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JDYW52
YXNSZW5kZXJpbmc7CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpET006CiAgICAgY2FzZSBS
ZW5kZXJpbmdQdXJwb3NlOjpMYXllckJhY2tpbmc6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3Nl
OjpTbmFwc2hvdDoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
ZzsKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAgICAgICAgIHJl
dHVybiBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458006</attachid>
            <date>2022-04-20 13:05:47 -0700</date>
            <delta_ts>2022-04-20 14:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220420130546.patch</filename>
            <type>text/plain</type>
            <size>68188</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OTEyMzU3NzI4Y2U3
ZjRlNzljMTI4MGNjNDQ1Y2ZjNTUxODIzYi4uZTdiMmRkZGEwMmYwYjk5MTk1Mjg4YzczZjNlMTdl
NTdlMmFmZGRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTE5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6
CisKIDIwMjItMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBsZXNzIGFuZCBtb3JlIFNvcnRlZEFycmF5
TWFwIC8gU29ydGVkQXJyYXlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWMzZGM2OWRhNjQ5YzlhZjAyZWQ4ZGU0
MzgxYWIyYmFkYmU4ZDI2Yy4uMzlmN2FhNGNkNTVjNjMxYmQwZDcyNzVmYWM3YTlhM2U3ODAxMGQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAyMi0wNC0xOSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1h
Z2UgYmUgYmFja2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0
ZUNHSW1hZ2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQv
VXNlckRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlckRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpwYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1h
cCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6fldlYkltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1h
cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0
Y2hSZXN1bHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2Vi
S2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjppbWFnZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgor
ICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0Zvcik6CisKIDIwMjItMDQtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dQXSBBZGQgdGVsZW1ldHJ5IHdpdGgg
YmFja3RyYWNlIGZvciBuZXR3b3JrIHJlbGF0ZWQgc3lzdGVtIGNhbGxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCmluZGV4IDBiNGI1NTZkOTcxNGUwYmMyYTU2ZTA5
YzBiODI5Nzc2ZmY1MDllNjcuLmQyZTZhYTk1MWExYzkwYjBkOGUzM2VjOTZjNzIxOTcxN2ZhNzJj
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQog
ICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KQEAgLTgxLDcg
KzgxLDggQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZy
YW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOworICAgIGRv
Y3VtZW50LnVwZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CiAgICAgaWYgKG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6RXhjbHVkZVNl
bGVjdGlvbkhpZ2hsaWdodGluZykpCkBAIC0xMTQsOSArMTE1LDExIEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJl
Y3QmIGltYWdlCiAgICAgaWYgKG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6
UGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gY2Vp
bGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZUZh
Y3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRpb25zLnBpeGVsRm9ybWF0KTsKKyAgICBhdXRv
IGhvc3RXaW5kb3cgPSAoZG9jdW1lbnQudmlldygpICYmIGRvY3VtZW50LnZpZXcoKS0+cm9vdCgp
KSA/IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwg
b3B0aW9ucy5waXhlbEZvcm1hdCwgeyB9LCB7IGhvc3RXaW5kb3cgfSk7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CiAKICAgICBpZiAoIWNsaXBS
ZWN0cy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAxY2FjYzhmNjk0NTZkZWMyN2M0MjNm
MGFkZGE4MzlmMDVkZTFlY2Y5Li5hNTJmODhjZmMxNjAyZmE0M2ZiYWM5NDgwZmMwYjI3NTM4NzAx
NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjcmVhdGlvbkNvbnRl
eHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywg
V1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikp
OworICAgICAgICByZXR1cm4gY3JlYXRlPEltYWdlQnVmZmVyVHlwZT4ocGFyYW1ldGVycywgV1RG
TW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJ
bWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtNTMsNiArNTMsMTIgQEAgcHVi
bGljOgogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRl
cnMsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tl
bmQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggMzI1OGY3MGNhM2U4MGE1ZmM2MTVmZDE0Mjc4ZmE0MDZjMzg2NWE2NC4uYmQxMGViNmJl
MDM2NGZlZTFkM2Y0MjRmM2RmY2E4MTNmZTE5YTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYg
KzkwLDkgQEAgcHVibGljOgogICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZTsKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CiAgICAgICAgIFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgp
OwpAQCAtMTgzLDYgKzE4Niw0NSBAQCBwcm90ZWN0ZWQ6CiAgICAgUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEltYWdlQnVmZmVy
QmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBsb2dpY2FsU2l6ZTsKKyAgICBlbmNvZGVyIDw8IHJlc29sdXRpb25TY2Fs
ZTsKKyAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7CisgICAgZW5jb2RlciA8PCBwaXhlbEZvcm1h
dDsKKyAgICBlbmNvZGVyIDw8IHB1cnBvc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBsb2dpY2FsU2l6ZTsKKyAgICBkZWNvZGVyID4+IGxv
Z2ljYWxTaXplOworICAgIGlmICghbG9naWNhbFNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiByZXNvbHV0aW9uU2NhbGU7CisgICAg
ZGVjb2RlciA+PiByZXNvbHV0aW9uU2NhbGU7CisgICAgaWYgKCFyZXNvbHV0aW9uU2NhbGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Cisg
ICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBw
aXhlbEZvcm1hdDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdQdXJwb3NlPiBwdXJwb3NlOwor
ICAgIGRlY29kZXIgPj4gcHVycG9zZTsKKyAgICBpZiAoIXB1cnBvc2UpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpsb2dpY2FsU2l6ZSwgKnJlc29sdXRp
b25TY2FsZSwgKmNvbG9yU3BhY2UsICpwaXhlbEZvcm1hdCwgKnB1cnBvc2UgfSB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCmluZGV4IGEyMTZiMGVkMTVm
NzNlNjM4MTZjY2NmMGU2NmU2YWQwYTkwOTFkMjAuLjRiYmQxNzk0NzI1M2ExOTBhMmU3NTc1ODkz
MzUyOWU3NzM0ODk2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBv
c2UgOiB1aW50OF90IHsKICAgICBDYW52YXMsCiAgICAgRE9NLAogICAgIExheWVyQmFja2luZywK
KyAgICBTbmFwc2hvdCwKKyAgICBTaGFyZWFibGVTbmFwc2hvdCwKICAgICBNZWRpYVBhaW50aW5n
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0lt
YWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcAppbmRleCBjOGNjNWFhOGZjYjk0ODIwYmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi4z
OWZhMzkyMmNkZTg1ODRhNzljNTljYWY3NzA5M2IwZGFlZjAzZmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICsz
NiwxNiBAQAogY2Fpcm9fc3VyZmFjZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1h
Z2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgLy8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3Vn
aCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVy
biBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAo
KS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1h
Z2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFn
ZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfaGVpZ2h0KHN1cmZhY2UpKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFn
ZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0g
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRl
eHQoKTsKIAotICAgIGNhaXJvX3QqIGNyID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2Us
IDAsIDApOwogICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNF
KTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5jcHAKaW5kZXggZjJkMzMzNDc4YzJhZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2Jl
OTEyNGY0MzU5YjJlNDhmOGU0YmRhYmQ4N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYg
V0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYklt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0
bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkubGVha1JlZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSB3ZWJJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYo
KTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBp
bWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0lt
YWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0lt
YWdlT3B0aW9ucyBvcHRpb25zKQogICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6
Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCks
IGltYWdlU2l6ZSk7Ci0gICAgCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFn
ZVNpemUsIHJlY3QsIHJlY3QpOworCisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1h
Z2VTaXplLCByZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmlu
ZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRhNzBiZmZjOWMuLmIzMjM3OGQ3MTU2
NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFt
ZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2Vu
ZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRhKG1fY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0MzY5ODI1Yjc3MmU4MTBkMjAwNTAz
ODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZjMmEwMDM3YTIyYmYxNjBjZTg2MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0
IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxl
KCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tl
bmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTk9URTogVGhlc2UgYWxsIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAppbmRleCBl
MTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5MTRhY2QwMGQzMjYxYTc1Li43ZmZhOWRhZjI3NDE1YTcy
NmNlNDRhOWQzNDZlNWQ1NjcyMDM0ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIx
MSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6
OkltYWdlOiB7CiAgICAgICAgIGF1dG8mIGltYWdlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW1h
Z2UmPihvYmplY3QpOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
LSAgICAgICAgQVNTRVJUKGltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7
Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIHx8
ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgeworICAgICAgICBhdXRvIGhh
bmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRsZSgpOworICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQg
Yml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjEsNiArMjIwLDcgQEAgdm9pZCBVc2VyRGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkK
IAogICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5kaWNhdGVzIGEgYml0bWFwIHdhcyBhbGxvY2F0
ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAgICAgICAgZW5jb2RlciA8PCB0cnVlOworICAgICAgICBl
bmNvZGVyIDw8IGltYWdlLnBhcmFtZXRlcnMoKTsKICAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5MCwxNSArMzkwLDE2IEBAIGJvb2wgVXNlckRh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJl
c3VsdCkKICAgICAgICAgaWYgKCFkaWRFbmNvZGUpCiAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IHBhcmFtdGVyczsKKyAgICAgICAgZGVjb2RlciA+PiBw
YXJhbXRlcnM7CisgICAgICAgIGlmICghcGFyYW10ZXJzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFu
ZGxlKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXN1bHQgPSBXZWJJbWFnZTo6Y3Jl
YXRlKCpwYXJhbXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAy
ZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVkMjJlNTc0Li5iNzQ4YWFiMDAwY2IyYTNl
ZjA3ZWZjNjFkZmZmYzNmNWVjNzA4OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4NzIsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U+IHsKICAgICAgICAgV2ViQ29y
ZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQ
dXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkxheWVyQmFj
a2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsCisgICAg
ICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LAogICAgICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nCiAgICAgPjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggOTljOTUzY2ZjMjI4MmU3YWU3ZTM1YjM1ZGIw
YzFlNDE4NTIyYzA1OC4uNGRkNmNkZTkxMTU1MWI3OTE4OTY3ODk5YWNlMmM5OWIyODFmNTZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NSArMjYsMTA2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAorI2luY2x1ZGUgIkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lQ2xpZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxXZWJJbWFnZT4g
V2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9u
cykKLXsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBvcHRpb25zLCB7IH0pOwot
fQotCi1SZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiYgYml0bWFwQ29uZmlndXJhdGlvbikKK1JlZlB0cjxXZWJJbWFnZT4gV2Vi
SW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMg
b3B0aW9ucywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBDaHJvbWVD
bGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJs
ZSkgewotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgICAgICBpZiAoIWJpdG1hcCkKKyAg
ICAgICAgaWYgKGNsaWVudCkgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBjbGllbnQtPmNy
ZWF0ZUltYWdlQnVmZmVyKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIFJlbmRl
cmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3Jl
YXRlKHNpemUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVy
cG9zZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7CisgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRl
KGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVh
dGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlm
ICghYml0bWFwKQorICAgIAorICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplLCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAg
IHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwor
UmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJiBoYW5k
bGUpCit7CisgICAgYXV0byBiYWNrZW5kID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBpZiAoIWJhY2tl
bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIGF1dG8gYnVmZmVyID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVh
dGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSk7CisgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKK30KKworUmVmPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFJl
ZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
SW1hZ2UoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1dlYkltYWdlOjpXZWJJbWFnZShSZWY8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQorICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorewor
fQorCitJbnRTaXplIFdlYkltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZm
ZXItPmJhY2tlbmRTaXplKCk7CiB9CiAKLVJlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShS
ZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKK2NvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6
UGFyYW1ldGVycyYgV2ViSW1hZ2U6OnBhcmFtZXRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkltYWdlKFdURk1vdmUoYml0bWFwKSkpOworICAgIHJldHVybiBtX2J1
ZmZlci0+cGFyYW1ldGVycygpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUmVmPFNoYXJlYWJs
ZUJpdG1hcD4mJiBiaXRtYXApCi0gICAgOiBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCitHcmFw
aGljc0NvbnRleHQmIFdlYkltYWdlOjpjb250ZXh0KCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9i
dWZmZXItPmNvbnRleHQoKTsKIH0KIAotV2ViSW1hZ2U6On5XZWJJbWFnZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IFdlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2Uo
Y29weUJlaGF2aW9yKTsKIH0KIAotY29uc3QgSW50U2l6ZSYgV2ViSW1hZ2U6OnNpemUoKSBjb25z
dAorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViSW1hZ2U6OmJpdG1hcCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVy
LT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hh
cmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hh
cmluZykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0PElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5iaXRtYXAoKTsKK30KKwor
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgV2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QKK3sKKyAgICBhdXRvKiBiYWNrZW5kID0g
bV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2Vu
ZFNoYXJpbmcoKTsKKyAgICBpZiAoIWlzPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+
KHNoYXJpbmcpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBiYWNrZW5kSGFuZGxl
ID0gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNy
ZWF0ZUJhY2tlbmRIYW5kbGUocHJvdGVjdGlvbik7CisKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBz
dGQ6OmdldF9pZjxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oJmJhY2tlbmRIYW5kbGUpKQorICAg
ICAgICByZXR1cm4gV1RGTW92ZSgqaGFuZGxlKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKaW5kZXggMjJmMzg2Zjlk
MjlhNWRmNTc0MzhmYmFiNDc4YmJmODZmZTFjZDEwNS4uMWY4ZDhhMjkxNTQzYWM4ZDAxNzBhZjY2
ZTMyYzYwMDUzYWRhOGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEwICsyOCwxNSBA
QAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJC
YWNrZW5kLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDaHJvbWVDbGllbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00MCwyMCArNDUsMjQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW1h
Z2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucyk7Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJJ
bWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBSZWY8V2ViSW1h
Z2U+IGNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKLSAgICB+V2ViSW1hZ2UoKTsKLSAg
ICAKLSAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9w
dGlvbnMsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgV2ViQ29yZTo6Q2hyb21lQ2xpZW50KiA9IG51
bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmKTsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgeyByZXR1cm4gbV9i
aXRtYXAuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWFibGVCaXRtYXAmIGJpdG1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkg
Y29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdDsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5h
dGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25z
dDsKKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNyZWF0ZUhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgV2ViSW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7Cisg
ICAgV2ViSW1hZ2UoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKIAotICAgIFJlZjxTaGFy
ZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI1N2E3NDRmOTRjMjk2ZTAwNTczMWE3ODhiY2NlZTA1
ZWYwMjg3MGEuLjYxNWIzZGUyMDBhMTZhZDA2YTM4Y2U4YmJmZGIyNmI3M2NiNjZhZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjg5NywxNCArNjg5Nywx
NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENvdQogICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRT
dHJpbmdNYXRjaGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IEltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVu
dEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29udGVudEltYWdlSGFuZGxlKTsKLSAgICBpZiAoIWJp
dG1hcCkgeworICAgIGF1dG8gaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdU
Rk1vdmUoY29udGVudEltYWdlSGFuZGxlKSk7CisgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ZpbmRN
YXRjaGVzQ2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpLCBtYXRjaEluZGV4KTsKKyAgICBt
X2ZpbmRNYXRjaGVzQ2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIGltYWdl
LmdldCgpLCBtYXRjaEluZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRJbmRp
Y2F0b3IoY29uc3QgVGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIHVpbnQ2NF90IGxp
ZmV0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwN2ZjZDky
OGRhMDkxZDQ2ZmEwNjM4MzE1MGY1OWUzOTNhMGFmYTg4Li44MzZhZmQzYTJjYmNhYWYyNjVkMzE3
NjNmMTQwN2ZjNTllN2IxNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTIxOSw3ICsxMjE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5k
TWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaChpbnQz
Ml90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNhdGVGaW5kTWF0Y2goaW50MzJfdCBtYXRj
aEluZGV4KTsKLSAgICB2b2lkIGRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgp
OworICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVu
dEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUko
KTsKICAgICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZTI3NmQzZTJmNzY0MDk4NmMzOGZlYzQ5ZDNkYzk5YjFiYWVkYWZh
MC4uNDU1NjRkYjkzZGI4OTMxMWVlYjgzZjhiNTRmMzMwNjVmOTIyYjk1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQyLDcg
KzI0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmluZFN0cmluZyhT
dHJpbmcgc3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJf
dCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKICAg
ICBEaWRGYWlsVG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCiAgICAgRGlkRmluZFN0cmluZ01h
dGNoZXMoU3RyaW5nIHN0cmluZywgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4gbWF0
Y2hlcywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCi0gICAgRGlkR2V0SW1hZ2VG
b3JGaW5kTWF0Y2goV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VI
YW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCisgICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2go
c3RydWN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBwYXJhbWV0ZXJz
LCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWlu
dDMyX3QgbWF0Y2hJbmRleCkKIAogICAgICMgUG9wdXBNZW51IG1lc3NhZ2VzCiAgICAgU2hvd1Bv
cHVwTWVudShXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIFZl
Y3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4gaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwg
c3RydWN0IFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA3MjA3NWZi
Yzg2MmMzNGQwYzg2YjRhYzUzOGU0YzQ2Njk5Y2JlZTQyLi40YjllMzU5NTNiNmIzNzdlMWU5MDdh
MTA2NzBhZTBjNjZmNDRiYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDExICsyOTQsMTUgQEAgLSAodm9pZClkaWRHZXRJ
bWFnZUZvck1hdGNoUmVzdWx0OihXZWJLaXQ6OldlYkltYWdlICopaW1hZ2UKICAgICBpZiAoX2lt
YWdlUmVwbHlDYWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJD
b3JlOjpJbnRTaXplIHNpemUgPSBpbWFnZS0+Yml0bWFwKCkuc2l6ZSgpOworICAgIGF1dG8gc2l6
ZSA9IGltYWdlLT5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8gX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBpbWFnZUNhbGxiYWNrID0gX2ltYWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0g
ICAgaW1hZ2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
OmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsK
KyAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7
CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLVGV4dEZpbmRlck1hdGNoIGNhbGxiYWNrcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA3YWI2N2EzNDM3YTI4YTE5YmQ2NmU0NTU3
YzNiNDc0NTZjMWUyMTE1Li40OWRhY2Q2M2I1ZWI3ZTAxZmNhMzc1ODA1MzhmZTRkMmViNjdiMmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODYxLDcgKzg2MSw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVh
dGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lE
LCBoYW5kbGUsIHsgfSksIDApOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLmgKaW5kZXggYmY4YTQ3MDM4NWZjYTc0MGQ0NDM3NTZlYWE3ZjRkN2ZjNzlkMjY1Ni4uNmVj
NTY4ZDA2ZGIyOGVkNDA2MzFlMjc1MDJhNTAwYWQyODdkMTQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDUgKzQzLDMg
QEAgdXNpbmcgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gc3RkOjp2YXJpYW50PAogPjsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCmluZGV4IDU4MDIyOGFm
ODVmNzUzZTU4YmRmNWVmYzFkMDdkMWE2YWYwMzYzZmIuLmNkMmU5ZTNlMTRiOTgxMDY0ZTViODkw
M2ViNDlmZDFmZDg5MmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogCkBAIC0zNCw3ICszMiw4IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
IDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcgewogcHVibGljOgot
ICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
QmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldEJhY2tlbmRIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBoYXNCYWNrZW5kSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTUyLDUgKzUxLDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1Zh
bHVlVHlwZU5hbWUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggYTExNzA3MjQ5MGU1Yzdh
Nzk1NGZiYmU3OGY3MGY3OTM2ZWRjMmVkMS4uNjk4ZThkMTkxYjFmN2Y5ZWZlNGJmMzYyMjBiNGZm
YzMwY2M5NWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKIAotI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlci5o
PgpAQCAtMTI2LDEwICsxMjQsMTAgQEAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW0KICAgICBtX2Nv
bnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNjYWxlKCkpOwogfQogCi1J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIG1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxl
KTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgcHJvdGVjdGlvbik7CiAgICAg
cmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCkBA
IC0xNjQsNSArMTYyLDMgQEAgdm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEIKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCAyMWRkMGQ4NzUwYWRl
MzMyNjdkMDhlODgwNzFkNWQ1Y2QzMzA4NGJmLi5lMzFkYjc2YjY4YWY3YjY2YTlkODA1YmJiNjUy
OWY5YzczZGJhYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KQEAgLTU1LDkgKzUzLDEwIEBAIHB1Ymxp
YzoKICAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4dDsgfQotICAgIAogICAgIFdlYkNv
cmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKLSAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworCisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fYml0bWFwOyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5
SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3Rv
cmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbjo6Tm8pIGNvbnN0IGZpbmFsOwpAQCAtNzcsNSArNzYsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFl
NmY3OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0
LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFj
a2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUo
aGFuZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90
ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
QmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUw
NThjOThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBk
Mzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdl
YkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAK
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFh
NmJlMTY0ZTA1N2Y2YjgxNjAuLmFlZGU3YmVhODJhODBlMDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1h
Z2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkp
OwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAog
ewogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVT
ZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5
NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRh
MTczYWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFj
a2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
cmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAv
LyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJl
ZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMw
ZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJl
bmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDoo
TlNOdW0KICAgICBpZiAod2lkdGgpCiAgICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9h
dFZhbHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5k
bGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0
aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7
CisgICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9T
bmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNs
dWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFn
ZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VD
R0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAj
ZWxzZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
OmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVl
ZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMxYjY3ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZj
Y2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCArMTcxLDEyIEBAIHN0YXRpYyBSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYg
cGFpbnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsK
IAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0
bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihk
ZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShiaXRtYXBTY2Fs
ZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5s
b2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KEludFJlY3QoSW50UG9p
bnQoKSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxl
RmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoYml0
bWFwU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBhaW50aW5n
UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBz
aG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBp
ZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcp
CkBAIC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0
KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKIAogICAgIGF1dG8g
b2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1l
Vmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBh
aW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWludGluZ1Jl
Y3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMp
OworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4
dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVu
dENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA5NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZj
NWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNlZWYyZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIElu
dFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0
b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0g
ICAgaWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVh
dGUoYmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9u
cyB8IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkpOworICAgIGlmICghc25hcHNob3QpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiYWNraW5n
U3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUo
c2NhbGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250
ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIHBh
aW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueCgpLCBmcmFtZVZpZXctPmZyYW1l
UmVjdCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtZnJhbWVWaWV3LT5zY3JvbGxQb3Np
dGlvbigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9j
YXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0
aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBA
QCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlv
cihwYWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBm
cmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CisgICAgZnJhbWVW
aWV3LT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5z
ZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCi0gICAgcmV0dXJuIFdlYkltYWdlOjpj
cmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBzbmFwc2hv
dDsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnRleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZjhlNTVk
ZjFmMGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVhYjdlLi5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZh
MDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJ
bWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwogICAgIEludFNpemUgc2l6ZShi
aXRtYXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRl
KHNpemUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCkpOwotCi0gICAgLy8gRklYTUU6IG5l
ZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3
ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFw
aGljc0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6
ZX0pOworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgorICAgIGF1
dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwgeyB7IH0sIHNpemUgfSk7CiAKICAgICByZXR1
cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE4ZGE4MzdkMWQ2NzI1
ZDZlODQ2ZTFkMmY2OWEzNjY0YzNhNTlhYzMuLjQwMzMyZTM1YTczYmE1ZGUzYWNiMGE3ZDUyYmQy
NzNlZjU2MGJkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAj
aW5jbHVkZSAiSGFuZ0RldGVjdGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
WE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC05
MzgsOCArOTQwLDEyIEBAIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFdl
YkNocm9tZUNsaWVudDo6ZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCkgY29uc3QKIHsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3Io
cHVycG9zZSkpIHsKKyAgICAgICAgaWYgKHB1cnBvc2UgIT0gUmVuZGVyaW5nUHVycG9zZTo6U2hh
cmVhYmxlU25hcHNob3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBy
ZXR1cm4gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LCB7IH0pOworICAg
IH0KIAogICAgIHJldHVybiBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMWQ2NDNi
NmI0Mjg4ZDA4ZTAzOGM0NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRlYmVhYjgwNjgyNDI5
OGRkYTk3ZWZmY2M0MGM3YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIwICszMTksMTggQEAg
dm9pZCBGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJ
bmRleCkKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG1f
ZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVh
dGVTZWxlY3Rpb25TbmFwc2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJG
cmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOwog
CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCiAg
ICAgaWYgKCFzZWxlY3Rpb25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBzaG90LT5jcmVhdGVI
YW5kbGUoaGFuZGxlKTsKLQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9uU25hcHNob3QtPmNy
ZWF0ZUhhbmRsZSgpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJbWFn
ZUZvckZpbmRNYXRjaChoYW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc2VsZWN0aW9u
U25hcHNob3QtPnBhcmFtZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQg
RmluZENvbnRyb2xsZXI6OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDcxZWQx
ODgyZmI0MjRkMjFjNjc5ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLmU5YTkxNGMzZTUwNmMxODg4Y2M1
YzdiNjIzYjQ4ODEwNTRhMDIxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViQ2hyb21l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKQEAgLTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdl
YkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lk
CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNl
bGVjdGlvblNuYXBzaG90KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2ViRnJhbWU6OmNyZWF0
ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKIHsKICAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNo
b3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9y
Y2VCbGFja1RleHQgfSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gc2hhcmVkU25hcHNob3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShzbmFwc2hvdC0+YmFja2VuZFNpemUoKSwgeyB9KTsKLSAgICBpZiAoIXNoYXJlZFNuYXBz
aG90KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Y29uc2lkZXIgcHJvdmlkaW5nIGEgd2F5IHRvIHVzZSBzdWJwaXhlbCBhbnRpYWxpYXNpbmcgZm9y
IHRoZSBzbmFwc2hvdAotICAgIC8vIGlmIHdlJ3JlIGNvbXBvc2l0aW5nIHRoaXMgaW1hZ2Ugb250
byBhIHNvbGlkIGNvbG9yIChlLmcuIHRoZSBtb2Rlcm4gZmluZCBpbmRpY2F0b3Igc3R5bGUpLgot
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkU25hcHNob3QtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZUZyYW1lKCktPnBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxvYXRQb2ludCgpKTsKLQotICAgIHJldHVybiBzaGFy
ZWRTbmFwc2hvdDsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdC5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDZjM2E5NDg2ZTQ0MzQy
YWZjYjU0ZGE3NmEyMmNhM2QwM2MyMTZlYzUuLmQzOWZiMjViNmJmYWMzNmFmOWE2N2ZiYzZjZWZm
NDkxZTA5OGU3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CitjbGFzcyBXZWJJ
bWFnZTsKIGNsYXNzIFdlYlBhZ2U7CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBXZWJz
aXRlUG9saWNpZXNEYXRhOwpAQCAtMTg0LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiB3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uLCB2b2lkKiBj
b250ZXh0KTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2Vs
ZWN0aW9uU25hcHNob3QoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRy
YW5zYWN0aW9uSUQgZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2Fk
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENv
bW1pdExvYWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggNDcwNTY4YmRiZmI2NTY4MGM0ODE4NjIyNmZiZjVhMmI5MTZiNmI3Yi4uOTViMDcx
ZWEwNDBlM2U5YTBmODhjYjMyMTVlYzJhMTc2MmM5MTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2MzYsNyArMjYzNiw3IEBAIHZvaWQg
V2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qgc25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1h
cFNpemUsIHVpbnQzMl90IG9wCiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRs
ZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQpAQCAtMjcwNSwxNCArMjcw
NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OnBhaW50U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZQogICAgIH0KIH0KIAotc3RhdGljIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3Vy
YXRpb24oU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCitzdGF0aWMgRGVz
dGluYXRpb25Db2xvclNwYWNlIHNuYXBzaG90Q29sb3JTcGFjZShTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucywgV2ViUGFnZSYgcGFnZSkKIHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKICNpZiBVU0UoQ0cpCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQotICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpKTsKKyAgICAgICAgcmV0dXJuIHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS52aWV3KCkpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQogCiBSZWZQdHI8V2Vi
SW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpAQCAtMjcyNSwx
NCArMjcyNCwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIGlmICghZnJhbWVWaWV3
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlv
bnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMp
KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RDb2xvclNwYWNlKG9w
dGlvbnMsICp0aGlzKSwgJm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpOwogICAgIGlmICghc25h
cHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0
ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHBhaW50U25h
cHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1l
VmlldywgKmdyYXBoaWNzQ29udGV4dCk7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25h
cHNob3QtPmNvbnRleHQoKTsKKyAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNp
emUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CiAK
ICAgICByZXR1cm4gc25hcHNob3Q7CiB9CkBAIC0yNzYzLDI3ICsyNzYwLDI2IEBAIFJlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBz
aG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUoc25hcHNob3RT
aXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhlaWdodCk7CiAgICAgfQogCi0gICAg
YXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFwc2hvdE9w
dGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdl
OjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRp
b25zKSwgc25hcHNob3RDb2xvclNwYWNlKG9wdGlvbnMsICp0aGlzKSwgJm1fcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkpOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250
ZXh0KCk7CiAKICAgICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmlj
ZVNjYWxlRmFjdG9yKSkgewogICAgICAgICBkb3VibGUgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3Jl
UGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgIHNjYWxlRmFjdG9yIC89IGRldmljZVNjYWxlRmFjdG9yOwogICAgIH0KIAotICAgIGdyYXBo
aWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJh
bnNsYXRlKC1zbmFwc2hvdFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNj
YWxlKHNjYWxlRmFjdG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1zbmFwc2hv
dFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBDb2xvciBzYXZlZEJhY2tncm91bmRDb2xvciA9IGZy
YW1lVmlldy0+YmFzZUJhY2tncm91bmRDb2xvcigpOwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgZnJhbWVWaWV3LT5z
ZXROb2RlVG9EcmF3KCZub2RlKTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRl
U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmll
dy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0
LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGlu
YXRlcyk7CiAKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Ioc2F2ZWRCYWNr
Z3JvdW5kQ29sb3IpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKQEAg
LTU2NzMsMzcgKzU2NjksMzMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICAgICAgQVNT
RVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSk7CiAjZW5kaWYKIAotICAgICAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6
ZSwgeyB9KTsKLSAgICAgICAgaWYgKCFiaXRtYXApIHsKKyAgICAgICAgaW1hZ2UgPSBXZWJJbWFn
ZTo6Y3JlYXRlKGltYWdlU2l6ZSwgSW1hZ2VPcHRpb25zU2hhcmVhYmxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgJm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpOworICAgICAgICBp
ZiAoIWltYWdlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICB9Ci0gICAgICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAg
ICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkgewotICAgICAgICAgICAgZmxvYXQgcHJpbnRpbmdT
Y2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHByaW50aW5nU2NhbGUpOwor
CisgICAgICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlLT5jb250ZXh0KCk7CisgICAg
ICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VTaXplLndp
ZHRoKCkpIC8gcmVjdC53aWR0aCgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUocHJp
bnRpbmdTY2FsZSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICBpZiAoUmV0YWlu
UHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudCA9IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdGcmFt
ZShjb3JlRnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtcmVjdC5o
ZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgZHJhd1BERkRvY3VtZW50KGdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3Qp
OwotICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KCpncmFwaGljc0NvbnRleHQsIHJlY3QpOwot
ICAgICAgICAgICAgfQorICAgICAgICBpZiAoUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1
bWVudCA9IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdGcmFtZShjb3JlRnJhbWUpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIW1fcHJpbnRDb250ZXh0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50
cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgZHJhd1BERkRvY3VtZW50
KGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9jdW1lbnQuZ2V0KCksIHBy
aW50SW5mbywgcmVjdCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsK
ICAgICAgICAgfQotCi0gICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGU7Ci0KICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
KyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDRlMmU5YmE4MjViMGJhYmI0OTdjMGQ5OWZjODk1YzVkMDAzNTdhYWIuLjYxNzVhNjkz
MWRmOTcxN2VlNjZmZjQxM2JkYzllN2M4MDY0MzZlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMDM3LDggKzMwMzcs
OCBAQCBzdGF0aWMgdm9pZCB0ZXh0SW50ZXJhY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IEhUTUxJbnB1dEVsZQogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2Vi
UGFnZTo6c2hhcmVhYmxlQml0bWFwU25hcHNob3RGb3JOb2RlKEVsZW1lbnQmIGVsZW1lbnQpCiB7
CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGltYWdlIGNvbnRhaW5zIGF0IG1vc3QgNjAwSyBwaXhl
bHMsIHNvIHRoYXQgaXQgaXMgbm90IHRvbyBiaWcuCi0gICAgaWYgKFJlZlB0cjxXZWJJbWFnZT4g
c25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZWxlbWVudCwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxl
LCA2MDAgKiAxMDI0KSkKLSAgICAgICAgcmV0dXJuICZzbmFwc2hvdC0+Yml0bWFwKCk7CisgICAg
aWYgKGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZWxlbWVudCwgU25hcHNob3RPcHRpb25z
U2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90LT5iaXRtYXAo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAxYTc4OWY5OWQ4OWY2N2Y4MDIx
NWZkMTY2MTUwOWNlMzM0ZGIxODYxLi5iZDU1OGIyODJiNjVlMTNlNDI0ZmFmZDcyNTIxNWZjOTU1
NWIwODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU3Niw5ICs1NzYsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZXRUb3BP
dmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWxheWVyKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgp
OworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGxheWVyLT5z
ZXRTaXplKGltYWdlLT5zaXplKCkpOwogICAgIGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KDAsIC1pbWFnZS0+c2l6ZSgpLmhlaWdodCgpKSk7Ci0gICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KS5jb250ZW50cyA9IChfX2JyaWRnZSBpZClpbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5
KCkuZ2V0KCk7CisgICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5jb250ZW50cyA9IChfX2JyaWRn
ZSBpZCluYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQpAQCAtNTkxLDggKzU5
NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGlt
YWdlKQogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbGF5ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7Ci0g
ICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5jb250ZW50cyA9IChfX2JyaWRnZSBpZClpbWFnZS0+
Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCk7CisgICAgbGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKS5jb250ZW50cyA9IChfX2JyaWRnZSBpZCluYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUhlYWRlckFuZEZvb3RlckxheWVyc0Zv
ckRldmljZVNjYWxlQ2hhbmdlKGZsb2F0IHNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ3N2UwM2RiMTI3YTVhYWFkNDEwOTE2YTJkNTE2OGE0
YjEyNGE3MzAuLmZkYTg5MTE4YTI1NzFmNjZkODhiZjQzM2NlM2E1YTE1NDViNTBkZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNDcsNiArMjE0Nyw4IEBA
IGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZSkKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1Jl
bmRlcmluZzsKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OkRPTToKICAgICBjYXNlIFJlbmRl
cmluZ1B1cnBvc2U6OkxheWVyQmFja2luZzoKKyAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OlNu
YXBzaG90OgorICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3Q6CiAg
ICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmc7CiAgICAgY2FzZSBS
ZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nOgogICAgICAgICByZXR1cm4gbV91c2VHUFVQ
cm9jZXNzRm9yTWVkaWE7Cg==
</data>
<flag name="commit-queue"
          id="486770"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458014</attachid>
            <date>2022-04-20 14:11:05 -0700</date>
            <delta_ts>2022-04-21 22:41:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220420141105.patch</filename>
            <type>text/plain</type>
            <size>93173</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OTEyMzU3NzI4Y2U3
ZjRlNzljMTI4MGNjNDQ1Y2ZjNTUxODIzYi4uNDZmMWUwNGE3ZDhhMGQwZmFhYjFhMWRmMTBkYjI0
YTc2ZmQ0YTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6
CisKIDIwMjItMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBsZXNzIGFuZCBtb3JlIFNvcnRlZEFycmF5
TWFwIC8gU29ydGVkQXJyYXlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWMzZGM2OWRhNjQ5YzlhZjAyZWQ4ZGU0
MzgxYWIyYmFkYmU4ZDI2Yy4uNWU2NTJkOGFhN2ZlYTYwNDg5YjIwNDQzNTdhZDcxMjQ1ZTA5MzBl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMjItMDQtMjAgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIFdlYklt
YWdlIGJlIGJhY2tlZCBieSBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTI3CisgICAgICAgIHJkYXI6Ly85MTExMzYyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJX
aXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V0NTY2Vu
ZTo6dXBkYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OmJpdG1hcEltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUNhaXJv
U3VyZmFjZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZSk6CisgICAg
ICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3Jl
YXRlQ0dJbWFnZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAg
ICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6c2V0SW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCk6IERlbGV0ZWQuCisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjppc0JhY2tlZEJ5U2hhcmVkTWVtb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvVXNlckRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L1dlYkltYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpXZWJJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnBhcmFtZXRlcnMg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y29udGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbWFnZTo6Yml0bWFwIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2Vi
SW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbWFnZTo6Yml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2U6OmJpdG1hcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJLaXRX
ZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdl
VG9CaXRtYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRl
ckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9y
TWF0Y2hSZXN1bHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAo
V2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0
aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczp3aWR0aDpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6
aW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljczo6ZGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmdldEltYWdlRm9y
RmluZE1hdGNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dGFrZVNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RDb2xvclNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3RBdFNpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzbmFwc2hvdE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENv
bmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hhcmVhYmxlQml0bWFw
U25hcHNob3RGb3JOb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IpOgorCiAyMDIyLTA0LTE4ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXUF0gQWRk
IHRlbGVtZXRyeSB3aXRoIGJhY2t0cmFjZSBmb3IgbmV0d29yayByZWxhdGVkIHN5c3RlbSBjYWxs
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAwYjRiNTU2
ZDk3MTRlMGJjMmE1NmUwOWMwYjgyOTc3NmZmNTA5ZTY3Li5kMmU2YWE5NTFhMWM5MGIwZDhlMzNl
Yzk2YzcyMTk3MTdmYTcyYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uCkBAIC04MSw3ICs4MSw4IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYg
KCFmcmFtZS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9j
dW1lbnQoKTsKKyAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKIAogICAgIEZyYW1lVmlldzo6
U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJ
bmNsdWRlU2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90
RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpKQpAQCAtMTE0LDkgKzExNSwxMSBA
QCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZy
YW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5z
KFNuYXBzaG90RmxhZ3M6OlBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBz
Y2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNw
ZWNpZmllZCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZv
cm1hdCk7CisgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVu
dC52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygp
IDogbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VS
ZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsIHNjYWxlRmFjdG9yLCBvcHRp
b25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQsIHsgfSwgeyBob3N0V2luZG93IH0p
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwog
CiAgICAgaWYgKCFjbGlwUmVjdHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggMWNhY2M4
ZjY5NDU2ZGVjMjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uYTUyZjg4Y2ZjMTYwMmZhNDNmYmFj
OTQ4MGZjMGIyNzUzODcwMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVy
cywgY3JlYXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJU
eXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+
KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVy
VHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTUz
LDYgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6
OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZm
ZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1l
bnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFn
ZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNr
ZW5kVHlwZT4mJiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZN
b3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBhNWZjNjE1ZmQxNDI3OGZhNDA2YzM4
NjVhNjQuLmJkMTBlYjZiZTAzNjRmZWUxZDNmNDI0ZjNkZmNhODEzZmUxOWE5M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAg
ICAgICBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2U7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNv
ZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFn
ZUJ1ZmZlckJhY2tlbmQoKTsKQEAgLTE4Myw2ICsxODYsNDUgQEAgcHJvdGVjdGVkOgogICAgIFBh
cmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
dm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbG9naWNhbFNpemU7CisgICAgZW5jb2RlciA8
PCByZXNvbHV0aW9uU2NhbGU7CisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOworICAgIGVuY29k
ZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBwdXJwb3NlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycz4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9naWNhbFNpemU7Cisg
ICAgZGVjb2RlciA+PiBsb2dpY2FsU2l6ZTsKKyAgICBpZiAoIWxvZ2ljYWxTaXplKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gcmVzb2x1
dGlvblNjYWxlOworICAgIGRlY29kZXIgPj4gcmVzb2x1dGlvblNjYWxlOworICAgIGlmICghcmVz
b2x1dGlvblNjYWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0Owor
ICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUHVy
cG9zZT4gcHVycG9zZTsKKyAgICBkZWNvZGVyID4+IHB1cnBvc2U7CisgICAgaWYgKCFwdXJwb3Nl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9naWNh
bFNpemUsICpyZXNvbHV0aW9uU2NhbGUsICpjb2xvclNwYWNlLCAqcGl4ZWxGb3JtYXQsICpwdXJw
b3NlIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApp
bmRleCBhMjE2YjBlZDE1ZjczZTYzODE2Y2NjZjBlNjZlNmFkMGE5MDkxZDIwLi40YmJkMTc5NDcy
NTNhMTkwYTJlNzU3NTg5MzM1MjllNzczNDg5NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAgZW51bSBjbGFz
cyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgQ2FudmFzLAogICAgIERPTSwKICAg
ICBMYXllckJhY2tpbmcsCisgICAgU25hcHNob3QsCisgICAgU2hhcmVhYmxlU25hcHNob3QsCiAg
ICAgTWVkaWFQYWludGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDM5NDFj
YzdjN2Y0MDBlNjc2NjhlNTRlYTNlOTJkOWM3NDRlYjdkZGIuLjIyOWRlNmI4ZmMxMWY1MDAxYjBk
NmE3ZGM3M2U4NzI0ZTY4ODhhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwMSw3
ICszMDEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1h
cEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7CiAg
ICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZmZXItPnRydW5jYXRlZExvZ2lj
YWxTaXplKCk7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUocmVzdWx0U2l6ZSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHJlc3VsdFNpemUsIHsg
aW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGUKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1
ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFj
ZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcAppbmRleCA3
ZTIyNTgyMjQ4YjcyNTZkZmU5NTI1ZWRmNzliMzkwMWIxYWFlZGU2Li43YTE2NjdmN2ExMjNiMzg2
NTk4MjI5ODhjY2M4MTEzYWEwZDU1ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RkOjpvcHRp
b25hbDxVcGRhdGVJbmZvPiBXQ1NjZW5lOjp1cGRhdGUoV0NVcGF0ZUluZm8mJiB1cGRhdGUpCiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUluZm8+IHJlc3VsdDsKICAgICBpZiAobV91c2VzT2Zm
c2NyZWVuUmVuZGVyaW5nKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUod2luZG93U2l6ZSwgeyB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh3aW5kb3dTaXplLCB7IH0pOwogICAgICAgICBnbFJl
YWRQaXhlbHMoMCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpLCBH
TF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgYml0bWFwLT5kYXRhKCkpOwogICAgICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgIGlmIChiaXRtYXAtPmNyZWF0
ZUhhbmRsZShoYW5kbGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBm
MjEwOTZhYWFjZDBkOWY3YzAwNmU5OGY3MzExYTQ3OTJmMDRjN2EzLi5kMTUwOGQ1MmYwOTdjYzYx
MjRmOWMxMjk5OWRlNzBmNzFhMTEzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZQogICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7
IHBsYXllci0+Y29sb3JTcGFjZSgpIH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IHBsYXllci0+Y29sb3JTcGFjZSgpIH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCBjOGNjNWFhOGZjYjk0ODIw
YmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi4zOWZhMzkyMmNkZTg1ODRhNzljNTljYWY3NzA5M2Iw
ZGFlZjAzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dL
SW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogY2Fpcm9fc3VyZmFjZV90KiBXS0lt
YWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgLy8gV2Ug
Y2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1c3QgbGVh
ayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmJp
dG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1Jl
ZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBXZWJD
b3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKICAgICBhdXRv
IHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJ
bWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0byYgZ3JhcGhp
Y3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAotICAgIGNhaXJvX3QqIGNyID0gZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zZXRf
c291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJvX3NldF9vcGVyYXRv
cihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAs
IDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZjJkMzMzNDc4YzJhZGI5YTMx
NTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2JlOTEyNGY0MzU5YjJlNDhmOGU0YmRhYmQ4N2YyNDAy
YzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJl
ZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkubGVha1Jl
ZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7
CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIHJl
dHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9u
cykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFn
ZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgIFdlYkNv
cmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIHdl
YkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0lt
YWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYklt
YWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNz
Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250
ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0
KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7Ci0gICAgCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworCisgICAgZ3Jh
cGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd05h
dGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKICAgICByZXR1
cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCAwNDAzNjIwMDBmNWYzNWQ0Y2I1
NjcyZjVjN2Y3NmFhYTE4MjE3NjA1Li5mZTkxNWQxNzg3MDFjOTRiN2Y0ZTZjY2U1YjZmNWI1ODNi
MTlkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRl
eHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHRE
YXRhLmNwcApAQCAtODIsNyArODIsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0
TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYQogdm9pZCBD
b250ZXh0TWVudUNvbnRleHREYXRhOjpzZXRJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UpCiB7
CiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5kaW5nIHN0cmF0ZWd5IGZvciBTaGFy
ZWFibGVCaXRtYXAuCi0gICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7IH0pOworICAgIG1fY29udHJv
bGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgp
KSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IG1fY29udHJvbGxlZEltYWdlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRhNzBiZmZjOWMuLmIzMjM3OGQ3
MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBh
cmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFj
a2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0byBk
YXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRhKG1fY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0MzY5ODI1Yjc3MmU4MTBkMjAw
NTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZjMmEwMDM3YTIyYmYxNjBjZTg2
MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFu
ZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJh
Y2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTk9URTogVGhlc2UgYWxs
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4g
Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuY3BwCmluZGV4IDI3ZTgyMGUyM2NmODhhMWJmNThhZjk4ZmM1YzBmYzJhODVkZWY4MzMu
LmU0ZGVhZDVmODkzOGNlMTZjNjhjY2MwZTJkMjA5Y2Y1M2Q4MDI2ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSwyMCArOTksNiBAQCBib29sIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29u
ZmlndXJhdGlvbgogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24p
Ci17Ci0gICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwotICAgIGF1dG8g
bnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29uZmlndXJhdGlvbik7Ci0gICAgaWYg
KG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxlQml0bWFwTWFsbG9jOjp0cnlN
YWxsb2MobnVtQnl0ZXMpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJh
dGlvbiwgZGF0YSkpOwotfQotCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24pCiB7CiAgICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24p
OwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29uZmlndXJhdGlv
bik7CkBAIC0xMjMsMTMgKzEwOSwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBDbwogICAgIGlm
ICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1l
bW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNv
bmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBS
ZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKIHsKLSAgICBBU1NFUlQoc2hhcmVkTWVt
b3J5KTsKLQogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKICAgICBh
dXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRpb24pOwogICAg
IGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCkBAIC0xMzksNyArMTIzLDcgQEAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRp
b24sIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0
bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkpOwogfQogCiBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5k
bGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNDgs
MTMgKzEzMiwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtbwogICAgIGlmICghc2hhcmVkTWVt
b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxl
Lm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsK
KyAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24s
IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogYm9vbCBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
IHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQmFja2VkQnlTaGFyZWRNZW1vcnko
KSk7Ci0KICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1faGFu
ZGxlLCBwcm90ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGhhbmRsZS5tX3Np
emUgPSBtX3NpemU7CkBAIC0xNjIsMzQgKzE0NCwxNiBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJv
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1h
cChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIHZvaWQq
IGRhdGEpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKQotICAgICwgbV9kYXRhKGRhdGEpCi17Ci19Ci0KLVNoYXJlYWJsZUJpdG1hcDo6U2hh
cmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorU2hhcmVhYmxlQml0bWFw
OjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICA6IG1fc2l6
ZShzaXplKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCi0gICAgLCBtX3No
YXJlZE1lbW9yeShzaGFyZWRNZW1vcnkpCi0gICAgLCBtX2RhdGEobnVsbHB0cikKKyAgICAsIG1f
c2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKIHsKIH0KIAotU2hhcmVhYmxlQml0
bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKLXsKLSAgICBpZiAoIWlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSkKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwTWFsbG9jOjpmcmVlKG1fZGF0YSk7Ci19Ci0K
IHZvaWQqIFNoYXJlYWJsZUJpdG1hcDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQmFja2Vk
QnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5kYXRhKCk7
Ci0KLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICByZXR1cm4gbV9kYXRhOworICAgIHJldHVybiBt
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwogfQogCiBDaGVja2VkVWludDMyIFNoYXJlYWJsZUJpdG1h
cDo6bnVtQnl0ZXNGb3JTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVCaXRtYXAuaAppbmRleCA0YTA3NDAwMTczNWRmODY0ZjRmNGJlMWY5ZTc2NTUyNDAz
ZWMzZjU0Li5jYTNkODQ0YmRhZWNiMDM2MDI1N2Q4YjgwNmRlYzhiZDk4ZGU3ZDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDE0ICs3OSwxMSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRlQnl0ZXNQZXJSb3coV2ViQ29y
ZTo6SW50U2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYpOwogICAgIHN0YXRpYyBDaGVja2VkVWlu
dDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwogCi0gICAg
Ly8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5Lgot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwotCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJp
dG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9j
ZXNzLgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOworICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZp
Z3VyYXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGFuIGFs
cmVhZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0
aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVm
PFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZy
b20gYSBoYW5kbGUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShj
b25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC05NCwxMSArOTEsMTIgQEAgcHVibGljOgogICAgIC8v
IENyZWF0ZSBhIGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkg
Y29uc3Q7CiAKLSAgICB+U2hhcmVhYmxlQml0bWFwKCk7Ci0KICAgICBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgV2ViQ29yZTo6SW50
UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6Oklu
dFBvaW50KCksIHNpemUoKSk7IH0KIAorICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKKyAgICBzaXpl
X3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3Np
emUsIG1fY29uZmlndXJhdGlvbik7IH0KKwogICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRl
eHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogCkBAIC0xMDYsOCArMTA0LDYgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3Rp
bmF0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UpOwogICAgIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNl
KTsKIAotICAgIGJvb2wgaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkTWVtb3J5OyB9Ci0KICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBiaXRtYXAgaW1hZ2UgdGhh
dCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhp
cyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0
aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlPiBjcmVhdGVJbWFnZSgpOwpAQCAtMTMwLDggKzEyNiw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q29uZmlndXJhdGlvbiwgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIFNo
YXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVm
PFNoYXJlZE1lbW9yeT4mJik7CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYpIGNvbnN0OwpAQCAtMTQzLDExICsx
MzgsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VTdXJmYWNlRGF0YSh2b2lk
KiB0eXBlbGVzc0JpdG1hcCk7CiAjZW5kaWYKIAotcHVibGljOgotICAgIHZvaWQqIGRhdGEoKSBj
b25zdDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVC
eXRlc1BlclJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KLSAgICAKLXByaXZhdGU6CiAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1f
c2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7
CkBAIC0xNTcsMTEgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlbGVhc2VCaXRtYXBD
b250ZXh0RGF0YUNhbGxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIC8vIElmIHRoZSBzaGFy
ZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0
aGUgc2hhcmVkIG1lbW9yeSBvYmplY3QuCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFy
ZWRNZW1vcnk7Ci0KLSAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkg
ZmFzdE1hbGxvY2VkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhlIGRhdGEuCi0gICAgdm9pZCog
bV9kYXRhIHsgbnVsbHB0ciB9OworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Vc2VyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAK
aW5kZXggZTE5NDA3MzcyODY4NTJkMDIzYWE5YWExOTE0YWNkMDBkMzI2MWE3NS4uN2ZmYTlkYWYy
NzQxNWE3MjZjZTQ0YTlkMzQ2ZTVkNTY3MjAzNGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVXNlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRh
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMTEsOSArMjExLDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkKICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlOjpJbWFnZTogewogICAgICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19jYXN0PGNvbnN0
IFdlYkltYWdlJj4ob2JqZWN0KTsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgIEFTU0VSVChpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5U2hhcmVkTWVt
b3J5KCkpOwotICAgICAgICBpZiAoIWltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSB8fCAhaW1hZ2UuYml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSkpIHsKKyAgICAgICAg
YXV0byBoYW5kbGUgPSBpbWFnZS5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgaWYgKGhhbmRsZS5p
c051bGwoKSkgewogICAgICAgICAgICAgLy8gSW5pdGlhbCBmYWxzZSBpbmRpY2F0ZXMgbm8gYWxs
b2NhdGVkIGJpdG1hcCBvciBpcyBub3Qgc2hhcmVhYmxlLgogICAgICAgICAgICAgZW5jb2RlciA8
PCBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIxLDYgKzIyMCw3IEBAIHZvaWQgVXNl
ckRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBv
YmplY3QpCiAKICAgICAgICAgLy8gSW5pdGlhbCB0cnVlIGluZGljYXRlcyBhIGJpdG1hcCB3YXMg
YWxsb2NhdGVkIGFuZCBpcyBzaGFyZWFibGUuCiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAg
ICAgICAgZW5jb2RlciA8PCBpbWFnZS5wYXJhbWV0ZXJzKCk7CiAgICAgICAgIGVuY29kZXIgPDwg
aGFuZGxlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zOTAsMTUgKzM5MCwxNiBAQCBib29s
IFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiByZXN1bHQpCiAgICAgICAgIGlmICghZGlkRW5jb2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiBwYXJhbXRlcnM7CisgICAgICAgIGRlY29k
ZXIgPj4gcGFyYW10ZXJzOworICAgICAgICBpZiAoIXBhcmFtdGVycykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGhhbmRsZSk7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmVzdWx0ID0gV2ViSW1h
Z2U6OmNyZWF0ZSgqcGFyYW10ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGY3NDhiZGYzNzM2MTgwODNlYWRjOTViZjhhNmJiMzJiNjM3YjBiYWQuLjZhYTBl
Yzg0ZmE2MTQxZWU5ODVjY2NlYTIzMTQ0OTc2ZGYxMDk2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxNyw3ICsxMDE3LDcgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAgICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDJl
ZmUyNjA3Mjc3YTRiOGFkZjJmODA3NzA3ZmQ3NzMxZWQyMmU1NzQuLmI3NDhhYWIwMDBjYjJhM2Vm
MDdlZmM2MWRmZmZjM2Y1ZWM3MDg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcyLDYgKzg3Miw4IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZT4gewogICAgICAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U6OkRPTSwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNr
aW5nLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwKKyAgICAg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsCiAgICAgICAg
IFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAgICA+OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkltYWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdlMzViMzVkYjBj
MWU0MTg1MjJjMDU4Li40ZGQ2Y2RlOTExNTUxYjc5MTg5Njc4OTlhY2UyYzk5YjI4MWY1NmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwxMDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFdlYkltYWdlPiBX
ZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25z
KQotewotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Ci19
Ci0KLVJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBv
cHRpb25zLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIENocm9tZUNs
aWVudCogY2xpZW50KQogewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxl
KSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAg
ICAgICBpZiAoY2xpZW50KSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3Jl
YXRlSW1hZ2VCdWZmZXIoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgUmVuZGVy
aW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVh
dGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBSZW5kZXJpbmdQdXJw
b3NlOjpTaGFyZWFibGVTbmFwc2hvdCwgeyB9KTsKKyAgICAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgaWYg
KCFiaXRtYXApCisgICAgCisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
cmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitS
ZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmIGhhbmRs
ZSkKK3sKKyAgICBhdXRvIGJhY2tlbmQgPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOworICAgIGlmICghYmFja2Vu
ZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byBidWZmZXIgPSBDb25j
cmV0ZUltYWdlQnVmZmVyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0
ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOworfQorCitSZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVm
PEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJ
bWFnZShXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxJbWFn
ZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCit7Cit9
CisKK0ludFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZl
ci0+YmFja2VuZFNpemUoKTsKIH0KIAotUmVmPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFJl
ZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwKQorY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShiaXRtYXApKSk7CisgICAgcmV0dXJuIG1fYnVm
ZmVyLT5wYXJhbWV0ZXJzKCk7CiB9CiAKLVdlYkltYWdlOjpXZWJJbWFnZShSZWY8U2hhcmVhYmxl
Qml0bWFwPiYmIGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKK0dyYXBo
aWNzQ29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAogeworICAgIHJldHVybiBtX2J1
ZmZlci0+Y29udGV4dCgpOwogfQogCi1XZWJJbWFnZTo6fldlYkltYWdlKCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gV2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvcikgY29uc3QKIHsKKyAgICByZXR1cm4gbV9idWZmZXItPmNvcHlOYXRpdmVJbWFnZShj
b3B5QmVoYXZpb3IpOwogfQogCi1jb25zdCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0
CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0bWFwKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKKyAgICBhdXRvKiBiYWNrZW5kID0gbV9idWZmZXIt
PmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFy
aW5nKCk7CisgICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFy
aW5nKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOworfQorCitT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIGF1dG8qIGJhY2tlbmQgPSBt
X2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tlbmQpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5k
U2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4o
c2hhcmluZykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJhY2tlbmRIYW5kbGUg
PSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3Jl
YXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9uKTsKKworICAgIGlmIChhdXRvIGhhbmRsZSA9IHN0
ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPigmYmFja2VuZEhhbmRsZSkpCisgICAg
ICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJ
bWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaAppbmRleCAyMmYzODZmOWQy
OWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1Li4xZjhkOGEyOTE1NDNhYzhkMDE3MGFmNjZl
MzJjNjAwNTNhZGE4ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDE1IEBA
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlQnVm
ZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFn
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYklt
YWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7Ci0gICAgc3RhdGljIFJlZjxXZWJJbWFn
ZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOwotICAgIH5XZWJJbWFnZSgpOwotICAg
IAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKKyAgICBzdGF0aWMg
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0
aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXZWJDb3JlOjpDaHJvbWVDbGllbnQqID0gbnVs
bHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiYpOworICAgIHN0YXRpYyBSZWY8V2ViSW1hZ2U+IGNyZWF0ZShSZWY8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+JiYpOwogCi0gICAgU2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSB7IHJldHVybiBtX2Jp
dG1hcC5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBj
b25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0OworCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0
OworCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAg
ICBXZWJJbWFnZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgUmVmPFNoYXJl
YWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggYmYzZGQwNjAzZjVmN2IyOGRjMTRh
MTcyNGQ4MDAzMWExZWZhYjNkOS4uMDQ1ZGViYjgxMWRkMzg1MzE3Njc3MjRhNDRmNTE2YTlkNTA5
ZjA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyB2
b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5z
aXplKCkpLCB7IH0pOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJ
bWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IGVkOWE5NjBmNWE4ZGU2YmJjZGYzMGZlODllMWExZjBjNDExYTkxM2Yu
LjQ3M2RlY2ZiM2E5NGM4MmJkY2E2YjU2YTUwODQyZjY1MTVkOGFhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Mzgw
LDcgKzQzODAsNyBAQCB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgdWludDY0X3QgY2FsbGJhY2tJRAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5i
aXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkpOworICAgIGdfdGFza19yZXR1
cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgd2ViS2l0U25h
cHNob3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMoV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCmluZGV4IDIwNzM5ZTVhZGIwYjc3YWZlYjMxMDU4MWViOTZkN2UzYTc4MDJiNzAuLjJi
MThlOTkyNzRkMzI3OGNjYzIyODYxNTYyNWIzM2ViYzVkYWExNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMDcsNyAr
MzA3LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBs
YXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICoKICAgICByZXN1bHRSZWN0LnNldExvY2F0
aW9uKHsgfSk7CiAKICAgICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBi
aXRtYXBDb25maWd1cmF0aW9uOwotICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJh
dGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDI1N2E3NDRmOTRjMjk2ZTAwNTczMWE3ODhiY2NlZTA1ZWYwMjg3
MGEuLjYxNWIzZGUyMDBhMTZhZDA2YTM4Y2U4YmJmZGIyNmI3M2NiNjZhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjg5NywxNCArNjg5NywxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1aW50MzJfdCBtYXRjaENvdQogICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJpbmdN
YXRjaGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdl
SGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoY29udGVudEltYWdlSGFuZGxlKTsKLSAgICBpZiAoIWJpdG1hcCkg
eworICAgIGF1dG8gaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUo
Y29udGVudEltYWdlSGFuZGxlKSk7CisgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ZpbmRNYXRjaGVz
Q2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpLCBtYXRjaEluZGV4KTsKKyAgICBtX2ZpbmRN
YXRjaGVzQ2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIGltYWdlLmdldCgp
LCBtYXRjaEluZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRJbmRpY2F0b3Io
Y29uc3QgVGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIHVpbnQ2NF90IGxpZmV0aW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwN2ZjZDkyOGRhMDkx
ZDQ2ZmEwNjM4MzE1MGY1OWUzOTNhMGFmYTg4Li44MzZhZmQzYTJjYmNhYWYyNjVkMzE3NjNmMTQw
N2ZjNTllN2IxNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2go
aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1h
dGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNhdGVGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KTsKLSAgICB2b2lkIGRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOworICAg
IHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdl
SGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAg
ICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZTI3NmQzZTJmNzY0MDk4NmMzOGZlYzQ5ZDNkYzk5YjFiYWVkYWZhMC4uNDU1
NjRkYjkzZGI4OTMxMWVlYjgzZjhiNTRmMzMwNjVmOTIyYjk1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQyLDcgKzI0Miw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmluZFN0cmluZyhTdHJpbmcg
c3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJfdCBtYXRj
aENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKICAgICBEaWRG
YWlsVG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCiAgICAgRGlkRmluZFN0cmluZ01hdGNoZXMo
U3RyaW5nIHN0cmluZywgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4gbWF0Y2hlcywg
aW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCi0gICAgRGlkR2V0SW1hZ2VGb3JGaW5k
TWF0Y2goV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUs
IHVpbnQzMl90IG1hdGNoSW5kZXgpCisgICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc3RydWN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCkKIAogICAgICMgUG9wdXBNZW51IG1lc3NhZ2VzCiAgICAgU2hvd1BvcHVwTWVu
dShXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIFZlY3RvcjxX
ZWJLaXQ6OldlYlBvcHVwSXRlbT4gaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgc3RydWN0
IFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA3MjA3NWZiYzg2MmMz
NGQwYzg2YjRhYzUzOGU0YzQ2Njk5Y2JlZTQyLi40YjllMzU5NTNiNmIzNzdlMWU5MDdhMTA2NzBh
ZTBjNjZmNDRiYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjk0LDExICsyOTQsMTUgQEAgLSAodm9pZClkaWRHZXRJbWFnZUZv
ck1hdGNoUmVzdWx0OihXZWJLaXQ6OldlYkltYWdlICopaW1hZ2UKICAgICBpZiAoX2ltYWdlUmVw
bHlDYWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpJ
bnRTaXplIHNpemUgPSBpbWFnZS0+Yml0bWFwKCkuc2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGlt
YWdlLT5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8gX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBp
bWFnZUNhbGxiYWNrID0gX2ltYWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgaW1h
Z2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdl
LT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKKyAgICBp
bWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CiB9CiAK
ICNwcmFnbWEgbWFyayAtIFdLVGV4dEZpbmRlck1hdGNoIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA3YWI2N2EzNDM3YTI4YTE5YmQ2NmU0NTU3YzNiNDc0
NTZjMWUyMTE1Li40OWRhY2Q2M2I1ZWI3ZTAxZmNhMzc1ODA1MzhmZTRkMmViNjdiMmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5k
bGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5k
bGUsIHsgfSksIDApOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgK
aW5kZXggYmY4YTQ3MDM4NWZjYTc0MGQ0NDM3NTZlYWE3ZjRkN2ZjNzlkMjY1Ni4uNmVjNTY4ZDA2
ZGIyOGVkNDA2MzFlMjc1MDJhNTAwYWQyODdkMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCi0KICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDUgKzQzLDMgQEAgdXNp
bmcgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gc3RkOjp2YXJpYW50PAogPjsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCmluZGV4IDU4MDIyOGFmODVmNzUz
ZTU4YmRmNWVmYzFkMDdkMWE2YWYwMzYzZmIuLmNkMmU5ZTNlMTRiOTgxMDY0ZTViODkwM2ViNDlm
ZDFmZDg5MmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogCkBAIC0zNCw3ICszMiw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIDogcHVi
bGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcgewogcHVibGljOgotICAgIHZp
cnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2Vu
ZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRXcml0ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNldEJhY2tlbmRIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBoYXNCYWNrZW5kSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTUyLDUgKzUxLDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlw
ZU5hbWUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggYTExNzA3MjQ5MGU1YzdhNzk1NGZi
YmU3OGY3MGY3OTM2ZWRjMmVkMS4uZWUxZDg2Njk2M2NjZDk5NmRiNzgxNGRkZTI1NTVlODJiMjY0
NWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKIAotI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlci5oPgpAQCAt
ODUsNyArODMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJh
dGlvbihwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMjYsMTAgKzEyNCwxMCBAQCBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZChjb25zdCBQYXJhbQogICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihyZXNvbHV0aW9uU2NhbGUoKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBj
b25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJv
dGVjdGlvbikgY29uc3QKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0g
ICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIG1fYml0bWFwLT5jcmVhdGVI
YW5kbGUoaGFuZGxlLCBwcm90ZWN0aW9uKTsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKQEAgLTE2NCw1ICsxNjIsMyBAQCB2b2lkIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oCmluZGV4IDIxZGQwZDg3NTBhZGUzMzI2N2QwOGU4ODA3MWQ1ZDVjZDMzMDg0
YmYuLmUzMWRiNzZiNjhhZjdiNjZhOWQ4MDViYmI2NTI5ZjljNzNkYmFjOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1
ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFj
a2VuZC5oPgpAQCAtNTUsOSArNTMsMTAgQEAgcHVibGljOgogICAgIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAqbV9jb250ZXh0OyB9Ci0gICAgCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5k
SGFuZGxlKCkgY29uc3QgZmluYWw7CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9iaXRtYXA7IH0KIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3Rv
cmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWw7CkBA
IC03Nyw1ICs3NiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcAppbmRleCAyNWI1YTQ1NTgyNTBlZTA2MDU2Yzg0M2ExN2MxMzgxOTYxNjlmM2E3Li4x
NmZhNmIyYTAwYWI5MWM4MTg5NmE0N2RjZjU4YWJjNWQ0NzE3NGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBzdGF0aWMgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdl
KE5hdGl2CiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAKLSAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlLnNpemUoKSwg
eyBpbWFnZS5jb2xvclNwYWNlKCkgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShpbWFnZS5zaXplKCksIHsgaW1hZ2UuY29sb3JTcGFjZSgpIH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDQwMTFj
YThlYTk5M2YzZWZhNDdmYmU4YmU2NjVjNzk5YTI3OWY5OGEuLmVhZTZmNzk1ZWQzZjkyNDY0MmM0
ZDg0OWI5YTk4YTlhNzY5NzU3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
UmVtb3RlSU9TdXJmYWNlQmFjCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJ
bWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihtX2hhbmRsZSkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDA5NDFiZmRhN2VlMDU4Yzk4ZjAzNTIyZDNhZTcz
Yzk1NzRhYzk5MjguLjIwZDhjNjBlMTEzNTZlOGIyZTA3ZDU4OWIwZDM5NmYyZjI0MTI0OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZDsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNr
ZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNy
ZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmNwcAppbmRleCA0MzI5YTFjOTE3MTM0OTQ3MTljMmJhYTZiZTE2NGUwNTdmNmI4MTYw
Li5hZWRlN2JlYTgyYTgwZTAwNjc3ZTU3NjljZDY1OTY0ZjliNDZkODZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5k
SGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbikgY29uc3QKIHsKICAgICByZXR1cm4gSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYmRiY2Q5OGYzN2VhOTQ5OGQwNzRhZjg2NzA4NzRi
ODE4MWMyNDg4OC4uYjE0NDI2ZTdmNDJkN2RhNTA1YmZmYWZhZjE0YTE3M2FmMjEwZDZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSYpOwog
Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25z
dCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRs
ZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gSW1hZ2VCdWZmZXJCYWNr
ZW5kU2hhcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tCmluZGV4IDI4MWQ4NjdkMTI2NDYyZWU2YTFiZDZlMjcyZmMyMGIy
NmJkNTA5ZTAuLjAyMWQ3MGZmM2EwM2I0NmQ3ZWQ3NTY5MDYzNTRjMGZhYjVjNzJiOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjksMTQgKzY5LDE4IEBAIC0gKENvY29hSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9w
dGlvbnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMgd2lkdGg6KE5TTnVtCiAgICAgaWYgKHdp
ZHRoKQogICAgICAgICBvcHRpb25hbFdpZHRoID0gd2lkdGguZmxvYXRWYWx1ZTsKIAotICAgIFJl
ZlB0cjxXZWJLaXQ6OldlYkltYWdlPiBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdl
KFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOworICAgIGF1dG8gaW1hZ2Ug
PSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShXZWJLaXQ6OnRvU25hcHNob3RPcHRpb25zKG9w
dGlvbnMpLCBvcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92ZXJmbG93LCBvcHRp
b25hbFdpZHRoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6RG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBu
aWw7CisKICNpZiBVU0UoQVBQS0lUKQotICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNp
emU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSBzaXplOk5TWmVyb1NpemVdKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKLSAgICByZXR1cm4g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCku
bWFrZUNHSW1hZ2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IDc1ZWY3YzJmNWMyMmY2MDgxMWI4
MDczYWNkNzM2NjEzMWI2N2YyZWQuLmE0YThlYTAxM2E1ZTM1ZjA2Y2NiYmY2ZmJjOWNiMDc5ODY0
MDA5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNzEsMTQgKzE3MSwxMiBAQCBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJl
Y3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBhaW50aQogICAgIGlmICgh
c25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8m
IGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CiAKLSAgICBncmFwaGljc0Nv
bnRleHQtPmNsZWFyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3Ip
OwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOwotICAgIGdy
YXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUp
KTsKKyAgICBncmFwaGljc0NvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3Rvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsK
KyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7
CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rp
b24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQpAQCAtMTkyLDcgKzE5MCw3
IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1l
VmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAKICAgICBhdXRvIG9sZFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVo
YXZpb3IocGFpbnRCZWhhdmlvcik7Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25h
cHNob3QoKmdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNl
bGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHBhaW50aW5nUmVjdCwg
c2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAg
ICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAg
cmV0dXJuIHNuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZS5jcHAKaW5kZXggOTc1MjlmYzFhYzM5MjI5MzVkOTk1YzJmYzVjYWQ5NGIxYmI2NTJmMi4u
YWI2YjI2YzkzZDUzZWVmMmZmMWNiNjU4MGEzM2RhODhiNzM2M2E1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM5LDIwICsx
MzksMTcgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5k
ZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9y
ZVNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2Nh
bGVGYWN0b3IpOwogCi0gICAgYXV0byBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwotICAgIGlmICghYmFja2luZ1N0
b3JlKQorICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNp
emUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMgfCBTbmFwc2hvdE9wdGlv
bnNTaGFyZWFibGUpKTsKKyAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYmFja2luZ1N0b3JlLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zY2FsZShzY2FsZUZhY3Rvcik7CiAKICAgICBwYWludFJlY3QubW92ZShmcmFt
ZVZpZXctPmZyYW1lUmVjdCgpLngoKSwgZnJhbWVWaWV3LT5mcmFtZVJlY3QoKS55KCkpOwogICAg
IHBhaW50UmVjdC5tb3ZlQnkoLWZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CiAKLSAgICBn
cmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWlu
dEJlaGF2aW9yKCk7CiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3Ig
PSBvbGRQYWludEJlaGF2aW9yOwpAQCAtMTY1LDEyICsxNjIsMTIgQEAgUmVmUHRyPFdlYkltYWdl
PiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9u
cyBvcHRpb24KICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7
CiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludCgq
Z3JhcGhpY3NDb250ZXh0LCBwYWludFJlY3QpOworICAgIGZyYW1lVmlldy0+cGFpbnQoZ3JhcGhp
Y3NDb250ZXh0LCBwYWludFJlY3QpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihv
bGRQYWludEJlaGF2aW9yKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
b2xkU2VsZWN0aW9uKTsKIAotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9y
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIFN0cmluZyBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjp0ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZGY4ZTU1ZGYxZjBhZTgzNjAzZmE4ZGQz
YTkxYTBlZmFkMzg1YWI3ZS4uYmQyNjBmOTNmYmJmYWJmMDZkNjI2YTA3MjdiNzRkZjY5N2ViOTJi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTczLDEz
ICsxNzMsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
OmltYWdlKCkgY29uc3QKICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxC
aXRtYXBJbWFnZT4oKmltYWdlKTsKICAgICBJbnRTaXplIHNpemUoYml0bWFwSW1hZ2Uuc2l6ZSgp
KTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBzdGF0aWNfY2Fz
dDxJbWFnZU9wdGlvbnM+KDApKTsKLQotICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBFWElG
IHJvdGF0aW9uLgotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgp
LmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAg
IGlmICghd2ViSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2UoYml0bWFwSW1hZ2UsIHt7IH0sIHNpemV9KTsKKyAgICAvLyBGSVhN
RTogbmVlZCB0byBoYW5kbGUgRVhJRiByb3RhdGlvbi4KKyAgICBhdXRvJiBncmFwaGljc0NvbnRl
eHQgPSB3ZWJJbWFnZS0+Y29udGV4dCgpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2Uo
Yml0bWFwSW1hZ2UsIHsgeyB9LCBzaXplIH0pOwogCiAgICAgcmV0dXJuIHdlYkltYWdlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggMGFmYzAxNzJjOWIzYzhlMjc5NjU4NTk4M2M1NTVjZmIyMmFlYzliYi4uYjE1NzlhMjBk
NGQ4ZmQyMmI1ZTgwMTg2YWJiMTk5MzU0YjI0ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xOTkyLDcgKzE5OTIsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRT
aXplIGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2Fs
ZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gY29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVC
aXRtYXBVdGlsaXRpZXMuY3BwCmluZGV4IDEyMDI2M2Q2NWQ2MWY1OTFlNWYxZjY3ZmQ0ZmU4YmY1
M2VmZmMzMzAuLjgzMWYxOGI0NjQwZTU4MGIzN2E0MTU5MjUwNWZlZmFkYTAwYTljZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVC
aXRtYXBVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYg
cmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgICAgIGlmICghc25hcHNob3RJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29sb3JT
cGFjZUZvckJpdG1hcCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoc25hcHNob3RSZWN0LnNpemUoKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRt
YXApIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAK
QEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxl
Qml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICAgICAgaWYgKGlt
YWdlU2l6ZS5pc0VtcHR5KCkgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMSB8fCBpbWFnZVNpemUu
aGVpZ2h0KCkgPD0gMSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgV1RG
TW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0
bWFwKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4geyB9Owog
CkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVh
YmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8g
bmVlZCB3aWRlIGdhbXV0LgotICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBXVEZNb3ZlKGNvbG9yU3Bh
Y2VGb3JCaXRtYXApIH0pOworICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRt
YXApIH0pOwogICAgIGlmICghc2hhcmVkQml0bWFwKQogICAgICAgICByZXR1cm4geyB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE4ZGE4MzdkMWQ2NzI1ZDZlODQ2ZTFkMmY2OWEzNjY0
YzNhNTlhYzMuLjQwMzMyZTM1YTczYmE1ZGUzYWNiMGE3ZDUyYmQyNzNlZjU2MGJkYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmluZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVj
dGlvbkRpc2FibGVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFj
dGlvbkRhdGEuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRSdWxlTGlzdFJlc3Vs
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC05MzgsOCArOTQwLDEyIEBAIFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6ZGlz
cGxheVJlZnJlc2hNb25pdG9yRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogUmVmUHRyPElt
YWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
IHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKLSAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zvcihw
dXJwb3NlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpIHsKKyAgICAg
ICAgaWYgKHB1cnBvc2UgIT0gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ29uY3JldGVJbWFn
ZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIFJlbmRlcmlu
Z1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LCB7IH0pOworICAgIH0KIAogICAgIHJldHVybiBt
X3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRl
eCA1ZTVjZWZmNzAxYzllNGFlMWQ4YmUzZTU4MTQwZThkYjE0M2ZjNDU2Li5lYjJhNjhkMzU1MDk2
YmEyZTBjN2Y2YmEzOTA3MzVhYjQ4NmYzYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0
ay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNv
bnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGltYWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0
LT5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5k
ZXggZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNC4uYjE0MzU4YzJjYzI5
NjA0YTUwMjY1MjgxYzhkMjE1MjQ2ZWQ4MjBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtNjgsNyArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgeyBz
Y3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CisgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2Uo
ZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAppbmRleCBlZTA3
MTNmMDJhODc3YzBiNzY0M2Q2MjkyZWM1OTg2ZGQyNGQzYzdjLi43YTA2MzZkNGQ0OTNhOTVlMmQ0
NGFkZWJhNGI2NTFjMjc4ZTBkZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCkBA
IC03Niw4ICs3Niw4IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIFBsCiAgICAgaW50IGJhY2tpbmdT
dG9yZVdpZHRoID0gc3RkOjptYXgocGFnZUNvb3JkaW5hdGVzLndpZHRoKCkgLSBtX3BvcHVwQ2xp
ZW50LT5jbGllbnRJbnNldExlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0UmlnaHQo
KSwgcG9wdXBXaWR0aCk7CiAKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUoYmFja2luZ1N0
b3JlV2lkdGgsIChpdGVtQ291bnQgKiBkYXRhLm1faXRlbUhlaWdodCkpOwotICAgIGRhdGEubV9u
b3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKKyAgICBkYXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEubV9zZWxlY3RlZEJhY2tp
bmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBub3RTZWxlY3RlZEJhY2tp
bmdTdG9yZUNvbnRleHQgPSBkYXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IHNl
bGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dCA9IGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9yZS0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggZjlhMTFj
NjUyODg4OGIxMzJjNzIwN2E4ZjNhNWRiYmM5NTgzZDI3Yi4uOGQ3MWMwYTk1Y2E4YmYxNjgyZDkx
NjI0NDlmYTNmMWFmNTE5NjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtODIwLDcgKzgy
MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwbGF5KFVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUo
KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
Yml0bWFwU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGJpdG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCmluZGV4IDFkNjQzYjZiNDI4OGQwOGUwMzhjNDYyNWQwNTQ5ZGU2OGFmMmFhNzcuLjdl
NWRkZGVkZWJlYWI4MDY4MjQyOThkZGE5N2VmZmNjNDBjN2M2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLUGFn
ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYklt
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAg
LTMxOCwyMCArMzE5LDE4IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmdldEltYWdlRm9yRmluZE1h
dGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdKTsKIAotICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IHNlbGVjdGlvblNuYXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3Jl
RnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKTsKKyAgICBhdXRvIHNlbGVj
dGlvblNuYXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2Vs
ZWN0aW9uU25hcHNob3QoKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
b2xkU2VsZWN0aW9uKTsKIAogICAgIGlmICghc2VsZWN0aW9uU25hcHNob3QpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBzZWxlY3Rp
b25TbmFwc2hvdC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Ci0KKyAgICBhdXRvIGhhbmRsZSA9IHNl
bGVjdGlvblNuYXBzaG90LT5jcmVhdGVIYW5kbGUoKTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goaGFuZGxlLCBtYXRjaEluZGV4KSk7Cisg
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldEltYWdlRm9y
RmluZE1hdGNoKHNlbGVjdGlvblNuYXBzaG90LT5wYXJhbWV0ZXJzKCksIGhhbmRsZSwgbWF0Y2hJ
bmRleCkpOwogfQogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpzZWxlY3RGaW5kTWF0Y2godWludDMy
X3QgbWF0Y2hJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAppbmRleCA3MWVkMTg4MmZiNDI0ZDIxYzY3OWQxM2JiN2I1MWI0ZWM4NGExNjVlLi5l
OWE5MTRjM2U1MDZjMTg4OGNjNWM3YjYyM2I0ODgxMDU0YTAyMTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViSW1h
Z2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC04NTksMjcgKzg2MCwxMyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZAogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CitSZWZQdHI8V2ViSW1h
Z2U+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiB7CiAgICAgYXV0
byBzbmFwc2hvdCA9IHNuYXBzaG90U2VsZWN0aW9uKCpjb3JlRnJhbWUoKSwgeyB7IFdlYkNvcmU6
OlNuYXBzaG90RmxhZ3M6OkZvcmNlQmxhY2tUZXh0IH0sIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmJhY2tlbmRTaXplKCksIHsgfSk7Ci0g
ICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHByb3ZpZGluZyBhIHdheSB0byB1c2Ugc3VicGl4
ZWwgYW50aWFsaWFzaW5nIGZvciB0aGUgc25hcHNob3QKLSAgICAvLyBpZiB3ZSdyZSBjb21wb3Np
dGluZyB0aGlzIGltYWdlIG9udG8gYSBzb2xpZCBjb2xvciAoZS5nLiB0aGUgbW9kZXJuIGZpbmQg
aW5kaWNhdG9yIHN0eWxlKS4KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBz
aG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9
IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShzbmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7
Ci0KLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3Q7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVh
dGUoc25hcHNob3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApp
bmRleCA2YzNhOTQ4NmU0NDM0MmFmY2I1NGRhNzZhMjJjYTNkMDNjMjE2ZWM1Li5kMzlmYjI1YjZi
ZmFjMzZhZjlhNjdmYmM2Y2VmZjQ5MWUwOThlNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNs
YXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOworY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0IEZyYW1lSW5m
b0RhdGE7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKQEAgLTE4NCw3ICsxODUsNyBAQCBw
dWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0
ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkltYWdlPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlvbklEIGZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25J
REFmdGVyRGlkQ29tbWl0TG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMYXllclRyZWVUcmFu
c2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQ3MDU2OGJkYmZiNjU2ODBjNDgxODYyMjZmYmY1
YTJiOTE2YjZiN2IuLjk1YjA3MWVhMDQwZTNlOWEwZjg4Y2IzMjE1ZWMyYTE3NjJjOTE5YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjM2
LDcgKzI2MzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBzaG90
UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcAogCiAgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1h
cCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsK
IH0KQEAgLTI3MDUsMTQgKzI3MDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUKICAgICB9
CiB9CiAKLXN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gc25hcHNob3RPcHRp
b25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdl
JiBwYWdlKQorc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzbmFwc2hvdENvbG9yU3BhY2Uo
U25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAgIGlm
IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIHJldHVybiBzY3JlZW5Db2xvclNwYWNl
KHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgotICAgIHJldHVy
biBjb25maWd1cmF0aW9uOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KTsKIH0KIAogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKQEAgLTI3MjUsMTQgKzI3MjQsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQK
ICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNU
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0
aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVh
dGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNu
YXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMs
ICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsICpncmFwaGljc0NvbnRleHQpOworICAgIGF1dG8mIGdy
YXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgcGFpbnRTbmFwc2hvdEF0
U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCBn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwogfQpAQCAtMjc2MywyNyAr
Mjc2MCwyNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3Jl
OjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0aQogICAgICAgICBzbmFwc2hvdFNpemUg
PSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWln
aHQpOwogICAgIH0KIAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBz
aG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90
T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGF1dG8g
c25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25z
VG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhp
cyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90
LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBncmFwaGljc0NvbnRl
eHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91YmxlIGRldmlj
ZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IpOwogICAgICAgICBzY2FsZUZhY3RvciAvPSBkZXZpY2VTY2FsZUZhY3RvcjsK
ICAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOworICAg
IGdyYXBoaWNzQ29udGV4dC5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgQ29sb3Igc2F2ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBm
cmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Qs
IEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5h
dGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0Nv
bnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZp
ZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dy
b3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVU
b0RyYXcobnVsbHB0cik7CkBAIC01NjczLDM3ICs1NjY5LDMzIEBAIHZvaWQgV2ViUGFnZTo6ZHJh
d1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mCiAgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkp
OwogI2VuZGlmCiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0gICAgICAgIGlmICghYml0bWFwKSB7CisgICAg
ICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIEltYWdlT3B0aW9uc1NoYXJl
YWJsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksICZtX3BhZ2UtPmNocm9tZSgpLmNs
aWVudCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAg
ICAgICAgfQotICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7Ci0gICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAg
ICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VTaXplLndp
ZHRoKCkpIC8gcmVjdC53aWR0aCgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2Fs
ZShwcmludGluZ1NjYWxlKTsKKworICAgICAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBpbWFn
ZS0+Y29udGV4dCgpOworICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNjYWxlKHByaW50aW5nU2NhbGUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
ICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1
bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VCghbV9wcmludENvbnRleHQpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGRyYXdQREZEb2N1
bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBwZGZEb2N1bWVudC5nZXQo
KSwgcHJpbnRJbmZvLCByZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgqZ3JhcGhp
Y3NDb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKFJldGFpblB0cjxQ
REZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29y
ZUZyYW1lKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7CisgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
ICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBk
ZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3QpOworICAgICAgICB9IGVsc2UKKyNlbmRp
ZgorICAgICAgICB7CisgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KGdyYXBo
aWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KLQotICAgICAgICBpbWFnZSA9IFdlYkltYWdl
OjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotCiAgICAgaWYgKGltYWdlKQotICAgICAg
ICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUo
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA0ZTJlOWJhODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1
ZDAwMzU3YWFiLi42MTc1YTY5MzFkZjk3MTdlZTY2ZmY0MTNiZGM5ZTdjODA2NDM2ZTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMzAzNyw4ICszMDM3LDggQEAgc3RhdGljIHZvaWQgdGV4dEludGVyYWN0aW9uUG9zaXRp
b25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBIVE1MSW5wdXRFbGUKIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFdlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShF
bGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbWFnZSBjb250YWlu
cyBhdCBtb3N0IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28gYmlnLgotICAgIGlm
IChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBz
aG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCi0gICAgICAgIHJldHVybiAmc25hcHNo
b3QtPmJpdG1hcCgpOworICAgIGlmIChhdXRvIHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1l
bnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCisgICAgICAgIHJldHVy
biBzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
MWE3ODlmOTlkODlmNjdmODAyMTVmZDE2NjE1MDljZTMzNGRiMTg2MS4uYmQ1NThiMjgyYjY1ZTEz
ZTQyNGZhZmQ3MjUyMTVmYzk1NTViMDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NzYsOSArNTc2LDEzIEBAIHZv
aWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYg
KCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
LT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1
cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKICAgICBsYXllci0+c2V0
UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSkpOwotICAgIGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1h
cCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCku
Y29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBp
bWFnZSkKQEAgLTU5MSw4ICs1OTUsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFu
Z0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1cm47
CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAg
IGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGxheWVyLT5zZXRTaXpl
KGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAo
X19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAg
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVIZWFk
ZXJBbmRGb290ZXJMYXllcnNGb3JEZXZpY2VTY2FsZUNoYW5nZShmbG9hdCBzY2FsZUZhY3RvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNzdlMDNkYjEyN2E1
YWFhZDQxMDkxNmEyZDUxNjhhNGIxMjRhNzMwLi5mZGE4OTExOGEyNTcxZjY2ZDg4YmY0MzNjZTNh
NWExNTQ1YjUwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0yMTQ3LDYgKzIxNDcsOCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRl
cmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgICAgIHJldHVybiBtX3VzZUdQ
VVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmc7CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpE
T006CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpMYXllckJhY2tpbmc6CisgICAgY2FzZSBS
ZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDoKKyAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OlNo
YXJlYWJsZVNuYXBzaG90OgogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yRE9NUmVu
ZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZzoKICAgICAg
ICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458114</attachid>
            <date>2022-04-21 22:41:32 -0700</date>
            <delta_ts>2022-04-24 22:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220421224131.patch</filename>
            <type>text/plain</type>
            <size>97763</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OTEyMzU3NzI4Y2U3
ZjRlNzljMTI4MGNjNDQ1Y2ZjNTUxODIzYi4uNjRjZWJlM2IzZTFkOWI3MzBmNDc5YjBkZTExZDY2
YjM3Y2MyMDBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorCiAyMDIyLTA0LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkgbGVzcyBhbmQgbW9yZSBTb3J0ZWRBcnJheU1hcCAvIFNvcnRlZEFycmF5U2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDVjM2RjNjlkYTY0OWM5YWYwMmVkOGRlNDM4MWFiMmJhZGJlOGQyNmMuLjQx
ZDJiY2NmMzgyYTRkNjYzZTJiMjBkNGNkNjU5NzdlN2U3ZTFmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTI5IEBACisyMDIyLTA0LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1h
Z2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTUyNworICAgICAgICByZGFyOi8vOTExMTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJl
ZEltYWdlRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mvd2Mv
V0NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldDU2NlbmU6OnVwZGF0ZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFn
ZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAo
V0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9j
Zy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUNHSW1hZ2UpOgorICAgICAg
ICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERh
dGE6OnNldEltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
On5TaGFyZWFibGVCaXRtYXApOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpieXRlc1BlclJvdyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6aXNCYWNrZWRCeVNoYXJl
ZE1lbW9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1VzZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFn
ZTo6V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpwYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW1hZ2U6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFn
ZTo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJp
dG1hcCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVIYW5kbGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6fldlYkltYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJp
dG1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXAgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgor
ICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFw
c2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAg
ICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0Ol0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVl
bnNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZzo6Yml0bWFwIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3Jl
YXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFj
ZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRs
ZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZS5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSByZW5kZXJlZElt
YWdlV2l0aE9wdGlvbnM6d2lkdGg6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVh
dGVTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRD
YWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29u
dmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3RO
b2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVt
b3RlUmVuZGVyaW5nRm9yKToKKwogMjAyMi0wNC0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV1BdIEFkZCB0ZWxlbWV0cnkgd2l0aCBiYWNr
dHJhY2UgZm9yIG5ldHdvcmsgcmVsYXRlZCBzeXN0ZW0gY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDljMGI4
Mjk3NzZmZjUwOWU2Ny4uZDc5MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyArODEs
OCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9jdW1l
bnQudXBkYXRlTGF5b3V0KCk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qg
c2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAg
ICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2VsZWN0
aW9uSGlnaGxpZ2h0aW5nKSkKQEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYg
aW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWlu
dFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWlsZihz
Y2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9y
LCBvcHRpb25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8gcHVy
cG9zZSA9IG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxlKSA/
IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9zZTo6
U25hcHNob3Q7CisgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1
bWVudC52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRv
dygpIDogbnVsbHB0cjsKKworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpLCBwdXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNwYWNl
LCBvcHRpb25zLnBpeGVsRm9ybWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQoKS50
cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICghY2xp
cFJlY3RzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5o
CmluZGV4IGU0YjlkMDA5YzcyNDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJjMmZm
ZDAyMTc3NzE4YTc3YzU1MzRlNjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lU25hcHNob3R0aW5nLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hvdEZs
YWdzIDogdWludDhfdCB7CiAgICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAx
IDw8IDQsCiAgICAgUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1LAog
ICAgIFBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVhYmxl
ID0gMSA8PCA3LAogfTsKIAogc3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5k
ZXggMWNhY2M4ZjY5NDU2ZGVjMjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uYTUyZjg4Y2ZjMTYw
MmZhNDNmYmFjOTQ4MGZjMGIyNzUzODcwMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUo
cGFyYW1ldGVycywgY3JlYXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1h
Z2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1
ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElt
YWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KQEAgLTUzLDYgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFj
a2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNr
ZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGU8
SW1hZ2VCdWZmZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndh
cmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25z
dCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0
ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBhNWZjNjE1ZmQxNDI3
OGZhNDA2YzM4NjVhNjQuLmJkMTBlYjZiZTAzNjRmZWUxZDNmNDI0ZjNkZmNhODEzZmUxOWE5M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0OwogICAgICAgICBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2U7CisKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0
ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKTsKQEAgLTE4Myw2ICsxODYsNDUgQEAgcHJvdGVjdGVk
OgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4gdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbG9naWNhbFNpemU7CisgICAg
ZW5jb2RlciA8PCByZXNvbHV0aW9uU2NhbGU7CisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwor
ICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBwdXJwb3NlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFj
a2VuZDo6UGFyYW1ldGVycz4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9naWNh
bFNpemU7CisgICAgZGVjb2RlciA+PiBsb2dpY2FsU2l6ZTsKKyAgICBpZiAoIWxvZ2ljYWxTaXpl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9h
dD4gcmVzb2x1dGlvblNjYWxlOworICAgIGRlY29kZXIgPj4gcmVzb2x1dGlvblNjYWxlOworICAg
IGlmICghcmVzb2x1dGlvblNjYWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAg
ZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVs
Rm9ybWF0OworICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1h
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nUHVycG9zZT4gcHVycG9zZTsKKyAgICBkZWNvZGVyID4+IHB1cnBvc2U7CisgICAgaWYg
KCFwdXJwb3NlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqbG9naWNhbFNpemUsICpyZXNvbHV0aW9uU2NhbGUsICpjb2xvclNwYWNlLCAqcGl4ZWxGb3Jt
YXQsICpwdXJwb3NlIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3Bh
Y2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmlu
Z01vZGUuaAppbmRleCBhMjE2YjBlZDE1ZjczZTYzODE2Y2NjZjBlNjZlNmFkMGE5MDkxZDIwLi40
YmJkMTc5NDcyNTNhMTkwYTJlNzU3NTg5MzM1MjllNzczNDg5NjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAg
ZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgQ2FudmFzLAogICAg
IERPTSwKICAgICBMYXllckJhY2tpbmcsCisgICAgU25hcHNob3QsCisgICAgU2hhcmVhYmxlU25h
cHNob3QsCiAgICAgTWVkaWFQYWludGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IDM5NDFjYzdjN2Y0MDBlNjc2NjhlNTRlYTNlOTJkOWM3NDRlYjdkZGIuLjIyOWRlNmI4ZmMx
MWY1MDAxYjBkNmE3ZGM3M2U4NzI0ZTY4ODhhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
QEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJl
YWJsZUJpdG1hcEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gaW1hZ2VCdWZmZXItPmJhY2tlbmRT
aXplKCk7CiAgICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZmZXItPnRydW5j
YXRlZExvZ2ljYWxTaXplKCk7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUocmVzdWx0U2l6ZSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgp
IH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHJlc3Vs
dFNpemUsIHsgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGUKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgICAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2VTaXplKSwg
eyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+
Y29sb3JTcGFjZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1Nj
ZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNw
cAppbmRleCA3ZTIyNTgyMjQ4YjcyNTZkZmU5NTI1ZWRmNzliMzkwMWIxYWFlZGU2Li43YTE2Njdm
N2ExMjNiMzg2NTk4MjI5ODhjY2M4MTEzYWEwZDU1ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAg
c3RkOjpvcHRpb25hbDxVcGRhdGVJbmZvPiBXQ1NjZW5lOjp1cGRhdGUoV0NVcGF0ZUluZm8mJiB1
cGRhdGUpCiAKICAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUluZm8+IHJlc3VsdDsKICAgICBpZiAo
bV91c2VzT2Zmc2NyZWVuUmVuZGVyaW5nKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUod2luZG93U2l6ZSwgeyB9KTsKKyAgICAgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh3aW5kb3dTaXplLCB7IH0pOwogICAg
ICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhl
aWdodCgpLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgYml0bWFwLT5kYXRhKCkpOwog
ICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgIGlmIChiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cAppbmRleCBmMjEwOTZhYWFjZDBkOWY3YzAwNmU5OGY3MzExYTQ3OTJmMDRjN2EzLi5kMTUwOGQ1
MmYwOTdjYzYxMjRmOWMxMjk5OWRlNzBmNzFhMTEzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgp
OwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IHBsYXllci0+Y29sb3JTcGFjZSgpIH0pOworICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IHBsYXllci0+Y29sb3JTcGFjZSgpIH0p
OwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCBjOGNjNWFh
OGZjYjk0ODIwYmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi4zOWZhMzkyMmNkZTg1ODRhNzljNTlj
YWY3NzA5M2IwZGFlZjAzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogY2Fpcm9fc3VyZmFj
ZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAg
ICAgLy8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdl
IGp1c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFn
ZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS0+Y3JlYXRlQ2Fpcm9TdXJmYWNl
KCkubGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJm
YWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93
aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsK
ICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwg
V2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0
byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAotICAgIGNhaXJvX3Qq
IGNyID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWly
b190KiBjciA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBj
YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJvX3Nl
dF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZjJkMzMzNDc4
YzJhZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2JlOTEyNGY0MzU5YjJlNDhmOGU0YmRh
YmQ4N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uo
V0tJbWFnZVJlZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5
KCkubGVha1JlZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+Y29weU5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
OworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlv
bnMgb3B0aW9ucykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVG
cm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQog
ICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKICAg
ICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2Vi
S2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAo
IWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7Ci0gICAgCi0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwor
CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsK
ICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCAwNDAzNjIwMDBm
NWYzNWQ0Y2I1NjcyZjVjN2Y3NmFhYTE4MjE3NjA1Li5mZTkxNWQxNzg3MDFjOTRiN2Y0ZTZjY2U1
YjZmNWI1ODNiMTlkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcApAQCAtODIsNyArODIsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRh
OjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9j
YQogdm9pZCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpzZXRJbWFnZShXZWJDb3JlOjpJbWFnZSog
aW1hZ2UpCiB7CiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5kaW5nIHN0cmF0ZWd5
IGZvciBTaGFyZWFibGVCaXRtYXAuCi0gICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7IH0pOworICAg
IG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFn
ZS0+c2l6ZSgpKSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IG1fY29udHJvbGxl
ZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRhNzBiZmZjOWMu
LmIzMjM3OGQ3MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAg
ICAgYXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRh
KG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0MzY5ODI1Yjc3
MmU4MTBkMjAwNTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZjMmEwMDM3YTIy
YmYxNjBjZTg2MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5k
U2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVC
YWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTk9URTog
VGhlc2UgYWxsIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRp
dmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJD
b3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IDI3ZTgyMGUyM2NmODhhMWJmNThhZjk4ZmM1YzBmYzJh
ODVkZWY4MzMuLmU0ZGVhZDVmODkzOGNlMTZjNjhjY2MwZTJkMjA5Y2Y1M2Q4MDI2ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSwyMCArOTksNiBAQCBib29s
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29uZmlndXJhdGlvbgogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pCi17Ci0gICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwot
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29uZmlndXJhdGlvbik7
Ci0gICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxlQml0bWFwTWFs
bG9jOjp0cnlNYWxsb2MobnVtQnl0ZXMpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwg
Y29uZmlndXJhdGlvbiwgZGF0YSkpOwotfQotCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pOwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29u
ZmlndXJhdGlvbik7CkBAIC0xMjMsMTMgKzEwOSwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBD
bwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24s
IHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFw
KHNpemUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKIHsKLSAgICBBU1NFUlQo
c2hhcmVkTWVtb3J5KTsKLQogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KTsKICAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRp
b24pOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCkBAIC0xMzksNyArMTIzLDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNv
bmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkp
OwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShj
b25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24p
CkBAIC0xNDgsMTMgKzEzMiwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtbwogICAgIGlmICgh
c2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVh
dGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRN
ZW1vcnkpKTsKKyAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2NvbmZp
Z3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQmFja2VkQnlTaGFy
ZWRNZW1vcnkoKSk7Ci0KICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFu
ZGxlLm1faGFuZGxlLCBwcm90ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGhh
bmRsZS5tX3NpemUgPSBtX3NpemU7CkBAIC0xNjIsMzQgKzE0NCwxNiBAQCBib29sIFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24gcHJvdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJl
YWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24sIHZvaWQqIGRhdGEpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fY29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKQotICAgICwgbV9kYXRhKGRhdGEpCi17Ci19Ci0KLVNoYXJlYWJsZUJp
dG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorU2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAg
ICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCi0g
ICAgLCBtX3NoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkpCi0gICAgLCBtX2RhdGEobnVsbHB0cikK
KyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKIHsKIH0KIAotU2hh
cmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKLXsKLSAgICBpZiAoIWlzQmFja2VkQnlT
aGFyZWRNZW1vcnkoKSkKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwTWFsbG9jOjpmcmVlKG1fZGF0
YSk7Ci19Ci0KIHZvaWQqIFNoYXJlYWJsZUJpdG1hcDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5
LT5kYXRhKCk7Ci0KLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICByZXR1cm4gbV9kYXRhOworICAg
IHJldHVybiBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwogfQogCiBDaGVja2VkVWludDMyIFNoYXJl
YWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA0YTA3NDAwMTczNWRmODY0ZjRmNGJlMWY5
ZTc2NTUyNDAzZWMzZjU0Li5jYTNkODQ0YmRhZWNiMDM2MDI1N2Q4YjgwNmRlYzhiZDk4ZGU3ZDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDE0ICs3OSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRlQnl0ZXNQZXJS
b3coV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYpOwogICAgIHN0YXRpYyBD
aGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYp
OwogCi0gICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQg
bWVtb3J5LgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwotCiAgICAgLy8gQ3JlYXRlIGEgc2hh
cmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5v
dGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOworICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIENvbmZpZ3VyYXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBm
cm9tIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJh
dGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUg
Yml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC05NCwxMSArOTEsMTIgQEAgcHVibGlj
OgogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUm
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkgY29uc3Q7CiAKLSAgICB+U2hhcmVhYmxlQml0bWFwKCk7Ci0KICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KFdl
YkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KIAorICAgIHZvaWQqIGRhdGEoKSBjb25zdDsK
KyAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1Bl
clJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KKwogICAgIC8vIENyZWF0ZSBhIGdyYXBo
aWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0
b3JlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCkBAIC0xMDYsOCArMTA0LDYgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UpOwogICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc291cmNlKTsKIAotICAgIGJvb2wgaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkTWVtb3J5OyB9Ci0KICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBiaXRtYXAg
aW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAg
ICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250
ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlPiBjcmVhdGVJbWFnZSgpOwpAQCAtMTMwLDggKzEyNiw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29uZmlndXJhdGlvbiwgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4p
OworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJh
dGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYpIGNvbnN0OwpAQCAt
MTQzLDExICsxMzgsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VTdXJmYWNl
RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCk7CiAjZW5kaWYKIAotcHVibGljOgotICAgIHZvaWQq
IGRhdGEoKSBjb25zdDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBj
YWxjdWxhdGVCeXRlc1BlclJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KLSAgICAKLXBy
aXZhdGU6CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNG
b3JTaXplKG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBtX3NpemU7CkBAIC0xNTcsMTEgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlbGVh
c2VCaXRtYXBDb250ZXh0RGF0YUNhbGxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIC8vIElm
IHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBv
aW50cyB0byB0aGUgc2hhcmVkIG1lbW9yeSBvYmplY3QuCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gbV9zaGFyZWRNZW1vcnk7Ci0KLSAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBi
YWNrZWQgYnkgZmFzdE1hbGxvY2VkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhlIGRhdGEuCi0g
ICAgdm9pZCogbV9kYXRhIHsgbnVsbHB0ciB9OworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hh
cmVkTWVtb3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2Vy
RGF0YS5jcHAKaW5kZXggZTE5NDA3MzcyODY4NTJkMDIzYWE5YWExOTE0YWNkMDBkMzI2MWE3NS4u
N2ZmYTlkYWYyNzQxNWE3MjZjZTQ0YTlkMzQ2ZTVkNTY3MjAzNGZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1VzZXJEYXRhLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMTEsOSArMjExLDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkKICAgICBjYXNlIEFQ
STo6T2JqZWN0OjpUeXBlOjpJbWFnZTogewogICAgICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19j
YXN0PGNvbnN0IFdlYkltYWdlJj4ob2JqZWN0KTsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIEFTU0VSVChpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5
U2hhcmVkTWVtb3J5KCkpOwotICAgICAgICBpZiAoIWltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlT
aGFyZWRNZW1vcnkoKSB8fCAhaW1hZ2UuYml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSkpIHsK
KyAgICAgICAgYXV0byBoYW5kbGUgPSBpbWFnZS5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgaWYg
KGhhbmRsZS5pc051bGwoKSkgewogICAgICAgICAgICAgLy8gSW5pdGlhbCBmYWxzZSBpbmRpY2F0
ZXMgbm8gYWxsb2NhdGVkIGJpdG1hcCBvciBpcyBub3Qgc2hhcmVhYmxlLgogICAgICAgICAgICAg
ZW5jb2RlciA8PCBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIxLDYgKzIyMCw3IEBA
IHZvaWQgVXNlckRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6
T2JqZWN0JiBvYmplY3QpCiAKICAgICAgICAgLy8gSW5pdGlhbCB0cnVlIGluZGljYXRlcyBhIGJp
dG1hcCB3YXMgYWxsb2NhdGVkIGFuZCBpcyBzaGFyZWFibGUuCiAgICAgICAgIGVuY29kZXIgPDwg
dHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBpbWFnZS5wYXJhbWV0ZXJzKCk7CiAgICAgICAgIGVu
Y29kZXIgPDwgaGFuZGxlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zOTAsMTUgKzM5MCwx
NiBAQCBib29sIFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
QVBJOjpPYmplY3Q+JiByZXN1bHQpCiAgICAgICAgIGlmICghZGlkRW5jb2RlKQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzPiBwYXJhbXRlcnM7CisgICAg
ICAgIGRlY29kZXIgPj4gcGFyYW10ZXJzOworICAgICAgICBpZiAoIXBhcmFtdGVycykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGhhbmRsZSk7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZGxlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBX
ZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmVzdWx0
ID0gV2ViSW1hZ2U6OmNyZWF0ZSgqcGFyYW10ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IGY3NDhiZGYzNzM2MTgwODNlYWRjOTViZjhhNmJiMzJiNjM3YjBi
YWQuLjZhYTBlYzg0ZmE2MTQxZWU5ODVjY2NlYTIzMTQ0OTc2ZGYxMDk2YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxNyw3ICsx
MDE3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1h
Z2UoRW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNp
emUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogICAgIGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDJlZmUyNjA3Mjc3YTRiOGFkZjJmODA3NzA3ZmQ3NzMxZWQyMmU1NzQuLmI3NDhhYWIw
MDBjYjJhM2VmMDdlZmM2MWRmZmZjM2Y1ZWM3MDg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcyLDYgKzg3Miw4IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZT4gewogICAgICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsCiAgICAgICAgIFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2U6OkRPTSwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6
TGF5ZXJCYWNraW5nLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hv
dCwKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3Qs
CiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAgICA+
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdl
MzViMzVkYjBjMWU0MTg1MjJjMDU4Li44NjY0NTg5NTg4MmU4NThjOTQ5MWQyZDU2MDY2MmViODdj
ODQ0YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwxMTEgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJv
bWVDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KKwog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFdl
YkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9u
cyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIENocm9tZUNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBXZWJJ
bWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Ci19CisgICAgaWYgKGNsaWVudCkgewor
ICAgICAgICBhdXRvIHB1cnBvc2UgPSAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJsZSkg
PyBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCA6IFJlbmRlcmluZ1B1cnBvc2U6
OlNuYXBzaG90OworICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcHVycG9zZSwgMSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KIAotUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFn
ZTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRp
b25zLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGJpdG1hcENvbmZpZ3Vy
YXRpb24pCi17CiAgICAgaWYgKG9wdGlvbnMgJiBJbWFnZU9wdGlvbnNTaGFyZWFibGUpIHsKLSAg
ICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXpl
LCBiaXRtYXBDb25maWd1cmF0aW9uKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisgICAgICAgIGF1
dG8gYnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCwgeyB9KTsKKyAgICAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4g
V2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmlndXJh
dGlvbik7Ci0gICAgaWYgKCFiaXRtYXApCisKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsIDEsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwo
KSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8gYmFja2VuZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CisgICAg
aWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBhdXRvIGJ1
ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPjo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCkpOworICAgIGlmICghYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6
OmNyZWF0ZShSZWY8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkltYWdlKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitXZWJJbWFnZTo6V2ViSW1h
Z2UoUmVmPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKK3sKIH0KIAotUmVmPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFJlZjxTaGFyZWFi
bGVCaXRtYXA+JiYgYml0bWFwKQorSW50U2l6ZSBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShiaXRtYXApKSk7CisgICAg
cmV0dXJuIG1fYnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2Uo
UmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXApCi0gICAgOiBtX2JpdG1hcChXVEZNb3ZlKGJp
dG1hcCkpCitjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIFdlYkltYWdlOjpw
YXJhbWV0ZXJzKCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9idWZmZXItPnBhcmFtZXRlcnMoKTsK
IH0KIAotV2ViSW1hZ2U6On5XZWJJbWFnZSgpCitHcmFwaGljc0NvbnRleHQmIFdlYkltYWdlOjpj
b250ZXh0KCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9idWZmZXItPmNvbnRleHQoKTsKIH0KIAot
Y29uc3QgSW50U2l6ZSYgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
KSBjb25zdAogewotICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOworICAgIHJldHVybiBtX2J1
ZmZlci0+Y29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7Cit9CisKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFdlYkltYWdlOjpiaXRtYXAoKSBjb25zdAoreworICAgIGF1dG8qIGJhY2tlbmQg
PSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tlbmQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3RfY2FzdDxJbWFnZUJ1ZmZlciY+KCpt
X2J1ZmZlci5wdHIoKSkuZmx1c2hEcmF3aW5nQ29udGV4dCgpOworCisgICAgYXV0byogc2hhcmlu
ZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICBpZiAoIWlzPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigq
c2hhcmluZykuYml0bWFwKCk7Cit9CisKK1NoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIFdlYkltYWdl
OjpjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0
Cit7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
OworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0X2Nh
c3Q8SW1hZ2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsK
KworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAg
aWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYmFja2VuZEhhbmRsZSA9IGRvd25jYXN0PEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jcmVhdGVCYWNrZW5kSGFuZGxl
KHByb3RlY3Rpb24pOworCisgICAgaWYgKGF1dG8gaGFuZGxlID0gc3RkOjpnZXRfaWY8U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGU+KCZiYWNrZW5kSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoKmhhbmRsZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCmluZGV4IDIyZjM4NmY5ZDI5YTVkZjU3NDM4ZmJhYjQ3
OGJiZjg2ZmUxY2QxMDUuLjFmOGQ4YTI5MTU0M2FjOGQwMTcwYWY2NmUzMmM2MDA1M2FkYThlZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTUgQEAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2hyb21lQ2xpZW50
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRT
aXplOworY2xhc3MgTmF0aXZlSW1hZ2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAs
MjAgKzQ1LDI0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbWFnZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBJbWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24mKTsKLSAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFNo
YXJlYWJsZUJpdG1hcD4mJik7Ci0gICAgfldlYkltYWdlKCk7Ci0gICAgCi0gICAgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFdlYkNvcmU6OkNocm9tZUNsaWVudCogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik7CisgICAgc3RhdGlj
IFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAg
ICBTaGFyZWFibGVCaXRtYXAmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9Ci0g
ICAgY29uc3QgU2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1h
cC5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIGNvbnN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNv
bnN0OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CisK
KyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3Jl
OjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Q7Cisg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3Q7CisKKyAgICBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIFdlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOworICAgIFdlYkltYWdlKFJlZjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBSZWY8U2hhcmVhYmxlQml0bWFwPiBtX2Jp
dG1hcDsKKyAgICBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcAppbmRleCBiZjNkZDA2MDNmNWY3YjI4ZGMxNGExNzI0ZDgwMDMxYTFlZmFi
M2Q5Li4wNDVkZWJiODExZGQzODUzMTc2NzcyNGE0NGY1MTZhOWQ1MDlmMDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2Uo
RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAg
ICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBJbnRQ
b2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
ZWQ5YTk2MGY1YThkZTZiYmNkZjMwZmU4OWUxYTFmMGM0MTFhOTEzZi4uNDczZGVjZmIzYTk0Yzgy
YmRjYTZiNTZhNTA4NDJmNjUxNWQ4YWFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQzODAsNyArNDM4MCw3IEBAIHZv
aWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX3Rh
c2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUNh
aXJvU3VyZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4o
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KSk7CisgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2su
Z2V0KCksIHdlYkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigp
LCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kp
KTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCB3ZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1Nu
YXBzaG90T3B0aW9ucyhXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjA3
MzllNWFkYjBiNzdhZmViMzEwNTgxZWI5NmQ3ZTNhNzgwMmI3MC4uMmIxOGU5OTI3NGQzMjc4Y2Nj
MjI4NjE1NjI1YjMzZWJjNWRhYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMg
UmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0
bWFwKENvY29hSW1hZ2UgKgogICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKIAogICAg
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRp
b247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBhdXRv
IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocmVzdWx0UmVjdC5zaXpl
KCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggMjU3YTc0NGY5NGMyOTZlMDA1NzMxYTc4OGJjY2VlMDVlZjAyODcwYS4uNjE1YjNkZTIwMGEx
NmFkMDZhMzhjZThiYmZkYjI2YjczY2I2NmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC02ODk3LDE0ICs2ODk3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1h
dGNoQ291CiAgICAgbV9maW5kQ2xpZW50LT5kaWRDb3VudFN0cmluZ01hdGNoZXModGhpcywgc3Ry
aW5nLCBtYXRjaENvdW50KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9y
RmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5k
bGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VG
b3JGaW5kTWF0Y2goY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90
IG1hdGNoSW5kZXgpCiB7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShjb250ZW50SW1hZ2VIYW5kbGUpOwotICAgIGlmICghYml0bWFwKSB7CisgICAgYXV0byBpbWFn
ZSA9IFdlYkltYWdlOjpjcmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShjb250ZW50SW1hZ2VIYW5k
bGUpKTsKKyAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldElt
YWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5v
bk51bGwoKSkucHRyKCksIG1hdGNoSW5kZXgpOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRp
ZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgaW1hZ2UuZ2V0KCksIG1hdGNoSW5kZXgpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0SW5kaWNh
dG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgdWludDY0X3QgbGlmZXRpbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA3ZmNkOTI4ZGEwOTFkNDZmYTA2MzgzMTUwZjU5
ZTM5M2EwYWZhODguLjgzNmFmZDNhMmNiY2FhZjI2NWQzMTc2M2YxNDA3ZmM1OWU3YjE0NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjE5LDcgKzEyMTksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5k
ZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAg
dm9pZCBpbmRpY2F0ZUZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwotICAgIHZvaWQgZGlk
R2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRl
bnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCk7CisgICAgdm9pZCBkaWRHZXRJbWFn
ZUZvckZpbmRNYXRjaChjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRl
cnMmLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90
IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgaGlkZUZpbmRJ
bmRpY2F0b3IoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBP
cHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMjc2
ZDNlMmY3NjQwOTg2YzM4ZmVjNDlkM2RjOTliMWJhZWRhZmEwLi40NTU2NGRiOTNkYjg5MzExZWVi
ODNmOGI1NGYzMzA2NWY5MjJiOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNDIsNyArMjQyLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiBtYXRjaFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3Qg
bWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKQogICAgIERpZEZhaWxUb0ZpbmRTdHJpbmco
U3RyaW5nIHN0cmluZykKICAgICBEaWRGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBW
ZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiBtYXRjaGVzLCBpbnQzMl90IGZpcnN0SW5k
ZXhBZnRlclNlbGVjdGlvbikKLSAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJ
bmRleCkKKyAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogCiAg
ICAgIyBQb3B1cE1lbnUgbWVzc2FnZXMKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJ
dGVtPiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9y
bVBvcHVwTWVudURhdGEgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDcyMDc1ZmJjODYyYzM0ZDBjODZiNGFjNTM4ZTRj
NDY2OTljYmVlNDIuLjRiOWUzNTk1M2I2YjM3N2UxZTkwN2ExMDY3MGFlMGM2NmY0NGJhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOTQsMTEgKzI5NCwxNSBAQCAtICh2b2lkKWRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6KFdl
YktpdDo6V2ViSW1hZ2UgKilpbWFnZQogICAgIGlmIChfaW1hZ2VSZXBseUNhbGxiYWNrcy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IGlt
YWdlLT5iaXRtYXAoKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gaW1hZ2UtPnNpemUoKTsKICAg
ICBzaXplLnNjYWxlKDEgLyBfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlQ2FsbGJhY2sgPSBf
aW1hZ2VSZXBseUNhbGxiYWNrcy50YWtlRmlyc3QoKTsKLSAgICBpbWFnZUNhbGxiYWNrKGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VD
R0ltYWdlKCkuZ2V0KCkgc2l6ZTpzaXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJhY2soYWRv
cHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0g
V0tUZXh0RmluZGVyTWF0Y2ggY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCmluZGV4IDdhYjY3YTM0MzdhMjhhMTliZDY2ZTQ1NTdjM2I0NzQ1NmMxZTIxMTUuLjQ5ZGFj
ZDYzYjVlYjdlMDFmY2EzNzU4MDUzOGZlNGQyZWI2N2IyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlLT5iaXRt
YXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAppbmRleCBiZjhhNDcwMzg1
ZmNhNzQwZDQ0Mzc1NmVhYTdmNGQ3ZmM3OWQyNjU2Li42ZWM1NjhkMDZkYjI4ZWQ0MDYzMWUyNzUw
MmE1MDBhZDI4N2QxNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
ICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNSArNDMsMyBAQCB1c2luZyBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgPSBzdGQ6OnZhcmlhbnQ8CiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGVTaGFyaW5nLmgKaW5kZXggNTgwMjI4YWY4NWY3NTNlNThiZGY1ZWZjMWQwN2Qx
YTZhZjAzNjNmYi4uY2QyZTllM2UxNGI5ODEwNjRlNWI4OTAzZWI0OWZkMWZkODkyZjZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg+CiAKQEAgLTM0LDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kU2hhcmluZyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhh
bmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgeyB9CiAgICAgdmlydHVhbCBib29sIGhh
c0JhY2tlbmRIYW5kbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTIsNSArNTEsMyBA
QCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JV
RkZFUl9CQUNLRU5EX1NIQVJJTkcoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nLCBpc0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAppbmRleCBhMTE3MDcyNDkwZTVjN2E3OTU0ZmJiZTc4ZjcwZjc5MzZlZGMy
ZWQxLi5lZTFkODY2OTYzY2NkOTk2ZGI3ODE0ZGRlMjU1NWU4MmIyNjQ1YjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oIgogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyLmg+CkBAIC04NSw3ICs4Myw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMp
KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTEyNiwxMCArMTI0LDEwIEBAIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0
IFBhcmFtCiAgICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25T
Y2FsZSgpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVC
YWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAog
ewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX2JpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CisgICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHBy
b3RlY3Rpb24pOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZSho
YW5kbGUpKTsKIH0KIApAQCAtMTY0LDUgKzE2MiwzIEBAIHZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxC
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5k
ZXggMjFkZDBkODc1MGFkZTMzMjY3ZDA4ZTg4MDcxZDVkNWNkMzMwODRiZi4uZTMxZGI3NmI2OGFm
N2I2NmE5ZDgwNWJiYjY1MjlmOWM3M2RiYWM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CkBAIC01NSw5
ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKIAogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2NvbnRleHQ7IH0K
LSAgICAKICAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgZmluYWw7Ci0g
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBm
aW5hbDsKKworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2JpdG1hcDsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9
IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTc3LDUgKzc2LDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDI1
YjVhNDU1ODI1MGVlMDYwNTZjODQzYTE3YzEzODE5NjE2OWYzYTcuLjE2ZmE2YjJhMDBhYjkxYzgx
ODk2YTQ3ZGNmNThhYmM1ZDQ3MTc0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYKIHsKICAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IGltYWdlLmNvbG9yU3Bh
Y2UoKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdl
LnNpemUoKSwgeyBpbWFnZS5jb2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0N2Zi
ZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3Njk3
NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5k
UmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNr
ZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4uMjBk
OGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
OwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7
Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25z
dCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRs
ZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBi
YWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJlMTY0ZTA1N2Y2YjgxNjAuLmFlZGU3YmVhODJhODBl
MDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFt
ZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5k
SGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5iMTQ0
MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRl
bnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBm
aW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUu
bW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIxZDcw
ZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNCArNjks
MTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hv
dE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgpCiAgICAgICAgIG9w
dGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6V2Vi
SW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBz
aG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVP
dmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxlLT5y
ZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMg
JiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7
CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVTRShB
UFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSku
YXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNaZXJv
U2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdl
dCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0
b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMxYjY3
ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCArMTcx
LDEyIEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZy
YW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90
LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0
ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBoaWNz
Q29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBn
cmFwaGljc0NvbnRleHQuc2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29u
dGV4dC50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1lVmll
dzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6
SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1
ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJlZlB0
cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRS
ZWN0JiBwYWludGkKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFp
bnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2
aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3ND
b250ZXh0LmdldCgpLCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZp
ZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVj
dGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNl
dFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA5
NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNlZWYy
ZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVj
dC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAg
ICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJh
Y2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0byBz
bmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RPcHRp
b25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkpOwor
ICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBn
cmFwaGljc0NvbnRleHQgPSBiYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwot
ICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBoaWNz
Q29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxl
KHNjYWxlRmFjdG9yKTsKIAogICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVSZWN0
KCkueCgpLCBmcmFtZVZpZXctPmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1vdmVC
eSgtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+
dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRy
YW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVo
YXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAg
ICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZp
b3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIGZy
YW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQs
IHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50
UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3Ip
OwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwog
Ci0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU6OnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcAppbmRleCBkZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVhYjdl
Li5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAog
ICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1h
Z2UpOwogICAgIEludFNpemUgc2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8gd2Vi
SW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4o
MCkpOwotCi0gICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0gICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRs
ZSBFWElGIHJvdGF0aW9uLgorICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5j
b250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwgeyB7
IH0sIHNpemUgfSk7CiAKICAgICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAwYWZjMDE3MmM5
YjNjOGUyNzk2NTg1OTgzYzU1NWNmYjIyYWVjOWJiLi5iMTU3OWEyMGQ0ZDhmZDIyYjVlODAxODZh
YmIxOTkzNTRiMjRkOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE5OTIsNyArMTk5Miw3IEBAIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3Jl
U2l6ZSA9IHNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVG
YWN0b3IpOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5j
cHAKaW5kZXggMTIwMjYzZDY1ZDYxZjU5MWU1ZjFmNjdmZDRmZThiZjUzZWZmYzMzMC4uODMxZjE4
YjQ2NDBlNTgwYjM3YTQxNTkyNTA1ZmVmYWRhMDBhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJs
ZUJpdG1hcFV0aWxpdGllcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3Jl
YXRlU2gKICAgICAgICAgaWYgKCFzbmFwc2hvdEltYWdlKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKHNuYXBzaG90UmVjdC5zaXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9
KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hv
dFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgICAg
IGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtODMsNyArODMsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1h
Z2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHko
KSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAxIHx8IGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAxKQog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VG
b3JCaXRtYXApIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOwogICAgICAg
ICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTExNCw3ICsxMTQs
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVy
SW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5
IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQu
Ci0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7
CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXpl
KGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgaWYg
KCFzaGFyZWRCaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggMThkYTgzN2QxZDY3MjVkNmU4NDZlMWQyZjY5YTM2NjRjM2E1OWFjMy4uNDAzMzJl
MzVhNzNiYTVkZTNhY2IwYTdkNTJiZDI3M2VmNTYwYmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgpAQCAt
NjcsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yQ2hvb3Nlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
YXRhYmFzZVRyYWNrZXIuaD4KQEAgLTkzOCw4ICs5NDAsMTIgQEAgV2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50OjpkaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWMKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewotICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkgeworICAgICAgICBpZiAocHVycG9zZSAh
PSBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIHJldHVybiBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVh
YmxlU25hcHNob3QsIHsgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJp
bmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDVlNWNlZmY3MDFjOWU0
YWUxZDhiZTNlNTgxNDBlOGRiMTQzZmM0NTYuLmViMmE2OGQzNTUwOTZiYTJlMGM3ZjZiYTM5MDcz
NWFiNDg2ZjNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNDksNyAr
NDksNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFj
ZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7
IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXpl
LCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlMWUwZTYxMTJhMmRl
ZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0Li5iMTQzNThjMmNjMjk2MDRhNTAyNjUyODFjOGQy
MTUyNDZlZDgyMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBj
b25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2Uo
ZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUo
KS52aWV3KCkpIH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlMDcxM2YwMmE4NzdjMGI3NjQz
ZDYyOTJlYzU5ODZkZDI0ZDNjN2MuLjdhMDYzNmQ0ZDQ5M2E5NWUyZDQ0YWRlYmE0YjY1MWMyNzhl
MGRlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTc2LDggKzc2LDggQEAg
dm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHBhZ2VDb29yZGluYXRlcywgUGwKICAgICBpbnQgYmFja2luZ1N0b3JlV2lkdGggPSBzdGQ6
Om1heChwYWdlQ29vcmRpbmF0ZXMud2lkdGgoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0
TGVmdCgpIC0gbV9wb3B1cENsaWVudC0+Y2xpZW50SW5zZXRSaWdodCgpLCBwb3B1cFdpZHRoKTsK
IAogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZShiYWNraW5nU3RvcmVXaWR0aCwgKGl0ZW1D
b3VudCAqIGRhdGEubV9pdGVtSGVpZ2h0KSk7Ci0gICAgZGF0YS5tX25vdFNlbGVjdGVkQmFja2lu
Z1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKLSAgICBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEubV9u
b3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdT
dG9yZVNpemUsIHsgfSk7CisgICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dCA9
IGRhdGEubV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gc2VsZWN0ZWRCYWNraW5nU3Rv
cmVDb250ZXh0ID0gZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBmOWExMWM2NTI4ODg4YjEzMmM3MjA3
YThmM2E1ZGJiYzk1ODNkMjdiLi44ZDcxYzBhOTVjYThiZjE2ODJkOTE2MjQ0OWZhM2YxYWY1MTk2
NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBEcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0p
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYml0bWFwU2l6ZSwg
eyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMWQ2
NDNiNmI0Mjg4ZDA4ZTAzOGM0NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRlYmVhYjgwNjgy
NDI5OGRkYTk3ZWZmY2M0MGM3YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIwICszMTksMTgg
QEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0
Y2hJbmRleCkKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KG1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5j
cmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25hcHNob3QgPSBX
ZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgp
OwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwog
CiAgICAgaWYgKCFzZWxlY3Rpb25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBzaG90LT5jcmVh
dGVIYW5kbGUoaGFuZGxlKTsKLQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9uU25hcHNob3Qt
PmNyZWF0ZUhhbmRsZSgpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChoYW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc2VsZWN0
aW9uU25hcHNob3QtPnBhcmFtZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7CiB9CiAKIHZv
aWQgRmluZENvbnRyb2xsZXI6OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDcx
ZWQxODgyZmI0MjRkMjFjNjc5ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLjlhY2VjNjZiZWJkZDViZWQ1
MDNmYTM5ZjAxYWE4ZmMxZDQyZGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViQ2hy
b21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKQEAgLTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+
IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkCiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0
ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2ViRnJhbWU6OmNy
ZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBzaG90ID0gc25h
cHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6
Rm9yY2VCbGFja1RleHQgfSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSB9KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNv
cmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQsIFdl
YkNvcmU6OlNuYXBzaG90RmxhZ3M6OlNoYXJlYWJsZSB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0pOwogICAgIGlmICghc25hcHNob3QpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgpLCB7IH0pOwot
ICAgIGlmICghc2hhcmVkU25hcHNob3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBwcm92aWRpbmcgYSB3YXkgdG8gdXNlIHN1YnBp
eGVsIGFudGlhbGlhc2luZyBmb3IgdGhlIHNuYXBzaG90Ci0gICAgLy8gaWYgd2UncmUgY29tcG9z
aXRpbmcgdGhpcyBpbWFnZSBvbnRvIGEgc29saWQgY29sb3IgKGUuZy4gdGhlIG1vZGVybiBmaW5k
IGluZGljYXRvciBzdHlsZSkuCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFw
c2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+c2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9hdFBvaW50KCkp
OwotCi0gICAgcmV0dXJuIHNoYXJlZFNuYXBzaG90OworICAgIHJldHVybiBXZWJJbWFnZTo6Y3Jl
YXRlKHNuYXBzaG90LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgK
aW5kZXggNmMzYTk0ODZlNDQzNDJhZmNiNTRkYTc2YTIyY2EzZDAzYzIxNmVjNS4uZDM5ZmIyNWI2
YmZhYzM2YWY5YTY3ZmJjNmNlZmY0OTFlMDk4ZTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDsKK2NsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFtZUlu
Zm9EYXRhOwogc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CkBAIC0xODQsNyArMTg1LDcgQEAg
cHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHdlYkFyY2hpdmVEYXRhKEZyYW1lRmls
dGVyRnVuY3Rpb24sIHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OworICAgIFJlZlB0cjxX
ZWJJbWFnZT4gY3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25JRCBmaXJzdExheWVyVHJlZVRyYW5zYWN0aW9u
SURBZnRlckRpZENvbW1pdExvYWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGF5ZXJUcmVlVHJh
bnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0NzA1NjhiZGJmYjY1NjgwYzQ4MTg2MjI2ZmJm
NWEyYjkxNmI2YjdiLi45NWIwNzFlYTA0MGUzZTlhMGY4OGNiMzIxNWVjMmExNzYyYzkxOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjYz
Niw3ICsyNjM2LDcgQEAgdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hv
dFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3AKIAogICAgIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGltYWdlLT5iaXRt
YXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7
CiB9CkBAIC0yNzA1LDE0ICsyNzA1LDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0
U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplCiAgICAg
fQogfQogCi1zdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuYXBzaG90T3B0
aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV2ViUGFn
ZSYgcGFnZSkKK3N0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc25hcHNob3RDb2xvclNwYWNl
KFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQogewotICAgIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShDRykKICAgICBp
ZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAg
IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICByZXR1cm4gc2NyZWVuQ29sb3JTcGFj
ZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCk7CiB9CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMpCkBAIC0yNzI1LDE0ICsyNzI0LDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFn
ZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0
CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25z
VG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJh
dGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3Jl
YXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBz
bmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGll
bnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25z
LCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBhdXRvJiBn
cmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIHBhaW50U25hcHNob3RB
dFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmlldywg
Z3JhcGhpY3NDb250ZXh0KTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KQEAgLTI3NjMsMjcg
KzI3NjAsMjYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29y
ZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGkKICAgICAgICAgc25hcHNob3RTaXpl
ID0gSW50U2l6ZShzbmFwc2hvdFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVtSGVp
Z2h0KTsKICAgICB9CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFw
c2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hv
dE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBhdXRv
IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9u
c1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRo
aXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hv
dC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0Nv
bnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZ3JhcGhpY3NDb250
ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJsZSBkZXZp
Y2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKTsKICAgICAgICAgc2NhbGVGYWN0b3IgLz0gZGV2aWNlU2NhbGVGYWN0b3I7
CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKKyAg
ICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4
dC50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIENvbG9yIHNhdmVk
QmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
ZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVWaWV3
LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0
LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGlu
YXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3ND
b250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVW
aWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tn
cm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2Rl
VG9EcmF3KG51bGxwdHIpOwpAQCAtNTY3MywzNyArNTY2OSwzMyBAQCB2b2lkIFdlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZgogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygp
KTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwotICAgICAgICBpZiAoIWJpdG1hcCkgeworICAg
ICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBJbWFnZU9wdGlvbnNTaGFy
ZWFibGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCAmbV9wYWdlLT5jaHJvbWUoKS5j
bGllbnQoKSk7CisgICAgICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAg
ICAgICAgIH0KLSAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwotICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KSB7Ci0gICAgICAg
ICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53
aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2Nh
bGUocHJpbnRpbmdTY2FsZSk7CisKKyAgICAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gaW1h
Z2UtPmNvbnRleHQoKTsKKyAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0
PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zY2FsZShwcmludGluZ1NjYWxlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9j
dW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoIW1fcHJpbnRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
dHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBkcmF3UERGRG9j
dW1lbnQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9jdW1lbnQuZ2V0
KCksIHByaW50SW5mbywgcmVjdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoKmdyYXBo
aWNzQ29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChSZXRhaW5QdHI8
UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNv
cmVGcmFtZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7CisgICAgICAg
ICAgICBkcmF3UERGRG9jdW1lbnQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBw
ZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgfSBlbHNlCisjZW5k
aWYKKyAgICAgICAgeworICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChncmFw
aGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UgPSBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAjZW5kaWYKIAogICAg
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLQogICAgIGlmIChpbWFnZSkKLSAgICAg
ICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNGUyZTliYTgyNWIwYmFiYjQ5N2MwZDk5ZmM4OTVj
NWQwMDM1N2FhYi4uNjE3NWE2OTMxZGY5NzE3ZWU2NmZmNDEzYmRjOWU3YzgwNjQzNmU2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTMwMzcsOCArMzAzNyw4IEBAIHN0YXRpYyB2b2lkIHRleHRJbnRlcmFjdGlvblBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSFRNTElucHV0RWxlCiBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUo
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFp
bnMgYXQgbW9zdCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KLSAgICBp
ZiAoUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBTbmFw
c2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICByZXR1cm4gJnNuYXBz
aG90LT5iaXRtYXAoKTsKKyAgICBpZiAoYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVt
ZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQorICAgICAgICByZXR1
cm4gc25hcHNob3QtPmJpdG1hcCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDFhNzg5Zjk5ZDg5ZjY3ZjgwMjE1ZmQxNjYxNTA5Y2UzMzRkYjE4NjEuLmJkNTU4YjI4MmI2NWUx
M2U0MjRmYWZkNzI1MjE1ZmM5NTU1YjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTc2LDkgKzU3NiwxMyBAQCB2
b2lkIFdlYlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQogICAgIGlm
ICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFn
ZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbGF5ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgLWltYWdlLT5zaXplKCkuaGVpZ2h0KCkpKTsKLSAgICBs
YXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdlLT5iaXRt
YXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1MYXllcigp
LmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSog
aW1hZ2UpCkBAIC01OTEsOCArNTk1LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3Zlcmhh
bmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJu
OwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAg
ICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6
ZShpbWFnZS0+c2l6ZSgpKTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0g
KF9fYnJpZGdlIGlkKWltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAg
ICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSGVh
ZGVyQW5kRm9vdGVyTGF5ZXJzRm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2NhbGVGYWN0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDc3ZTAzZGIxMjdh
NWFhYWQ0MTA5MTZhMmQ1MTY4YTRiMTI0YTczMC4uZmRhODkxMThhMjU3MWY2NmQ4OGJmNDMzY2Uz
YTVhMTU0NWI1MGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMjE0Nyw2ICsyMTQ3LDggQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgICAgICByZXR1cm4gbV91c2VH
UFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6
RE9NOgogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nOgorICAgIGNhc2Ug
UmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpT
aGFyZWFibGVTbmFwc2hvdDoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJl
bmRlcmluZzsKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAgICAg
ICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDg5ODBiOTdlN2VmYzVhNmM1OGQ5MTUy
YzY2NDM2NzRkYjJkYWNkLi42MTMyNzYyN2E4MGZhOTkyYzdlNTI1MGY3MWI0ZDBiYTUyZDU5NDM5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjItMDQtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIFdlYkltYWdlIGJlIGJhY2tlZCBieSBJ
bWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5NTI3CisgICAgICAgIHJkYXI6Ly85MTExMzYyOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDQtMTggIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgQyBBUEkg
Y2xpZW50cyB0byBnZXQgdGhlIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIGluIHByb2Nlc3NE
aWRDcmFzaCBmdW5jdGlvbnMsIGFuZCB1c2UgaW4gV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCmluZGV4
IGMzNDk5OGIzZjdiM2MyZmMxZThiZjM0MGIwNmRlNDQ3NDEzNjEwMDUuLjJmNjE1YTViNWJkZjgx
NTk3MDkyNTk1ZTJjYjI1NGMyMDJiODE2NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTQ1Miw3ICs0NTIsNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKnRlc3RDYW52YXNQYWdlID0gQCI8Ym9keT4gXG4iCiAgICAgIjwvYm9k
eT4iOwogCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTMwMwotVEVTVChHUFVQcm9jZXNzLCBESVNBQkxFRF9DYW52YXNCYXNpY0NyYXNoSGFuZGxp
bmcpCitURVNUKEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKIHsKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwg
dHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JDYW52
YXNSZW5kZXJpbmdFbmFibGVkIikpOwpAQCAtNTE2LDEyICs1MTYsMTIgQEAgVEVTVChHUFVQcm9j
ZXNzLCBESVNBQkxFRF9DYW52YXNCYXNpY0NyYXNoSGFuZGxpbmcpCiAgICAgICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4
ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JT
cGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcp
KSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMpLCBjZ0ltYWdlLmdl
dCgpKTsKIAotICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoNTAs
IDUwLCB2aWV3V2lkdGhJblBpeGVscyk7CisgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0g
Z2V0UGl4ZWxJbmRleCg1MCwgMzAwLCB2aWV3V2lkdGhJblBpeGVscyk7CiAgICAgICAgIEVYUEVD
VF9FUSgyNTUsIHJnYmFbcGl4ZWxJbmRleF0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcmdiYVtw
aXhlbEluZGV4ICsgMV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcmdiYVtwaXhlbEluZGV4ICsg
Ml0pOwogCi0gICAgICAgIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDEwMCwgMTAwLCB2aWV3
V2lkdGhJblBpeGVscyk7CisgICAgICAgIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDEwMCwg
MzAwLCB2aWV3V2lkdGhJblBpeGVscyk7CiAgICAgICAgIEVYUEVDVF9FUSgyNTUsIHJnYmFbcGl4
ZWxJbmRleF0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcmdiYVtwaXhlbEluZGV4ICsgMV0pOwog
ICAgICAgICBFWFBFQ1RfRVEoMCwgcmdiYVtwaXhlbEluZGV4ICsgMl0pOwpAQCAtNTcxLDEyICs1
NzEsMTIgQEAgVEVTVChHUFVQcm9jZXNzLCBESVNBQkxFRF9DYW52YXNCYXNpY0NyYXNoSGFuZGxp
bmcpCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3
V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NH
Qml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0
SW5QaXhlbHMpLCBjZ0ltYWdlLmdldCgpKTsKIAotICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRl
eCA9IGdldFBpeGVsSW5kZXgoNTAsIDUwLCB2aWV3V2lkdGhJblBpeGVscyk7CisgICAgICAgIE5T
SW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg1MCwgMzAwLCB2aWV3V2lkdGhJblBp
eGVscyk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCByZ2JhW3BpeGVsSW5kZXhdKTsKICAgICAgICAg
RVhQRUNUX0VRKDI1NSwgcmdiYVtwaXhlbEluZGV4ICsgMV0pOwogICAgICAgICBFWFBFQ1RfRVEo
MCwgcmdiYVtwaXhlbEluZGV4ICsgMl0pOwogCi0gICAgICAgIHBpeGVsSW5kZXggPSBnZXRQaXhl
bEluZGV4KDEwMCwgMTAwLCB2aWV3V2lkdGhJblBpeGVscyk7CisgICAgICAgIHBpeGVsSW5kZXgg
PSBnZXRQaXhlbEluZGV4KDEwMCwgMzAwLCB2aWV3V2lkdGhJblBpeGVscyk7CiAgICAgICAgIEVY
UEVDVF9FUSgwLCByZ2JhW3BpeGVsSW5kZXhdKTsKICAgICAgICAgRVhQRUNUX0VRKDI1NSwgcmdi
YVtwaXhlbEluZGV4ICsgMV0pOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcmdiYVtwaXhlbEluZGV4
ICsgMl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458240</attachid>
            <date>2022-04-24 22:03:24 -0700</date>
            <delta_ts>2022-04-24 23:02:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220424220323.patch</filename>
            <type>text/plain</type>
            <size>102133</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlOWRkYjNmNzgxZDQ5
ZTBhY2ZiYTQyZWEzYzQ1YjJmYTRkOTVjZC4uYzU1OWRjNTBjNjQ5MWY1NmZkZjdiY2Y3YWY0ZGI3
NjlhN2ZlNDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTA0LTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dpbkNhaXJvXSBVbnJldmlld2Vk
IGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZTU1YTA2NzA4N2NhM2E2ZTNjNzExNzBjOWQ0MjU1ZGFi
NjZkMzdhLi5jYmRiNGI1MTBkOWViOGNmZWExODcxYzI5OGJiNGE5OWYwNTZjZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1hZ2UgYmUgYmFj
a2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL3djL1dDU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXQ1NjZW5lOjp1cGRhdGUp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKToK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdl
KToKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpzZXRJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0
ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmlzQmFj
a2VkQnlTaGFyZWRNZW1vcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Vc2Vy
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OldlYkltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6cGFyYW1ldGVycyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkltYWdlOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2ViSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
Yml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6
CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNu
YXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2Ny
ZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSByZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnM6d2lkdGg6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VG
b3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFy
ZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1
cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydERy
YWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNl
dFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNu
YXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNCAgRGFuaWVsIEtvbGVzYSAgPGRrb2xlc2FAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVc2UgdXRmLTggZm9yIHRleHQgbW9kZSBmaWxlcyBpbiBnZW5lcmF0
ZS1hdXRvbWF0aW9uLWF0b20ucHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDljMGI4Mjk3NzZmZjUwOWU2Ny4uZDc5
MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyArODEsOCBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRS
ZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7
CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVj
dGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucy5mbGFn
cy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKSkK
QEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVj
dFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0
aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3Bh
Y2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8gcHVycG9zZSA9IG9wdGlvbnMuZmxh
Z3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxlKSA/IFJlbmRlcmluZ1B1cnBvc2U6
OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q7CisgICAgYXV0
byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3Qo
KSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBw
dXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRpb25zLnBpeGVsRm9y
bWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVj
dC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICghY2xpcFJlY3RzLmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IGU0YjlkMDA5Yzcy
NDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJjMmZmZDAyMTc3NzE4YTc3YzU1MzRl
NjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgK
QEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hvdEZsYWdzIDogdWludDhfdCB7CiAg
ICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQsCiAgICAgUGFpbnRF
dmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1LAogICAgIFBhaW50V2l0aEludGVn
cmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVhYmxlID0gMSA8PCA3LAogfTsKIAog
c3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggMWNhY2M4ZjY5NDU2ZGVj
MjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uYTUyZjg4Y2ZjMTYwMmZhNDNmYmFjOTQ4MGZjMGIy
NzUzODcwMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY3JlYXRp
b25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFt
ZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTUzLDYgKzUzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZmZXJUeXBlPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5
cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tl
bmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBhNWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLmVh
ZDkxOGI3MWY2YjBjNWQ2OGEzYzViMDgwNzMzZDM4MjUyYzZmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgICAgICBSZW5k
ZXJpbmdQdXJwb3NlIHB1cnBvc2U7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2Rl
ciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKQEAgLTEyOCw2ICsxMzEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwgR0NH
TGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisjaWYgVVNFKENBSVJPKQorICAgIHZpcnR1YWwgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgaXNJblVzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAjaWYgSEFWRShJT1NVUkZBQ0UpCkBAIC0xODMsNiArMTkwLDQ1IEBAIHBy
b3RlY3RlZDoKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+IHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGxvZ2ljYWxTaXpl
OworICAgIGVuY29kZXIgPDwgcmVzb2x1dGlvblNjYWxlOworICAgIGVuY29kZXIgPDwgY29sb3JT
cGFjZTsKKyAgICBlbmNvZGVyIDw8IHBpeGVsRm9ybWF0OworICAgIGVuY29kZXIgPDwgcHVycG9z
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+
IGxvZ2ljYWxTaXplOworICAgIGRlY29kZXIgPj4gbG9naWNhbFNpemU7CisgICAgaWYgKCFsb2dp
Y2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHJlc29sdXRpb25TY2FsZTsKKyAgICBkZWNvZGVyID4+IHJlc29sdXRpb25TY2Fs
ZTsKKyAgICBpZiAoIXJlc29sdXRpb25TY2FsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsRm9ybWF0
PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAgIGlmICghcGl4
ZWxGb3JtYXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1B1cnBvc2U+IHB1cnBvc2U7CisgICAgZGVjb2RlciA+PiBwdXJwb3NlOwor
ICAgIGlmICghcHVycG9zZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7IHsgKmxvZ2ljYWxTaXplLCAqcmVzb2x1dGlvblNjYWxlLCAqY29sb3JTcGFjZSwgKnBp
eGVsRm9ybWF0LCAqcHVycG9zZSB9IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
bmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmgKaW5kZXggYTIxNmIwZWQxNWY3M2U2MzgxNmNjY2YwZTY2ZTZhZDBhOTA5
MWQyMC4uNGJiZDE3OTQ3MjUzYTE5MGEyZTc1NzU4OTMzNTI5ZTc3MzQ4OTY3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICsz
Miw4IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3QgewogICAgIENhbnZh
cywKICAgICBET00sCiAgICAgTGF5ZXJCYWNraW5nLAorICAgIFNuYXBzaG90LAorICAgIFNoYXJl
YWJsZVNuYXBzaG90LAogICAgIE1lZGlhUGFpbnRpbmcKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGVhMDQ5YTk5NTMyMTdjNjNiYmU3
ZDQxM2NkYTdkYWE5NzI2MjIwZjEuLmE2ZmQwZGE5NjUxNGNlNzViNGFlODRlZDZlYzY2MzZhOTE4
YTRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtNjUsMjEgKzY1LDIzIEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotUmVmUHRyPE5hdGl2ZUltYWdlPiBJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gY2xvbmVTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCYgc3VyZmFjZSkKIHsKLSAgICBz
d2l0Y2ggKGNvcHlCZWhhdmlvcikgewotICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZTogewotICAg
ICAgICBhdXRvIGNvcHkgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlS
T19GT1JNQVRfQVJHQjMyLAotICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aCht
X3N1cmZhY2UuZ2V0KCkpLAotICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
bV9zdXJmYWNlLmdldCgpKSkpOworICAgIGF1dG8gY29weSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKCZzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KCZzdXJm
YWNlKSkpOwogCi0gICAgICAgIGF1dG8gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoY29weS5n
ZXQoKSkpOwotICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJB
VE9SX1NPVVJDRSk7Ci0gICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwg
bV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKLSAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwor
ICAgIGF1dG8gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoY29weS5nZXQoKSkpOworICAgIGNh
aXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBj
YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksICZzdXJmYWNlLCAwLCAwKTsKKyAgICBj
YWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUoV1RGTW92ZShjb3B5KSk7Ci0gICAgfQorICAgIHJldHVybiBjb3B5OworfQorCitSZWZQdHI8
TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAoreworICAgIHN3aXRjaCAo
Y29weUJlaGF2aW9yKSB7CisgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgorICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjbG9uZVN1cmZhY2UoKm1fc3VyZmFjZSkpOwogCiAgICAg
Y2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUoUmVmUHRyIHsgbV9zdXJmYWNlLmdldCgpIH0pOwpAQCAtODksNiArOTEsMTEgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWly
b1N1cmZhY2UoKQoreworICAgIHJldHVybiBjbG9uZVN1cmZhY2UoKm1fc3VyZmFjZSk7Cit9CisK
IFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWly
b1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgK
aW5kZXggYjZiNTZkODY2YmRmMGNlNzM2YzdjZmUwYjEzYWFiNTVhMjZkOThjZC4uOTliYmM1ZjI0
ZjZkMzBhZTYwZmQyNmRhZjQ2MGE2NzFkMTZhYTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3Qgb3ZlcnJpZGU7CiAKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1
cmZhY2UoKSBvdmVycmlkZTsKKwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDEyNTk5OGZmNTVjZGUwMjNkZDg3MjkzZTJlYWIyNGZk
Njg0ZDdkZmEuLmQ1ZmExNTNhYzJhYjVmZTMyMzQ3YWQ0MjM4NzdlMTUzM2MwN2QyYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmll
ZElkZW50aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0g
aW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7CiAgICAgICAgIGF1dG8gcmVzdWx0U2l6ZSA9IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcyA/IGJhY2tlbmRTaXpl
IDogaW1hZ2VCdWZmZXItPnRydW5jYXRlZExvZ2ljYWxTaXplKCk7Ci0gICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0U2l6ZSwgeyBpbWFn
ZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKHJlc3VsdFNpemUsIHsgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9
KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CkBAIC0zMjgsNyAr
MzI4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9y
SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGUKICAgICAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgp
OwotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2VT
aXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy93Yy9XQ1NjZW5lLmNwcAppbmRleCA3ZTIyNTgyMjQ4YjcyNTZkZmU5NTI1ZWRmNzli
MzkwMWIxYWFlZGU2Li43YTE2NjdmN2ExMjNiMzg2NTk4MjI5ODhjY2M4MTEzYWEwZDU1ZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3Bw
CkBAIC0yMjcsNyArMjI3LDcgQEAgc3RkOjpvcHRpb25hbDxVcGRhdGVJbmZvPiBXQ1NjZW5lOjp1
cGRhdGUoV0NVcGF0ZUluZm8mJiB1cGRhdGUpCiAKICAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUlu
Zm8+IHJlc3VsdDsKICAgICBpZiAobV91c2VzT2Zmc2NyZWVuUmVuZGVyaW5nKSB7Ci0gICAgICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUod2luZG93U2l6
ZSwgeyB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh3
aW5kb3dTaXplLCB7IH0pOwogICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgd2luZG93U2l6ZS53
aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllU
RSwgYml0bWFwLT5kYXRhKCkpOwogICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5k
bGU7CiAgICAgICAgIGlmIChiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBmMjEwOTZhYWFjZDBkOWY3YzAwNmU5OGY3MzEx
YTQ3OTJmMDRjN2EzLi5kMTUwOGQ1MmYwOTdjYzYxMjRmOWMxMjk5OWRlNzBmNzFhMTEzOTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Yml0bWFw
SW1hZ2VGb3JDdXJyZW50VGltZQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBpbWFn
ZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IHBsYXllci0+Y29sb3JTcGFjZSgpIH0pOwor
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IHBs
YXllci0+Y29sb3JTcGFjZSgpIH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4g
eyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0lt
YWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcAppbmRleCBjOGNjNWFhOGZjYjk0ODIwYmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi41
MzAyZDU2NmY4MGY5M2NhZWJjYzcwYzA3MGE5OTMwZWRiMjE1MGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICsz
NiwxNiBAQAogY2Fpcm9fc3VyZmFjZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1h
Z2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgLy8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3Vn
aCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVy
biBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5jcmVhdGVD
YWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZy
b21DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBXS0ltYWdlT3B0aW9ucyBv
cHRpb25zKQogewogICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZSkpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUo
aW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Y29udGV4dCgpOwogCi0g
ICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OworICAgIGNhaXJvX3QqIGNyID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CiAg
ICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwogICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRl
eCBmMmQzMzM0NzhjMmFkYjlhMzE1NjBhZmUyYzBjODAyNDEzNDBjNWFlLi5jYmU5MTI0ZjQzNTli
MmU0OGY4ZTRiZGFiZDg3ZjI0MDJjMmJmNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsMTIgQEAgQ0dJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlUmVmKQogICAgIGlmICghd2ViSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHdlYkltYWdlLT5iaXRtYXAoKS5tYWtl
Q0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHdlYkltYWdl
LT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwogfQogCiBX
S0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBX
S0ltYWdlT3B0aW9ucyBvcHRpb25zKQpAQCAtNTMsMTQgKzU4LDEyIEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZS0+
c2l6ZSgpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1h
Z2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKIAotICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXpl
KTsKLSAgICAKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLSAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgcmVj
dCwgcmVjdCk7CisKKyAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KHJlY3QpOworICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJl
Y3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4
IDA0MDM2MjAwMGY1ZjM1ZDRjYjU2NzJmNWM3Zjc2YWFhMTgyMTc2MDUuLmZlOTE1ZDE3ODcwMWM5
NGI3ZjRlNmNjZTViNmY1YjU4M2IxOWQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC04Miw3ICs4Miw3IEBAIENvbnRleHRNZW51
Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIG1lbnVMb2NhCiB2b2lkIENvbnRleHRNZW51Q29udGV4dERhdGE6OnNldEltYWdlKFdlYkNv
cmU6OkltYWdlKiBpbWFnZSkKIHsKICAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRp
bmcgc3RyYXRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBtX2NvbnRyb2xsZWRJbWFnZSA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSks
IHsgfSk7CisgICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJ
bnRTaXplKGltYWdlLT5zaXplKCkpLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
bV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGlmICghZ3Jh
cGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNGFhM2U1ZDg5MmE4ODNkMDdjOGY4NTM4MzY5ODA5
ZGE3MGJmZmM5Yy4uYjMyMzc4ZDcxNTY2ZmVjMzY1OTAyZTFiZWY5OGY0OTgzYjI2ZWQ3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Nyw3ICs5Nyw3
IEBAIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVyCiB7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxl
KCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbikg
Y29uc3QKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5
RW5jb2RlZERhdGEobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIEFTU0VSVChk
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDJl
YTQzNjk4MjViNzcyZTgxMGQyMDA1MDM4MmVlODAzZWNjZTgwYzkuLmY0NWRmZTM0ZDExN2QxNGMx
NmMyYTAwMzdhMjJiZjE2MGNlODYyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpJbnRT
aXplIGJhY2tlbmRTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24g
PSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKICAg
ICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggMjdlODIwZTIzY2Y4OGExYmY1OGFm
OThmYzVjMGZjMmE4NWRlZjgzMy4uZTRkZWFkNWY4OTM4Y2UxNmM2OGNjYzBlMmQyMDljZjUzZDgw
MjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk5LDIwICs5
OSw2IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uCiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbikKLXsKLSAgICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbik7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25m
aWd1cmF0aW9uKTsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHZvaWQqIGRhdGEgPSAwOwotICAgIGRhdGEgPSBTaGFyZWFi
bGVCaXRtYXBNYWxsb2M6OnRyeU1hbGxvYyhudW1CeXRlcyk7Ci0gICAgaWYgKCFkYXRhKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJp
dG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBkYXRhKSk7Ci19Ci0KLVJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNp
emUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKICAgICB2YWxpZGF0ZUNvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6
ZShzaXplLCBjb25maWd1cmF0aW9uKTsKQEAgLTEyMywxMyArMTA5LDExIEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNp
emUmIHNpemUsIENvCiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29u
ZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFy
ZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25O
dWxsKCkpKTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogewot
ICAgIEFTU0VSVChzaGFyZWRNZW1vcnkpOwotCiAgICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pOwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwg
Y29uZmlndXJhdGlvbik7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKQEAgLTEz
OSw3ICsxMjMsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRt
YXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFy
ZWRNZW1vcnkpKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24g
cHJvdGVjdGlvbikKQEAgLTE0OCwxMyArMTMyLDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1v
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9jb25maWd1cmF0aW9uLCBXVEZN
b3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFu
ZGxlLm1fY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogfQog
CiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNC
YWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKLQogICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0
ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKQEAgLTE2MiwzNCArMTQ0LDE2IEBAIGJv
b2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiBwcm90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNoYXJlYWJsZUJp
dG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiwgdm9pZCogZGF0YSkKLSAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCi0gICAgLCBtX2RhdGEoZGF0YSkKLXsKLX0KLQot
U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXpl
LCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVk
TWVtb3J5KQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbikKLSAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKLSAgICAsIG1fZGF0
YShudWxscHRyKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFyZWRNZW1vcnkpKQog
ewogfQogCi1TaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAoKQotewotICAgIGlmICgh
aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQotICAgICAgICBTaGFyZWFibGVCaXRtYXBNYWxsb2M6
OmZyZWUobV9kYXRhKTsKLX0KLQogdm9pZCogU2hhcmVhYmxlQml0bWFwOjpkYXRhKCkgY29uc3QK
IHsKLSAgICBpZiAoaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQotICAgICAgICByZXR1cm4gbV9z
aGFyZWRNZW1vcnktPmRhdGEoKTsKLQotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIHJldHVybiBt
X2RhdGE7CisgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5kYXRhKCk7CiB9CiAKIENoZWNrZWRV
aW50MzIgU2hhcmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNpemUoV2ViQ29yZTo6SW50U2l6ZSBz
aXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDRhMDc0MDAxNzM1ZGY4
NjRmNGY0YmUxZjllNzY1NTI0MDNlYzNmNTQuLmNhM2Q4NDRiZGFlY2IwMzYwMjU3ZDhiODA2ZGVj
OGJkOThkZTdkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzksMTQgKzc5LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2hlY2tlZFVpbnQzMiBjYWxjdWxh
dGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBDb25maWd1cmF0aW9uJik7CiAg
ICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBDb25m
aWd1cmF0aW9uJik7CiAKLSAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNl
cyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbik7Ci0KICAgICAvLyBD
cmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcgbWVtb3J5IGNhbiBiZSBzaGFy
ZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZVNoYXJlYWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlv
bik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFi
bGUgYml0bWFwIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBzaGFyZWQgbWVtb3J5IGJsb2NrLgot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmKTsKIAogICAgIC8vIENyZWF0ZSBh
IHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhIGhhbmRsZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
biA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKQEAgLTk0LDExICs5MSwx
MiBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAotICAgIH5TaGFyZWFibGVCaXRtYXAoKTsKLQog
ICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6
OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgc2l6ZSgpKTsgfQogCisgICAgdm9pZCogZGF0
YSgpIGNvbnN0OworICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1
bGF0ZUJ5dGVzUGVyUm93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQorCiAgICAgLy8gQ3Jl
YXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhl
IGJhY2tpbmcgc3RvcmUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKQEAgLTEwNiw4ICsxMDQsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJj
ZSk7CiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2Fs
ZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzb3VyY2UpOwogCi0gICAgYm9vbCBpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1vcnk7IH0KLQogICAgIC8vIFRoaXMgY3JlYXRl
cyBhIGJpdG1hcCBpbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRt
YXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRo
YXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7CkBAIC0xMzAsOCArMTI2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCB2b2lkKik7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hh
cmVkTWVtb3J5Pik7CisgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmKTsKIAogI2lmIFVTRShDRykKICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZikg
Y29uc3Q7CkBAIC0xNDMsMTEgKzEzOCw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVs
ZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKTsKICNlbmRpZgogCi1wdWJsaWM6
Ci0gICAgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0
IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsg
fQotICAgIAotcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZTsKQEAgLTE1NywxMSArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcmVsZWFzZUJpdG1hcENvbnRleHREYXRhQ2FsbGVkIHsgZmFsc2UgfTsKICNlbmRpZgog
Ci0gICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBiaXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1v
cnksIHRoaXMgcG9pbnRzIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KLSAgICBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKLQotICAgIC8vIElmIHRoZSBzaGFyZWFibGUg
Yml0bWFwIGlzIGJhY2tlZCBieSBmYXN0TWFsbG9jZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0
aGUgZGF0YS4KLSAgICB2b2lkKiBtX2RhdGEgeyBudWxscHRyIH07CisgICAgUmVmPFNoYXJlZE1l
bW9yeT4gbV9zaGFyZWRNZW1vcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1VzZXJEYXRhLmNwcAppbmRleCBlMTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5MTRhY2Qw
MGQzMjYxYTc1Li43ZmZhOWRhZjI3NDE1YTcyNmNlNDRhOWQzNDZlNWQ1NjcyMDM0ZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJEYXRhOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQog
ICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlOiB7CiAgICAgICAgIGF1dG8mIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW1hZ2UmPihvYmplY3QpOwogCi0gICAgICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgQVNTRVJUKGltYWdlLmJpdG1hcCgp
LmlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCku
aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIHx8ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRsZSgpOwor
ICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsIGZh
bHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCiAg
ICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjEs
NiArMjIwLDcgQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkKIAogICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5k
aWNhdGVzIGEgYml0bWFwIHdhcyBhbGxvY2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOworICAgICAgICBlbmNvZGVyIDw8IGltYWdlLnBhcmFtZXRlcnMoKTsK
ICAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5
MCwxNSArMzkwLDE2IEBAIGJvb2wgVXNlckRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJlc3VsdCkKICAgICAgICAgaWYgKCFkaWRFbmNvZGUp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IHBhcmFt
dGVyczsKKyAgICAgICAgZGVjb2RlciA+PiBwYXJhbXRlcnM7CisgICAgICAgIGlmICghcGFyYW10
ZXJzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisg
ICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAg
ICAgICByZXN1bHQgPSBXZWJJbWFnZTo6Y3JlYXRlKCpwYXJhbXRlcnMsIFdURk1vdmUoaGFuZGxl
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZjc0OGJkZjM3MzYxODA4M2VhZGM5NWJmOGE2
YmIzMmI2MzdiMGJhZC4uNmFhMGVjODRmYTYxNDFlZTk4NWNjY2VhMjMxNDQ5NzZkZjEwOTZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xMDE3LDcgKzEwMTcsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogCiBzdGF0aWMgdm9p
ZCBlbmNvZGVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2UpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCB7IH0pOworICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2Uuc2l6
ZSgpKSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4dDsKICAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMmVmZTI2MDcyNzdhNGI4YWRmMmY4MDc3MDdmZDc3MzFlZDIyZTU3
NC4uYjc0OGFhYjAwMGNiMmEzZWYwN2VmYzYxZGZmZmMzZjVlYzcwODhjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NzIsNiArODcyLDgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3Nl
PiB7CiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywKICAgICAgICAg
V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJp
bmdQdXJwb3NlOjpMYXllckJhY2tpbmcsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBv
c2U6OlNuYXBzaG90LAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFi
bGVTbmFwc2hvdCwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWlu
dGluZwogICAgID47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1h
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCmluZGV4IDk5Yzk1M2Nm
YzIyODJlN2FlN2UzNWIzNWRiMGMxZTQxODUyMmMwNTguLmM0ZjY1MjQ0NjY4MjE3MWUwYjQ1M2Ix
MjUyMmI0NTI1NjZjMmQ1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNDUgKzI2
LDEyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Nocm9tZUNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1SZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SW1hZ2VPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgQ2hyb21lQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc2l6ZSwgb3B0aW9ucywgeyB9KTsKLX0KKyAgICBpZiAo
Y2xpZW50KSB7CisgICAgICAgIGF1dG8gcHVycG9zZSA9IChvcHRpb25zICYgSW1hZ2VPcHRpb25z
U2hhcmVhYmxlKSA/IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVy
aW5nUHVycG9zZTo6U25hcHNob3Q7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY2xpZW50LT5jcmVh
dGVJbWFnZUJ1ZmZlcihzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBwdXJwb3Nl
LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQogCi1SZWZQdHI8V2ViSW1h
Z2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgSW1hZ2VP
cHRpb25zIG9wdGlvbnMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgYml0
bWFwQ29uZmlndXJhdGlvbikKLXsKICAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJl
YWJsZSkgewotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgICAgICBpZiAoIWJpdG1hcCkK
KyAgICAgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LCB7IH0pOwor
ICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBiaXRt
YXBDb25maWd1cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKKworICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgMSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOworfQorCitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUo
Y29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRvIGJhY2tlbmQgPSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhh
bmRsZSkpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
CisgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKTsK
KyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBXZWJJ
bWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworUmVmPFdlYkltYWdl
PiBXZWJJbWFnZTo6Y3JlYXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1dlYklt
YWdlOjpXZWJJbWFnZShSZWY8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQorICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQoreworfQorCitJbnRTaXplIFdlYkltYWdlOjpzaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9idWZmZXItPmJhY2tlbmRTaXplKCk7Cit9CisKK2NvbnN0IEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgV2ViSW1hZ2U6OnBhcmFtZXRlcnMoKSBjb25zdAor
eworICAgIHJldHVybiBtX2J1ZmZlci0+cGFyYW1ldGVycygpOwogfQogCi1SZWY8V2ViSW1hZ2U+
IFdlYkltYWdlOjpjcmVhdGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXApCitHcmFwaGlj
c0NvbnRleHQmIFdlYkltYWdlOjpjb250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJpdG1hcCkpKTsKKyAgICByZXR1cm4gbV9idWZmZXIt
PmNvbnRleHQoKTsKIH0KIAotV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+
JiYgYml0bWFwKQotICAgIDogbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJl
aGF2aW9yKSBjb25zdAogeworICAgIHJldHVybiBtX2J1ZmZlci0+Y29weU5hdGl2ZUltYWdlKGNv
cHlCZWhhdmlvcik7Cit9CisKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkltYWdlOjpiaXRt
YXAoKSBjb25zdAoreworICAgIGF1dG8qIGJhY2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgY29uc3RfY2FzdDxJbWFnZUJ1ZmZlciY+KCptX2J1ZmZlci5wdHIoKSkuZmx1c2hEcmF3
aW5nQ29udGV4dCgpOworCisgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNo
YXJpbmcoKTsKKyAgICBpZiAoIWlzPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KHNo
YXJpbmcpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkb3duY2FzdDxJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuYml0bWFwKCk7CiB9CiAK
LVdlYkltYWdlOjp+V2ViSW1hZ2UoKQorI2lmIFVTRShDQUlSTykKK1JlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IFdlYkltYWdlOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQogeworICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gbV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAgIHJldHVy
biBiYWNrZW5kLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
KyNlbmRpZgogCi1jb25zdCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0CitTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgp
OworICAgIGF1dG8qIGJhY2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsK
KyAgICBpZiAoIWJhY2tlbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjb25zdF9jYXN0
PEltYWdlQnVmZmVyJj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisK
KyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlm
ICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIGJhY2tlbmRIYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZShw
cm90ZWN0aW9uKTsKKworICAgIGlmIChhdXRvIGhhbmRsZSA9IHN0ZDo6Z2V0X2lmPFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlPigmYmFja2VuZEhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEZNb3Zl
KCpoYW5kbGUpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSW1hZ2UuaAppbmRleCAyMmYzODZmOWQyOWE1ZGY1NzQzOGZiYWI0Nzhi
YmY4NmZlMWNkMTA1Li45N2U3OWJlZjJhM2JiNTM2Y2Y1YmNhODUzYzZlMDA4MDgwNmYxMGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENocm9tZUNsaWVudDsK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6
ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDIw
ICs0NSwyNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFnZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
SW1hZ2VPcHRpb25zKTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uJik7Ci0gICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFy
ZWFibGVCaXRtYXA+JiYpOwotICAgIH5XZWJJbWFnZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBXZWJDb3JlOjpDaHJvbWVDbGllbnQqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpOworICAgIHN0YXRpYyBS
ZWY8V2ViSW1hZ2U+IGNyZWF0ZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAg
U2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQotICAg
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAu
Z2V0KCk7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25z
dDsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OworCisg
ICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0OworICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0OworI2lmIFVTRShDQUlSTykK
KyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNlbmRp
ZgorCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAg
ICBXZWJJbWFnZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgUmVmPFNoYXJl
YWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggYmYzZGQwNjAzZjVmN2IyOGRjMTRh
MTcyNGQ4MDAzMWExZWZhYjNkOS4uMDQ1ZGViYjgxMWRkMzg1MzE3Njc3MjRhNDRmNTE2YTlkNTA5
ZjA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyB2
b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5z
aXplKCkpLCB7IH0pOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJ
bWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IGVkOWE5NjBmNWE4ZGU2YmJjZGYzMGZlODllMWExZjBjNDExYTkxM2Yu
LjQ4NDIzOTE2NWI2ZGQ1MzUyOTA2ZTc3NDFkMTdmZDUwOGI0NjViYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00Mzgw
LDcgKzQzODAsNyBAQCB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgdWludDY0X3QgY2FsbGJhY2tJRAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5i
aXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkpOworICAgIGdfdGFza19yZXR1
cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJJbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVh
a1JlZigpLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rl
c3Ryb3kpKTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCB3ZWJLaXRTbmFwc2hvdE9wdGlv
bnNUb1NuYXBzaG90T3B0aW9ucyhXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5k
ZXggMjA3MzllNWFkYjBiNzdhZmViMzEwNTgxZWI5NmQ3ZTNhNzgwMmI3MC4uMmIxOGU5OTI3NGQz
Mjc4Y2NjMjI4NjE1NjI1YjMzZWJjNWRhYTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMwNyw3ICszMDcsNyBAQCBz
dGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFn
ZVRvQml0bWFwKENvY29hSW1hZ2UgKgogICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsK
IAogICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZp
Z3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAg
ICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocmVzdWx0UmVj
dC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOwogICAgIGlmICghYml0bWFwKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMmVmOTAwZGY4ZTA2OGIyNjhhODliZDRjNDAyZjM2NGIyNDM0MTYwNC4uYTM3NTBh
NTI1ZjJhNTIxNGViYjZkOWIyODYxODYyODIyOTMzMzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02ODk2LDE0ICs2ODk2LDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQz
Ml90IG1hdGNoQ291CiAgICAgbV9maW5kQ2xpZW50LT5kaWRDb3VudFN0cmluZ01hdGNoZXModGhp
cywgc3RyaW5nLCBtYXRjaENvdW50KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldElt
YWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1h
Z2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0
SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVp
bnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5kbGUpOwotICAgIGlmICghYml0bWFwKSB7CisgICAgYXV0
byBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShjb250ZW50SW1h
Z2VIYW5kbGUpKTsKKyAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRp
ZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVs
ZWFzZU5vbk51bGwoKSkucHRyKCksIG1hdGNoSW5kZXgpOworICAgIG1fZmluZE1hdGNoZXNDbGll
bnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgaW1hZ2UuZ2V0KCksIG1hdGNoSW5k
ZXgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0
SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgdWludDY0X3QgbGlmZXRpbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQzYWQ0ZjAzM2UyMTllNzUxMGM2NjRl
ZGViNzI0NmVkNDc4MTY3ODEuLmFjNTllZmM0ODM4YWYwYWNkOTBhNzdjYmY2YWQ5ZWRjMjA0OTQ1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjIyLDcgKzEy
MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1h
dGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7
CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwotICAgIHZv
aWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCk7CisgICAgdm9pZCBkaWRH
ZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVp
bnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgaGlk
ZUZpbmRJbmRpY2F0b3IoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBlMjc2ZDNlMmY3NjQwOTg2YzM4ZmVjNDlkM2RjOTliMWJhZWRhZmEwLi40NTU2NGRiOTNkYjg5
MzExZWViODNmOGI1NGYzMzA2NWY5MjJiOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNDIsNyArMjQyLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBtYXRjaFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGlu
dDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKQogICAgIERpZEZhaWxUb0ZpbmRT
dHJpbmcoU3RyaW5nIHN0cmluZykKICAgICBEaWRGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3Ry
aW5nLCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiBtYXRjaGVzLCBpbnQzMl90IGZp
cnN0SW5kZXhBZnRlclNlbGVjdGlvbikKLSAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCkKKyAgICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChzdHJ1Y3QgV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4
KQogCiAgICAgIyBQb3B1cE1lbnUgbWVzc2FnZXMKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6
OkludFJlY3QgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2Vi
UG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQ
bGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDcyMDc1ZmJjODYyYzM0ZDBjODZiNGFj
NTM4ZTRjNDY2OTljYmVlNDIuLjRiOWUzNTk1M2I2YjM3N2UxZTkwN2ExMDY3MGFlMGM2NmY0NGJh
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOTQsMTEgKzI5NCwxNSBAQCAtICh2b2lkKWRpZEdldEltYWdlRm9yTWF0Y2hSZXN1
bHQ6KFdlYktpdDo6V2ViSW1hZ2UgKilpbWFnZQogICAgIGlmIChfaW1hZ2VSZXBseUNhbGxiYWNr
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkludFNpemUgc2l6
ZSA9IGltYWdlLT5iaXRtYXAoKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gaW1hZ2UtPnNpemUo
KTsKICAgICBzaXplLnNjYWxlKDEgLyBfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAg
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBp
ZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlQ2FsbGJh
Y2sgPSBfaW1hZ2VSZXBseUNhbGxiYWNrcy50YWtlRmlyc3QoKTsKLSAgICBpbWFnZUNhbGxiYWNr
KGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgp
Lm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpzaXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJh
Y2soYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBt
YXJrIC0gV0tUZXh0RmluZGVyTWF0Y2ggY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCmluZGV4IDdhYjY3YTM0MzdhMjhhMTliZDY2ZTQ1NTdjM2I0NzQ1NmMxZTIxMTUu
LjQ5ZGFjZDYzYjVlYjdlMDFmY2EzNzU4MDUzOGZlNGQyZWI2N2IyZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdl
LT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwg
MCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAppbmRleCBiZjhh
NDcwMzg1ZmNhNzQwZDQ0Mzc1NmVhYTdmNGQ3ZmM3OWQyNjU2Li42ZWM1NjhkMDZkYjI4ZWQ0MDYz
MWUyNzUwMmE1MDBhZDI4N2QxNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNSArNDMsMyBAQCB1c2luZyBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgPSBzdGQ6OnZhcmlhbnQ8CiA+OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKaW5kZXggNTgwMjI4YWY4NWY3NTNlNThiZGY1ZWZj
MWQwN2QxYTZhZjAzNjNmYi4uY2QyZTllM2UxNGI5ODEwNjRlNWI4OTAzZWI0OWZkMWZkODkyZjZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VCdWZmZXJCYWNrZW5kLmg+CiAKQEAgLTM0LDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgeyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc0JhY2tlbmRIYW5kbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTIsNSAr
NTEsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lN
QUdFX0JVRkZFUl9CQUNLRU5EX1NIQVJJTkcoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nLCBpc0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcoKSkKLQotI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBhMTE3MDcyNDkwZTVjN2E3OTU0ZmJiZTc4ZjcwZjc5
MzZlZGMyZWQxLi5iZmQ0MTJjMTFiNjYzZTczYjQwYTQyNTg5NjgwYmJhNDg4NTRjNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAj
aW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyLmg+CkBAIC04NSw3ICs4Myw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFt
ZXRlcnMpKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tl
bmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKICAgICBpZiAoIWJpdG1hcCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTkzLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVy
cywgYml0bWFwLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQpAQCAtMTExLDEwICsxMDksMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29u
dGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4ocGFyYW1ldGVycywgYml0bWFwLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29u
dGV4dCkpOwogfQogCi1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4mJiBjb250ZXh0KQorSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+JiYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5k
KHBhcmFtZXRlcnMpCiAgICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEyNiwxMCArMTI0LDEwIEBAIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KGNvbnN0IFBhcmFtCiAgICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29s
dXRpb25TY2FsZSgpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBj
b25zdAogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX2JpdG1h
cC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5k
bGUsIHByb3RlY3Rpb24pOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RG
TW92ZShoYW5kbGUpKTsKIH0KIApAQCAtMTQzLDYgKzE0MSwxMyBAQCB1bnNpZ25lZCBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1
cm4gbV9iaXRtYXAtPmJ5dGVzUGVyUm93KCk7CiB9CiAKKyNpZiBVU0UoQ0FJUk8pCitSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0
ZUNhaXJvU3VyZmFjZSgpCit7CisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZh
Y2UoKTsKK30KKyNlbmRpZgorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZVBsYXRm
b3JtSW1hZ2UoKSk7CkBAIC0xNjQsNSArMTY5LDMgQEAgdm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEIK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRl
eCAyMWRkMGQ4NzUwYWRlMzMyNjdkMDhlODgwNzFkNWQ1Y2QzMzA4NGJmLi5mNTk4MjI1N2JiYTE4
MTg5NjE4ODNiZmIyMDhjZjhjNWEyNjJjYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KQEAgLTQzLDYg
KzQxLDcgQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLCBwdWJsaWMgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZyB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQp
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCk7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBXZWJDb3Jl
OjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CkBA
IC01MiwxMiArNTEsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYs
IGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyOjpDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCi0gICAg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiYmKTsKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYsIFJlZjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4dDsgfQotICAgIAogICAg
IFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKLSAgICBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworCisg
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYml0bWFwLnB0cigpOyB9CisjaWYgVVNFKENBSVJPKQorICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIGZpbmFsOworI2VuZGlmCiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3Jl
OjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFs
OwpAQCAtNjYsMTYgKzY5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0T3duZXJzaGlw
SWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5JikgeyB9CisKIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBmaW5hbDsKIAogICAgIEltYWdlQnVm
ZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlz
OyB9CiAgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0KCkgZmluYWwgeyAvKiBEbyBub3Ro
aW5nLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9yIElPU3VyZmFjZSBiYWNrZW5kcyAqLyB9CiAK
LSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8U2hhcmVhYmxl
Qml0bWFwPiBtX2JpdG1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAppbmRleCAyNWI1YTQ1NTgyNTBlZTA2MDU2Yzg0M2ExN2MxMzgxOTYxNjlmM2E3Li4xNmZhNmIy
YTAwYWI5MWM4MTg5NmE0N2RjZjU4YWJjNWQ0NzE3NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBzdGF0aWMgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKE5hdGl2
CiB7CiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAKLSAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlLnNpemUoKSwgeyBpbWFn
ZS5jb2xvclNwYWNlKCkgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShpbWFnZS5zaXplKCksIHsgaW1hZ2UuY29sb3JTcGFjZSgpIH0pOwogICAgIGlmICghYml0
bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFj
ZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDQwMTFjYThlYTk5
M2YzZWZhNDdmYmU4YmU2NjVjNzk5YTI3OWY5OGEuLmVhZTZmNzk1ZWQzZjkyNDY0MmM0ZDg0OWI5
YTk4YTlhNzY5NzU3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
UmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFjCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1
ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxNYWNoU2VuZFJpZ2h0PihtX2hhbmRsZSkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZC5oCmluZGV4IDA5NDFiZmRhN2VlMDU4Yzk4ZjAzNTIyZDNhZTczYzk1NzRh
Yzk5MjguLjIwZDhjNjBlMTEzNTZlOGIyZTA3ZDU4OWIwZDM5NmYyZjI0MTI0OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZDsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFu
ZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJh
Y2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCA0MzI5YTFjOTE3MTM0OTQ3MTljMmJhYTZiZTE2NGUwNTdmNmI4MTYwLi5hZWRl
N2JlYTgyYTgwZTAwNjc3ZTU3NjljZDY1OTY0ZjliNDZkODZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlCiAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbikgY29uc3QKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmgKaW5kZXggYmRiY2Q5OGYzN2VhOTQ5OGQwNzRhZjg2NzA4NzRiODE4MWMy
NDg4OC4uYjE0NDI2ZTdmNDJkN2RhNTA1YmZmYWZhZjE0YTE3M2FmMjEwZDZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE93
bmVyc2hpcElkZW50aXR5KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSYpOwogCi0gICAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5h
bDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0
ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hh
cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tCmluZGV4IDI4MWQ4NjdkMTI2NDYyZWU2YTFiZDZlMjcyZmMyMGIyNmJkNTA5
ZTAuLjAyMWQ3MGZmM2EwM2I0NmQ3ZWQ3NTY5MDYzNTRjMGZhYjVjNzJiOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjksMTQgKzY5LDE4IEBAIC0gKENvY29hSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6
KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMgd2lkdGg6KE5TTnVtCiAgICAgaWYgKHdpZHRoKQog
ICAgICAgICBvcHRpb25hbFdpZHRoID0gd2lkdGguZmxvYXRWYWx1ZTsKIAotICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYkltYWdlPiBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktp
dDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOworICAgIGF1dG8gaW1hZ2UgPSBfbm9k
ZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShXZWJLaXQ6OnRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMp
LCBvcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92ZXJmbG93LCBvcHRpb25hbFdp
ZHRoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6RG9udENvcHlCYWNr
aW5nU3RvcmUpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisK
ICNpZiBVU0UoQVBQS0lUKQotICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNa
ZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBz
aXplOk5TWmVyb1NpemVdKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKLSAgICByZXR1cm4gYWRvcHRO
UyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCkubWFrZUNH
SW1hZ2UoKS5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IDc1ZWY3YzJmNWMyMmY2MDgxMWI4MDczYWNk
NzM2NjEzMWI2N2YyZWQuLmE0YThlYTAxM2E1ZTM1ZjA2Y2NiYmY2ZmJjOWNiMDc5ODY0MDA5YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NzEsMTQgKzE3MSwxMiBAQCBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJh
bWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBhaW50aQogICAgIGlmICghc25hcHNo
b3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFn
cmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGdyYXBo
aWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CiAKLSAgICBncmFwaGljc0NvbnRleHQt
PmNsZWFyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKLSAgICBncmFwaGlj
c0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LmNsZWFyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKKyAg
ICBncmFwaGljc0NvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsKKyAgICBn
cmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7CiAKICAg
ICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24gPSBG
cmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQpAQCAtMTkyLDcgKzE5MCw3IEBAIHN0
YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywg
Y29uc3QgSW50UmVjdCYgcGFpbnRpCiAKICAgICBhdXRvIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFt
ZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Io
cGFpbnRCZWhhdmlvcik7Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3Qo
KmdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlv
biwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHBhaW50aW5nUmVjdCwgc2hvdWxk
UGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAgICAgZnJh
bWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgcmV0dXJu
IHNuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAKaW5kZXggOTc1MjlmYzFhYzM5MjI5MzVkOTk1YzJmYzVjYWQ5NGIxYmI2NTJmMi4uYWI2YjI2
YzkzZDUzZWVmMmZmMWNiNjU4MGEzM2RhODhiNzM2M2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM5LDIwICsxMzksMTcg
QEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZElt
YWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUg
PSBwYWludFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2NhbGVGYWN0
b3IpOwogCi0gICAgYXV0byBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwotICAgIGlmICghYmFja2luZ1N0b3JlKQor
ICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHNu
YXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMgfCBTbmFwc2hvdE9wdGlvbnNTaGFy
ZWFibGUpKTsKKyAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICBhdXRv
JiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5zY2FsZShzY2FsZUZhY3Rvcik7CiAKICAgICBwYWludFJlY3QubW92ZShmcmFtZVZpZXct
PmZyYW1lUmVjdCgpLngoKSwgZnJhbWVWaWV3LT5mcmFtZVJlY3QoKS55KCkpOwogICAgIHBhaW50
UmVjdC5tb3ZlQnkoLWZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CiAKLSAgICBncmFwaGlj
c0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNz
Q29udGV4dC50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCk7CiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBvbGRQ
YWludEJlaGF2aW9yOwpAQCAtMTY1LDEyICsxNjIsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRp
b24KICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAgICAg
ZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludCgqZ3JhcGhp
Y3NDb250ZXh0LCBwYWludFJlY3QpOworICAgIGZyYW1lVmlldy0+cGFpbnQoZ3JhcGhpY3NDb250
ZXh0LCBwYWludFJlY3QpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWlu
dEJlaGF2aW9yKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2Vs
ZWN0aW9uKTsKIAotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZS5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIFN0cmluZyBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlOjp0ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZGY4ZTU1ZGYxZjBhZTgzNjAzZmE4ZGQzYTkxYTBl
ZmFkMzg1YWI3ZS4uYmQyNjBmOTNmYmJmYWJmMDZkNjI2YTA3MjdiNzRkZjY5N2ViOTJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTczLDEzICsxNzMs
MTIgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdl
KCkgY29uc3QKICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKTsKICAgICBJbnRTaXplIHNpemUoYml0bWFwSW1hZ2Uuc2l6ZSgpKTsKICAg
ICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBzdGF0aWNfY2FzdDxJbWFn
ZU9wdGlvbnM+KDApKTsKLQotICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBFWElGIHJvdGF0
aW9uLgotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgIGlmICgh
d2ViSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2UoYml0bWFwSW1hZ2UsIHt7IH0sIHNpemV9KTsKKyAgICAvLyBGSVhNRTogbmVl
ZCB0byBoYW5kbGUgRVhJRiByb3RhdGlvbi4KKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSB3
ZWJJbWFnZS0+Y29udGV4dCgpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoYml0bWFw
SW1hZ2UsIHsgeyB9LCBzaXplIH0pOwogCiAgICAgcmV0dXJuIHdlYkltYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
MGFmYzAxNzJjOWIzYzhlMjc5NjU4NTk4M2M1NTVjZmIyMmFlYzliYi4uYjE1NzlhMjBkNGQ4ZmQy
MmI1ZTgwMTg2YWJiMTk5MzU0YjI0ZDllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xOTkyLDcgKzE5OTIsNyBAQCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJh
Y2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250
ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgaWYg
KCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IGJp
dG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuY3BwCmluZGV4IDEyMDI2M2Q2NWQ2MWY1OTFlNWYxZjY3ZmQ0ZmU4YmY1M2VmZmMz
MzAuLjgzMWYxOGI0NjQwZTU4MGIzN2E0MTU5MjUwNWZlZmFkYTAwYTljZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVy
SW1hZ2UsIENyZWF0ZVNoCiAgICAgICAgIGlmICghc25hcHNob3RJbWFnZSkKICAgICAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZv
ckJpdG1hcCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoc25hcHNob3RSZWN0LnNpemUoKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0p
OwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTgz
LDcgKzgzLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFw
KFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICAgICAgaWYgKGltYWdlU2l6
ZS5pc0VtcHR5KCkgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMSB8fCBpbWFnZVNpemUuaGVpZ2h0
KCkgPD0gMSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgV1RGTW92ZShj
b2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9
KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC0x
MTQsNyArMTE0LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0
bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICB9CiAKICAgICAvLyBG
SVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVlZCB3
aWRlIGdhbXV0LgotICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JC
aXRtYXApIH0pOworICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0p
OwogICAgIGlmICghc2hhcmVkQml0bWFwKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCmluZGV4IGQzMWY0MjViOGQxM2Q4N2UxYmE0ZDE2NDQxNGFjMTI1YTQ2M2E2
MGYuLjEzZGI4N2JjNmVhNWQyNWZkNjFlZTY5NTRlMmJkZjc2OWE4YjY5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiSGFuZ0RldGVjdGlvbkRp
c2FibGVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRh
dGEuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC05NDEsOCArOTQzLDEyIEBAIFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6ZGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogUmVmUHRyPEltYWdlQnVm
ZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3Nl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpIHsKKyAgICAgICAgaWYg
KHB1cnBvc2UgIT0gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ29uY3JldGVJbWFnZUJ1ZmZl
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIFJlbmRlcmluZ1B1cnBv
c2U6OlNoYXJlYWJsZVNuYXBzaG90LCB7IH0pOworICAgIH0KIAogICAgIHJldHVybiBtX3BhZ2Uu
ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA1ZTVj
ZWZmNzAxYzllNGFlMWQ4YmUzZTU4MTQwZThkYjE0M2ZjNDU2Li5lYjJhNjhkMzU1MDk2YmEyZTBj
N2Y2YmEzOTA3MzVhYjQ4NmYzYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRD
YWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2Up
KTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGlt
YWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LT5oYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggZTFl
MGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNC4uYjE0MzU4YzJjYzI5NjA0YTUw
MjY1MjgxYzhkMjE1MjQ2ZWQ4MjBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpA
QCAtNjgsNyArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERyYWdJbWFn
ZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgeyBzY3JlZW5D
b2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CisgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUu
bWFpbkZyYW1lKCkudmlldygpKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAppbmRleCBlZTA3MTNmMDJh
ODc3YzBiNzY0M2Q2MjkyZWM1OTg2ZGQyNGQzYzdjLi43YTA2MzZkNGQ0OTNhOTVlMmQ0NGFkZWJh
NGI2NTFjMjc4ZTBkZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCkBAIC03Niw4
ICs3Niw4IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIFBsCiAgICAgaW50IGJhY2tpbmdTdG9yZVdp
ZHRoID0gc3RkOjptYXgocGFnZUNvb3JkaW5hdGVzLndpZHRoKCkgLSBtX3BvcHVwQ2xpZW50LT5j
bGllbnRJbnNldExlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0UmlnaHQoKSwgcG9w
dXBXaWR0aCk7CiAKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUoYmFja2luZ1N0b3JlV2lk
dGgsIChpdGVtQ291bnQgKiBkYXRhLm1faXRlbUhlaWdodCkpOwotICAgIGRhdGEubV9ub3RTZWxl
Y3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tp
bmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAg
ICBkYXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9y
ZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBub3RTZWxlY3RlZEJhY2tpbmdTdG9y
ZUNvbnRleHQgPSBkYXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IHNlbGVjdGVk
QmFja2luZ1N0b3JlQ29udGV4dCA9IGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggZjlhMTFjNjUyODg4
OGIxMzJjNzIwN2E4ZjNhNWRiYmM5NTgzZDI3Yi4uOGQ3MWMwYTk1Y2E4YmYxNjgyZDkxNjI0NDlm
YTNmMWFmNTE5NjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtODIwLDcgKzgyMCw3IEBA
IHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwbGF5KFVwZGF0ZUluZm8m
IHVwZGF0ZUluZm8pCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwot
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFw
U2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJp
dG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CmluZGV4IDFkNjQzYjZiNDI4OGQwOGUwMzhjNDYyNWQwNTQ5ZGU2OGFmMmFhNzcuLjdlNWRkZGVk
ZWJlYWI4MDY4MjQyOThkZGE5N2VmZmNjNDBjN2M2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTMxOCwy
MCArMzE5LDE4IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmdldEltYWdlRm9yRmluZE1hdGNoKHVp
bnQzMl90IG1hdGNoSW5kZXgpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNlbGVjdGlvblNuYXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUo
KmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKTsKKyAgICBhdXRvIHNlbGVjdGlvblNu
YXBzaG90ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QoKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2Vs
ZWN0aW9uKTsKIAogICAgIGlmICghc2VsZWN0aW9uU25hcHNob3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBzZWxlY3Rpb25TbmFw
c2hvdC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Ci0KKyAgICBhdXRvIGhhbmRsZSA9IHNlbGVjdGlv
blNuYXBzaG90LT5jcmVhdGVIYW5kbGUoKTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goaGFuZGxlLCBtYXRjaEluZGV4KSk7CisgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldEltYWdlRm9yRmluZE1h
dGNoKHNlbGVjdGlvblNuYXBzaG90LT5wYXJhbWV0ZXJzKCksIGhhbmRsZSwgbWF0Y2hJbmRleCkp
OwogfQogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0
Y2hJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA3MWVkMTg4MmZiNDI0ZDIxYzY3OWQxM2JiN2I1MWI0ZWM4NGExNjVlLi45YWNlYzY2
YmViZGQ1YmVkNTAzZmEzOWYwMWFhOGZjMWQ0MmRhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC04NTksMjcgKzg2MCwxMyBAQCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBj
YWxsYmFjaywgdm9pZAogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZy
YW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CitSZWZQdHI8V2ViSW1hZ2U+IFdl
YkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzbmFw
c2hvdCA9IHNuYXBzaG90U2VsZWN0aW9uKCpjb3JlRnJhbWUoKSwgeyB7IFdlYkNvcmU6OlNuYXBz
aG90RmxhZ3M6OkZvcmNlQmxhY2tUZXh0IH0sIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CisgICAgYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90U2Vs
ZWN0aW9uKCpjb3JlRnJhbWUoKSwgeyB7IFdlYkNvcmU6OlNuYXBzaG90RmxhZ3M6OkZvcmNlQmxh
Y2tUZXh0LCBXZWJDb3JlOjpTbmFwc2hvdEZsYWdzOjpTaGFyZWFibGUgfSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9KTsKICAgICBpZiAoIXNuYXBz
aG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2hhcmVkU25hcHNob3Qg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+YmFja2VuZFNpemUo
KSwgeyB9KTsKLSAgICBpZiAoIXNoYXJlZFNuYXBzaG90KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcHJvdmlkaW5nIGEgd2F5IHRv
IHVzZSBzdWJwaXhlbCBhbnRpYWxpYXNpbmcgZm9yIHRoZSBzbmFwc2hvdAotICAgIC8vIGlmIHdl
J3JlIGNvbXBvc2l0aW5nIHRoaXMgaW1hZ2Ugb250byBhIHNvbGlkIGNvbG9yIChlLmcuIHRoZSBt
b2Rlcm4gZmluZCBpbmRpY2F0b3Igc3R5bGUpLgotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
c2hhcmVkU25hcHNob3QtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yID0gY29yZUZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxv
YXRQb2ludCgpKTsKLQotICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdDsKKyAgICByZXR1cm4gV2Vi
SW1hZ2U6OmNyZWF0ZShzbmFwc2hvdC5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCmluZGV4IDZjM2E5NDg2ZTQ0MzQyYWZjYjU0ZGE3NmEyMmNhM2QwM2MyMTZlYzUu
LmQzOWZiMjViNmJmYWMzNmFmOWE2N2ZiYzZjZWZmNDkxZTA5OGU3M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDYgKzYzLDcgQEAgY2xh
c3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTsKIGNsYXNzIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ7CitjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYlBhZ2U7CiBzdHJ1
Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwpAQCAtMTg0LDcg
KzE4NSw3IEBAIHB1YmxpYzoKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB3ZWJBcmNoaXZlRGF0
YShGcmFtZUZpbHRlckZ1bmN0aW9uLCB2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdDsKKyAg
ICBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFRyYW5zYWN0aW9uSUQgZmlyc3RMYXllclRyZWVU
cmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExh
eWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExvYWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDQ4NTg2MzY4MjM1MGRiZmMx
YmRlZmMyY2UwNzY1ODRhNWEzMzA1MC4uM2E0ZDJmZWM0YzU1MzZjNjgxNDEwY2RkZTRiY2RmNzU3
NWE2ZDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTI2NDEsNyArMjY0MSw3IEBAIHZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJl
Y3Qgc25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wCiAKICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGltYWdlKQotICAgICAgICBp
bWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxl
cihoYW5kbGUpOwogfQpAQCAtMjcxMCwxNCArMjcxMCwxMyBAQCB2b2lkIFdlYlBhZ2U6OnBhaW50
U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFw
U2l6ZQogICAgIH0KIH0KIAotc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBz
bmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24oU25hcHNob3RPcHRpb25zIG9wdGlv
bnMsIFdlYlBhZ2UmIHBhZ2UpCitzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIHNuYXBzaG90
Q29sb3JTcGFjZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKIHsKLSAg
ICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICNpZiBVU0Uo
Q0cpCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNl
KQotICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBh
Z2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAgcmV0dXJuIHNjcmVl
bkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOwogI2VuZGlm
Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOwogfQogCiBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zKQpAQCAtMjczMCwxNCArMjcyOSwxMiBAQCBSZWZQdHI8V2ViSW1h
Z2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIGJpdAogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBz
aG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1h
cENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2Vi
SW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhv
cHRpb25zKSwgc25hcHNob3RDb2xvclNwYWNlKG9wdGlvbnMsICp0aGlzKSwgJm1fcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkpOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6
ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmlldywgKmdyYXBoaWNzQ29udGV4dCk7Cisg
ICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKKyAgICBwYWlu
dFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpm
cmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CiB9CkBA
IC0yNzY4LDI3ICsyNzY1LDI2IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RO
b2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgICAgIHNu
YXBzaG90U2l6ZSA9IEludFNpemUoc25hcHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3Rvciwg
bWF4aW11bUhlaWdodCk7CiAgICAgfQogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpj
cmVhdGUoc25hcHNob3RTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25z
KSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7
CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RDb2xvclNwYWNlKG9w
dGlvbnMsICp0aGlzKSwgJm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpOwogICAgIGlmICghc25h
cHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0
ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGdy
YXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CiAKICAgICBpZiAoIShvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSkgewogICAgICAgICBk
b3VibGUgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHNjYWxlRmFjdG9yIC89IGRldmljZVNj
YWxlRmFjdG9yOwogICAgIH0KIAotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0
b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1zbmFwc2hvdFJlY3QubG9jYXRp
b24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICBncmFw
aGljc0NvbnRleHQudHJhbnNsYXRlKC1zbmFwc2hvdFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBD
b2xvciBzYXZlZEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+YmFzZUJhY2tncm91bmRDb2xv
cigpOwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KCZub2RlKTsKIAotICAg
IGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNu
YXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3Vt
ZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90
KGdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rp
b24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAKICAgICBmcmFtZVZpZXctPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3Ioc2F2ZWRCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGZyYW1lVmll
dy0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKQEAgLTU2NjEsMzcgKzU2NTcsMzMgQEAgdm9pZCBX
ZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmYKICAgICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
cHJpbnRpbmcoKSk7CiAjZW5kaWYKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKLSAgICAgICAgaWYgKCFiaXRt
YXApIHsKKyAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgSW1hZ2VP
cHRpb25zU2hhcmVhYmxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgJm1fcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkpOworICAgICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkg
ewotICAgICAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihp
bWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7Ci0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnNjYWxlKHByaW50aW5nU2NhbGUpOworCisgICAgICAgIGF1dG8mIGdyYXBoaWNzQ29u
dGV4dCA9IGltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VTaXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUocHJpbnRpbmdTY2FsZSk7CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgICAgICBpZiAoUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVu
dCA9IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdGcmFtZShjb3JlRnJhbWUpKSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAg
ZHJhd1BERkRvY3VtZW50KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHBkZkRv
Y3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3QpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5k
aWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xS
ZWN0KCpncmFwaGljc0NvbnRleHQsIHJlY3QpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAo
UmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudCA9IHBkZkRvY3VtZW50Rm9yUHJpbnRp
bmdGcmFtZShjb3JlRnJhbWUpKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fcHJpbnRDb250ZXh0
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkp
OworICAgICAgICAgICAgZHJhd1BERkRvY3VtZW50KGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSwgcGRmRG9jdW1lbnQuZ2V0KCksIHByaW50SW5mbywgcmVjdCk7CisgICAgICAgIH0g
ZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9v
bFJlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKICAgICAgICAgfQotCi0gICAgICAgIGltYWdl
ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogI2Vu
ZGlmCiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0KICAgICBpZiAoaW1h
Z2UpCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNy
ZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGJhZDVkZTRmMTU2ZjcwZjczOTlm
ZjVlMmMyN2M3OTAxYjk1YzU2ZWMuLjY4NWM2ZjBhNjZlZjk1ZGE3MDBhYzE5ODhiODQyMmM4MWU1
ZWJiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC0zMTAyLDggKzMxMDIsOCBAQCBzdGF0aWMgdm9pZCB0ZXh0SW50ZXJh
Y3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IEhUTUxJbnB1dEVs
ZQogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViUGFnZTo6c2hhcmVhYmxlQml0bWFwU25hcHNo
b3RGb3JOb2RlKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGlt
YWdlIGNvbnRhaW5zIGF0IG1vc3QgNjAwSyBwaXhlbHMsIHNvIHRoYXQgaXQgaXMgbm90IHRvbyBi
aWcuCi0gICAgaWYgKFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZWxl
bWVudCwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKLSAgICAgICAgcmV0
dXJuICZzbmFwc2hvdC0+Yml0bWFwKCk7CisgICAgaWYgKGF1dG8gc25hcHNob3QgPSBzbmFwc2hv
dE5vZGUoZWxlbWVudCwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKKyAg
ICAgICAgcmV0dXJuIHNuYXBzaG90LT5iaXRtYXAoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCAxYTc4OWY5OWQ4OWY2N2Y4MDIxNWZkMTY2MTUwOWNlMzM0ZGIxODYxLi5iZDU1
OGIyODJiNjVlMTNlNDI0ZmFmZDcyNTIxNWZjOTU1NWIwODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3Niw5ICs1
NzYsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFn
ZSkKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwogICAg
IGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIC1pbWFnZS0+c2l6ZSgpLmhlaWdodCgp
KSk7Ci0gICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5jb250ZW50cyA9IChfX2JyaWRnZSBpZClp
bWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCk7CisgICAgbGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKS5jb250ZW50cyA9IChfX2JyaWRnZSBpZCluYXRpdmVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2Uo
V2ViSW1hZ2UqIGltYWdlKQpAQCAtNTkxLDggKzU5NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldEJv
dHRvbU92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQogICAgIGlmICghbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUlt
YWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbGF5
ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7Ci0gICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5j
b250ZW50cyA9IChfX2JyaWRnZSBpZClpbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCku
Z2V0KCk7CisgICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5jb250ZW50cyA9IChfX2JyaWRnZSBp
ZCluYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZUhlYWRlckFuZEZvb3RlckxheWVyc0ZvckRldmljZVNjYWxlQ2hhbmdlKGZsb2F0IHNj
YWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDUz
ZjhhNTZjZDJiZjhhMzgwYzkxZjI4ZTI3ZTdiNjM4MDZiN2UzMzkuLmE4N2EyMzI1NzgyZmMwOTU0
MGIzMjY5ZGY4NDZhNGQ1NDkyZGMyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTIyMDQsNiArMjIwNCw4IEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVXNl
UmVtb3RlUmVuZGVyaW5nRm9yKFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSkKICAgICAgICAgcmV0
dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZzsKICAgICBjYXNlIFJlbmRlcmlu
Z1B1cnBvc2U6OkRPTToKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OkxheWVyQmFja2luZzoK
KyAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90OgorICAgIGNhc2UgUmVuZGVyaW5n
UHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3Q6CiAgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmc7CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50
aW5nOgogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yTWVkaWE7Cg==
</data>
<flag name="commit-queue"
          id="487075"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458243</attachid>
            <date>2022-04-24 22:47:58 -0700</date>
            <delta_ts>2022-04-24 23:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220424224758.patch</filename>
            <type>text/plain</type>
            <size>102297</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlOWRkYjNmNzgxZDQ5
ZTBhY2ZiYTQyZWEzYzQ1YjJmYTRkOTVjZC4uYzU1OWRjNTBjNjQ5MWY1NmZkZjdiY2Y3YWY0ZGI3
NjlhN2ZlNDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTA0LTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dpbkNhaXJvXSBVbnJldmlld2Vk
IGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZTU1YTA2NzA4N2NhM2E2ZTNjNzExNzBjOWQ0MjU1ZGFi
NjZkMzdhLi5jYmRiNGI1MTBkOWViOGNmZWExODcxYzI5OGJiNGE5OWYwNTZjZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1hZ2UgYmUgYmFj
a2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL3djL1dDU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXQ1NjZW5lOjp1cGRhdGUp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKToK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdl
KToKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpzZXRJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0
ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmlzQmFj
a2VkQnlTaGFyZWRNZW1vcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Vc2Vy
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OldlYkltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6cGFyYW1ldGVycyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkltYWdlOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2ViSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
Yml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6
CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNu
YXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2Ny
ZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSByZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnM6d2lkdGg6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VG
b3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFy
ZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1
cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydERy
YWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNl
dFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNu
YXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNCAgRGFuaWVsIEtvbGVzYSAgPGRrb2xlc2FAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVc2UgdXRmLTggZm9yIHRleHQgbW9kZSBmaWxlcyBpbiBnZW5lcmF0
ZS1hdXRvbWF0aW9uLWF0b20ucHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDljMGI4Mjk3NzZmZjUwOWU2Ny4uZDc5
MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyArODEsOCBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRS
ZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7
CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVj
dGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucy5mbGFn
cy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKSkK
QEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVj
dFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0
aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3Bh
Y2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8gcHVycG9zZSA9IG9wdGlvbnMuZmxh
Z3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxlKSA/IFJlbmRlcmluZ1B1cnBvc2U6
OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q7CisgICAgYXV0
byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3Qo
KSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBw
dXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRpb25zLnBpeGVsRm9y
bWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVj
dC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICghY2xpcFJlY3RzLmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IGU0YjlkMDA5Yzcy
NDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJjMmZmZDAyMTc3NzE4YTc3YzU1MzRl
NjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgK
QEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hvdEZsYWdzIDogdWludDhfdCB7CiAg
ICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQsCiAgICAgUGFpbnRF
dmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1LAogICAgIFBhaW50V2l0aEludGVn
cmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVhYmxlID0gMSA8PCA3LAogfTsKIAog
c3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggMWNhY2M4ZjY5NDU2ZGVj
MjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uYTUyZjg4Y2ZjMTYwMmZhNDNmYmFjOTQ4MGZjMGIy
NzUzODcwMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY3JlYXRp
b25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFt
ZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTUzLDYgKzUzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZmZXJUeXBlPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5
cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tl
bmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBhNWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLjY1
ZjY0MjI4YzUzZDJhOTNmZWE0M2MyYmU5NDNkOThlNGFiNjk0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKKyNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTkwLDYg
Kzk0LDkgQEAgcHVibGljOgogICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZTsKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CiAgICAgICAgIFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgp
OwpAQCAtMTI4LDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKKyNpZiBVU0UoQ0FJUk8pCisgICAgdmlydHVhbCBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgYm9vbCBpc0luVXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KICNpZiBIQVZFKElPU1VSRkFDRSkKQEAgLTE4Myw2ICsxOTQsNDUgQEAgcHJvdGVjdGVk
OgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4gdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbG9naWNhbFNpemU7CisgICAg
ZW5jb2RlciA8PCByZXNvbHV0aW9uU2NhbGU7CisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwor
ICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBwdXJwb3NlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFj
a2VuZDo6UGFyYW1ldGVycz4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9naWNh
bFNpemU7CisgICAgZGVjb2RlciA+PiBsb2dpY2FsU2l6ZTsKKyAgICBpZiAoIWxvZ2ljYWxTaXpl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9h
dD4gcmVzb2x1dGlvblNjYWxlOworICAgIGRlY29kZXIgPj4gcmVzb2x1dGlvblNjYWxlOworICAg
IGlmICghcmVzb2x1dGlvblNjYWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAg
ZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVs
Rm9ybWF0OworICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1h
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nUHVycG9zZT4gcHVycG9zZTsKKyAgICBkZWNvZGVyID4+IHB1cnBvc2U7CisgICAgaWYg
KCFwdXJwb3NlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyAqbG9naWNhbFNpemUsICpyZXNvbHV0aW9uU2NhbGUsICpjb2xvclNwYWNlLCAqcGl4ZWxGb3Jt
YXQsICpwdXJwb3NlIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3Bh
Y2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmlu
Z01vZGUuaAppbmRleCBhMjE2YjBlZDE1ZjczZTYzODE2Y2NjZjBlNjZlNmFkMGE5MDkxZDIwLi40
YmJkMTc5NDcyNTNhMTkwYTJlNzU3NTg5MzM1MjllNzczNDg5NjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAg
ZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgQ2FudmFzLAogICAg
IERPTSwKICAgICBMYXllckJhY2tpbmcsCisgICAgU25hcHNob3QsCisgICAgU2hhcmVhYmxlU25h
cHNob3QsCiAgICAgTWVkaWFQYWludGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZWEwNDlhOTk1MzIxN2M2M2JiZTdkNDEzY2Rh
N2RhYTk3MjYyMjBmMS4uYTZmZDBkYTk2NTE0Y2U3NWI0YWU4NGVkNmVjNjYzNmE5MThhNGQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02
NSwyMSArNjUsMjMgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpi
eXRlc1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0
cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwogfQogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yKSBjb25zdAorc3RhdGljIGlubGluZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBjbG9uZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90JiBzdXJmYWNlKQogewotICAgIHN3aXRjaCAo
Y29weUJlaGF2aW9yKSB7Ci0gICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7Ci0gICAgICAgIGF1
dG8gY29weSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1B
VF9BUkdCMzIsCi0gICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFj
ZS5nZXQoKSksCi0gICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZh
Y2UuZ2V0KCkpKSk7CisgICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoJnN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoJnN1cmZhY2UpKSk7
CiAKLSAgICAgICAgYXV0byBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShjb3B5LmdldCgpKSk7
Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09V
UkNFKTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZh
Y2UuZ2V0KCksIDAsIDApOwotICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisgICAgYXV0
byBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShjb3B5LmdldCgpKSk7CisgICAgY2Fpcm9fc2V0
X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgJnN1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3Bh
aW50KGNyLmdldCgpKTsKIAotICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZN
b3ZlKGNvcHkpKTsKLSAgICB9CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Cit7CisgICAgc3dpdGNoIChjb3B5QmVo
YXZpb3IpIHsKKyAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKGNsb25lU3VyZmFjZSgqbV9zdXJmYWNlKSk7CiAKICAgICBjYXNlIERv
bnRDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShS
ZWZQdHIgeyBtX3N1cmZhY2UuZ2V0KCkgfSk7CkBAIC04OSw2ICs5MSwxMSBAQCBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZQogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpCit7CisgICAgcmV0dXJuIGNsb25lU3VyZmFjZSgqbV9zdXJmYWNlKTsKK30KKwogUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFj
ZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBi
NmI1NmQ4NjZiZGYwY2U3MzZjN2NmZTBiMTNhYWI1NWEyNmQ5OGNkLi45OWJiYzVmMjRmNmQzMGFl
NjBmZDI2ZGFmNDYwYTY3MWQxNmFhMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgp
IG92ZXJyaWRlOworCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKaW5kZXggMTI1OTk4ZmY1NWNkZTAyM2RkODcyOTNlMmVhYjI0ZmQ2ODRkN2Rm
YS4uZDVmYTE1M2FjMmFiNWZlMzIzNDdhZDQyMzg3N2UxNTMzYzA3ZDJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBpbWFnZUJ1
ZmZlci0+YmFja2VuZFNpemUoKTsKICAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFn
ZUJ1ZmZlci0+dHJ1bmNhdGVkTG9naWNhbFNpemUoKTsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IGltYWdlQnVmZmVy
LT5jb2xvclNwYWNlKCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUocmVzdWx0U2l6ZSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOwogICAg
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBjb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1
ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZQogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAg
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6
ZShpbWFnZVNpemUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZVNpemUpLCB7
IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL3djL1dDU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L3djL1dDU2NlbmUuY3BwCmluZGV4IDdlMjI1ODIyNDhiNzI1NmRmZTk1MjVlZGY3OWIzOTAxYjFh
YWVkZTYuLjdhMTY2N2Y3YTEyM2IzODY1OTgyMjk4OGNjYzgxMTNhYTBkNTVlZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUluZm8+IFdDU2NlbmU6OnVwZGF0ZShX
Q1VwYXRlSW5mbyYmIHVwZGF0ZSkKIAogICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gcmVz
dWx0OwogICAgIGlmIChtX3VzZXNPZmZzY3JlZW5SZW5kZXJpbmcpIHsKLSAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSh3aW5kb3dTaXplLCB7IH0p
OworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHdpbmRvd1Np
emUsIHsgfSk7CiAgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aW5kb3dTaXplLndpZHRoKCks
IHdpbmRvd1NpemUuaGVpZ2h0KCksIEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBiaXRt
YXAtPmRhdGEoKSk7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAg
ICAgICAgaWYgKGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IGYyMTA5NmFhYWNkMGQ5ZjdjMDA2ZTk4ZjczMTFhNDc5MmYw
NGM3YTMuLmQxNTA4ZDUyZjA5N2NjNjEyNGY5YzEyOTk5ZGU3MGY3MWExMTM5OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFnZUZv
ckN1cnJlbnRUaW1lCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9
IGltYWdlLT5zaXplKCk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgcGxheWVyLT5j
b2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGM4Y2M1YWE4ZmNiOTQ4MjBiZGRkNzk1NjUzMWYxNmYyMTQyODY3Y2QuLjUzMDJkNTY2
ZjgwZjkzY2FlYmNjNzBjMDcwYTk5MzBlZGIyMTUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBA
CiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tJbWFnZVJlZiBp
bWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFzcyBhIFJlZlB0ciB0aHJvdWdoIHRoZSBB
UEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZlcmVuY2UuCi0gICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1Jl
ZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNl
KSk7CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNp
emUsIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKLSAgICBjYWly
b190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAg
Y2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKICAgICBjYWly
b19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCAwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGYyZDMz
MzQ3OGMyYWRiOWEzMTU2MGFmZTJjMGM4MDI0MTM0MGM1YWUuLmNiZTkxMjRmNDM1OWIyZTQ4Zjhl
NGJkYWJkODdmMjQwMmMyYmY3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw3ICs0MSwxMiBAQCBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVDR0lt
YWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiAgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdl
Q29weSgpLmxlYWtSZWYoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gd2ViSW1hZ2UtPmNvcHlO
YXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VS
ZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VP
cHRpb25zIG9wdGlvbnMpCkBAIC01MywxNCArNTgsMTIgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9u
cykKICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7
CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUs
IFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogCi0gICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8m
IGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKICAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwotICAg
IAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0
KTsKKworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclJlY3QocmVjdCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgcmVjdCwgcmVj
dCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXggMDQwMzYy
MDAwZjVmMzVkNGNiNTY3MmY1YzdmNzZhYWExODIxNzYwNS4uZmU5MTVkMTc4NzAxYzk0YjdmNGU2
Y2NlNWI2ZjViNTgzYjE5ZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQ29udGV4dE1lbnVDb250ZXh0
RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVu
dUxvY2EKIHZvaWQgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6c2V0SW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqIGltYWdlKQogewogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdHJh
dGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgotICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgeyB9KTsK
KyAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUo
aW1hZ2UtPnNpemUoKSksIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBtX2NvbnRy
b2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgaWYgKCFncmFwaGljc0Nv
bnRleHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcAppbmRleCA0YWEzZTVkODkyYTg4M2QwN2M4Zjg1MzgzNjk4MDlkYTcwYmZm
YzljLi5iMzIzNzhkNzE1NjZmZWMzNjU5MDJlMWJlZjk4ZjQ5ODNiMjZlZDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAgQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXIKIHsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25z
dAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoV0tDR0NvbW1hbmRzQ29udGV4dENvcHlFbmNvZGVk
RGF0YShtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgQVNTRVJUKGRhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMmVhNDM2OTgy
NWI3NzJlODEwZDIwMDUwMzgyZWU4MDNlY2NlODBjOS4uZjQ1ZGZlMzRkMTE3ZDE0YzE2YzJhMDAz
N2EyMmJmMTYwY2U4NjJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkludFNpemUgYmFj
a2VuZFNpemUoKSBjb25zdCBmaW5hbDsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE5P
VEU6IFRoZXNlIGFsbCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2ViQ29yZTo6
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0g
V2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAyN2U4MjBlMjNjZjg4YTFiZjU4YWY5OGZjNWMw
ZmMyYTg1ZGVmODMzLi5lNGRlYWQ1Zjg5MzhjZTE2YzY4Y2NjMGUyZDIwOWNmNTNkODAyNmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTksMjAgKzk5LDYgQEAg
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIENvbmZpZ3VyYXRpb24KIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKQotewotICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KTsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRp
b24pOwotICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgdm9pZCogZGF0YSA9IDA7Ci0gICAgZGF0YSA9IFNoYXJlYWJsZUJpdG1h
cE1hbGxvYzo6dHJ5TWFsbG9jKG51bUJ5dGVzKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNp
emUsIGNvbmZpZ3VyYXRpb24sIGRhdGEpKTsKLX0KLQotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKTsKICAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUs
IGNvbmZpZ3VyYXRpb24pOwpAQCAtMTIzLDEzICsxMDksMTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQ28KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0
aW9uLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJp
dG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkp
OwogfQogCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShj
b25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiB7Ci0gICAgQVNT
RVJUKHNoYXJlZE1lbW9yeSk7Ci0KICAgICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbik7CiAgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1
cmF0aW9uKTsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtMTM5LDcgKzEy
Myw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNv
bnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJlZE1lbW9y
eSkpKTsKIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQpAQCAtMTQ4LDEzICsxMzIsMTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW8KICAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
Y3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hh
cmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9j
b25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIGJvb2wg
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChpc0JhY2tlZEJ5
U2hhcmVkTWVtb3J5KCkpOwotCiAgICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBoYW5kbGUubV9zaXplID0gbV9zaXplOwpAQCAtMTYyLDM0ICsxNDQsMTYgQEAgYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpT
aGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uLCB2b2lkKiBkYXRhKQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2NvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbikKLSAgICAsIG1fZGF0YShkYXRhKQotewotfQotCi1TaGFyZWFi
bGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1No
YXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkp
CiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KQotICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5KQotICAgICwgbV9kYXRhKG51bGxw
dHIpCisgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiB7CiB9CiAK
LVNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCgpCi17Ci0gICAgaWYgKCFpc0JhY2tl
ZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZSht
X2RhdGEpOwotfQotCiB2b2lkKiBTaGFyZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAogewotICAg
IGlmIChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAgICAgIHJldHVybiBtX3NoYXJlZE1l
bW9yeS0+ZGF0YSgpOwotCi0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YTsK
KyAgICByZXR1cm4gbV9zaGFyZWRNZW1vcnktPmRhdGEoKTsKIH0KIAogQ2hlY2tlZFVpbnQzMiBT
aGFyZWFibGVCaXRtYXA6Om51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUsIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggNGEwNzQwMDE3MzVkZjg2NGY0ZjRi
ZTFmOWU3NjU1MjQwM2VjM2Y1NC4uY2EzZDg0NGJkYWVjYjAzNjAyNTdkOGI4MDZkZWM4YmQ5OGRl
N2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxNCAr
NzksMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBDaGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVz
UGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0
aWMgQ2hlY2tlZFVpbnQzMiBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRp
b24mKTsKIAotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxv
Y2VkIG1lbW9yeS4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKLQogICAgIC8vIENyZWF0ZSBh
IHNoYXJlYWJsZSBiaXRtYXAgd2hvc2UgYmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJlZCB3aXRo
IGFub3RoZXIgcHJvY2Vzcy4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3Jl
YXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBDb25maWd1cmF0aW9uKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRt
YXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZp
Z3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVh
YmxlIGJpdG1hcCBmcm9tIGEgaGFuZGxlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwpAQCAtOTQsMTEgKzkxLDEyIEBAIHB1
YmxpYzoKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFu
ZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpIGNvbnN0OwogCi0gICAgflNoYXJlYWJsZUJpdG1hcCgpOwotCiAgICAgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAg
IFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkpOyB9CiAKKyAgICB2b2lkKiBkYXRhKCkgY29u
c3Q7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0
ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9CisKICAgICAvLyBDcmVhdGUgYSBn
cmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2lu
ZyBzdG9yZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBj
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIApAQCAtMTA2LDggKzEwNCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlKTsKICAg
ICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9y
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNvdXJjZSk7CiAKLSAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeTsgfQotCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgYml0
bWFwIGltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRh
LgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUg
Y29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY3JlYXRlSW1hZ2UoKTsKQEAgLTEzMCw4ICsxMjYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKLSAgICBTaGFyZWFibGVCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1v
cnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZp
Z3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAjaWYgVVNFKENHKQogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsK
QEAgLTE0MywxMSArMTM4LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlU3Vy
ZmFjZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXApOwogI2VuZGlmCiAKLXB1YmxpYzoKLSAgICB2
b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1
cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9Ci0gICAg
Ci1wcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5
dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KIAogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9zaXplOwpAQCAtMTU3LDExICsxNDcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9y
ZWxlYXNlQml0bWFwQ29udGV4dERhdGFDYWxsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICAv
LyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhp
cyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgotICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotCi0gICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBiaXRtYXAg
aXMgYmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBkYXRh
LgotICAgIHZvaWQqIG1fZGF0YSB7IG51bGxwdHIgfTsKKyAgICBSZWY8U2hhcmVkTWVtb3J5PiBt
X3NoYXJlZE1lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VXNlckRhdGEuY3BwCmluZGV4IGUxOTQwNzM3Mjg2ODUyZDAyM2FhOWFhMTkxNGFjZDAwZDMyNjFh
NzUuLjdmZmE5ZGFmMjc0MTVhNzI2Y2U0NGE5ZDM0NmU1ZDU2NzIwMzRmZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjExLDkgKzIxMSw4IEBAIHZvaWQgVXNlckRhdGE6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBvYmplY3QpCiAgICAgY2Fz
ZSBBUEk6Ok9iamVjdDo6VHlwZTo6SW1hZ2U6IHsKICAgICAgICAgYXV0byYgaW1hZ2UgPSBzdGF0
aWNfY2FzdDxjb25zdCBXZWJJbWFnZSY+KG9iamVjdCk7CiAKLSAgICAgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCkuaXNCYWNr
ZWRCeVNoYXJlZE1lbW9yeSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5pc0JhY2tl
ZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUp
KSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gaW1hZ2UuY3JlYXRlSGFuZGxlKCk7CisgICAgICAg
IGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFsc2UgaW5k
aWNhdGVzIG5vIGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KICAgICAgICAg
ICAgIGVuY29kZXIgPDwgZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMSw2ICsyMjAs
NyBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBB
UEk6Ok9iamVjdCYgb2JqZWN0KQogCiAgICAgICAgIC8vIEluaXRpYWwgdHJ1ZSBpbmRpY2F0ZXMg
YSBiaXRtYXAgd2FzIGFsbG9jYXRlZCBhbmQgaXMgc2hhcmVhYmxlLgogICAgICAgICBlbmNvZGVy
IDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgaW1hZ2UucGFyYW1ldGVycygpOwogICAgICAg
ICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzkwLDE1ICsz
OTAsMTYgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRpZEVuY29kZSkKICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gcGFyYW10ZXJzOwor
ICAgICAgICBkZWNvZGVyID4+IHBhcmFtdGVyczsKKyAgICAgICAgaWYgKCFwYXJhbXRlcnMpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgICAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhbmRsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0
ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJl
c3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoKnBhcmFtdGVycywgV1RGTW92ZShoYW5kbGUpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCBmNzQ4YmRmMzczNjE4MDgzZWFkYzk1YmY4YTZiYjMyYjYz
N2IwYmFkLi42YWEwZWM4NGZhNjE0MWVlOTg1Y2NjZWEyMzE0NDk3NmRmMTA5NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEwMTcs
NyArMTAxNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRpYyB2b2lkIGVuY29k
ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJ
bnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCB7
IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3Jh
cGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVkMjJlNTc0Li5iNzQ4
YWFiMDAwY2IyYTNlZjA3ZWZjNjFkZmZmYzNmNWVjNzA4OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4NzIsOCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U+IHsKICAg
ICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAgICAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBv
c2U6OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U25h
cHNob3QsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBz
aG90LAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nCiAg
ICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggOTljOTUzY2ZjMjI4MmU3
YWU3ZTM1YjM1ZGIwYzFlNDE4NTIyYzA1OC4uYzRmNjUyNDQ2NjgyMTcxZTBiNDUzYjEyNTIyYjQ1
MjU2NmMyZDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NSArMjYsMTIwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAorI2luY2x1ZGUg
IkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q2hyb21lQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0
cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZU9w
dGlvbnMgb3B0aW9ucykKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4g
V2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBvcHRpb25zLCB7IH0pOwotfQorICAgIGlmIChjbGllbnQp
IHsKKyAgICAgICAgYXV0byBwdXJwb3NlID0gKG9wdGlvbnMgJiBJbWFnZU9wdGlvbnNTaGFyZWFi
bGUpID8gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QgOiBSZW5kZXJpbmdQdXJw
b3NlOjpTbmFwc2hvdDsKKyAgICAgICAgYXV0byBidWZmZXIgPSBjbGllbnQtPmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHB1cnBvc2UsIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRl
KGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CiAKLVJlZlB0cjxXZWJJbWFnZT4gV2Vi
SW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMg
b3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBiaXRtYXBDb25m
aWd1cmF0aW9uKQotewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKSB7
Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
c2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAg
ICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHNpemUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7CisgICAgICAg
IGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmV0
dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KLSAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIGJpdG1hcENvbmZp
Z3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQorCisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LCAxLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8gYmFja2VuZCA9IEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7
CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBh
dXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPjo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCkpOworICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIFdlYkltYWdlOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitSZWY8V2ViSW1hZ2U+IFdlYklt
YWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworV2ViSW1hZ2U6Oldl
YkltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCit7Cit9CisKK0ludFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2J1ZmZlci0+YmFja2VuZFNpemUoKTsKK30KKworY29uc3QgSW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYnVmZmVyLT5wYXJhbWV0ZXJzKCk7CiB9CiAKLVJlZjxXZWJJbWFnZT4gV2ViSW1h
Z2U6OmNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKK0dyYXBoaWNzQ29udGV4
dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkltYWdlKFdURk1vdmUoYml0bWFwKSkpOworICAgIHJldHVybiBtX2J1ZmZlci0+Y29udGV4
dCgpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRt
YXApCi0gICAgOiBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IFdlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Ip
IGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2
aW9yKTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViSW1hZ2U6OmJpdG1hcCgpIGNv
bnN0Cit7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBj
b25zdF9jYXN0PEltYWdlQnVmZmVyJj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250
ZXh0KCk7CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygp
OworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0PEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5iaXRtYXAoKTsKIH0KIAotV2ViSW1h
Z2U6On5XZWJJbWFnZSgpCisjaWYgVVNFKENBSVJPKQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
V2ViSW1hZ2U6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CisgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGJhY2tl
bmQtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQorI2VuZGlm
CiAKLWNvbnN0IEludFNpemUmIFdlYkltYWdlOjpzaXplKCkgY29uc3QKK1NoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIFdlYkltYWdlOjpjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
IHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7CisgICAg
YXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlm
ICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0X2Nhc3Q8SW1hZ2VC
dWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKworICAgIGF1
dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKCFpczxJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGF1dG8gYmFja2VuZEhhbmRsZSA9IGRvd25jYXN0PEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jcmVhdGVCYWNrZW5kSGFuZGxlKHByb3RlY3Rp
b24pOworCisgICAgaWYgKGF1dG8gaGFuZGxlID0gc3RkOjpnZXRfaWY8U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGU+KCZiYWNrZW5kSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoKmhhbmRs
ZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJJbWFnZS5oCmluZGV4IDIyZjM4NmY5ZDI5YTVkZjU3NDM4ZmJhYjQ3OGJiZjg2ZmUx
Y2QxMDUuLjk3ZTc5YmVmMmEzYmI1MzZjZjViY2E4NTNjNmUwMDgwODA2ZjEwYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTUgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2hyb21lQ2xpZW50OworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRTaXplOworY2xh
c3MgTmF0aXZlSW1hZ2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsMjAgKzQ1LDI3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbWFnZSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9w
dGlvbnMpOwotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24mKTsKLSAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFNoYXJlYWJsZUJp
dG1hcD4mJik7Ci0gICAgfldlYkltYWdlKCk7Ci0gICAgCi0gICAgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFdlYkNvcmU6OkNocm9tZUNsaWVudCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik7CisgICAgc3RhdGljIFJlZjxXZWJJ
bWFnZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBTaGFyZWFi
bGVCaXRtYXAmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9Ci0gICAgY29uc3Qg
U2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsg
fQorICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIGNvbnN0IFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0OworCisg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CisKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5n
U3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CisgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3Q7CisjaWYgVVNFKENBSVJPKQorICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOworI2VuZGlmCisKKyAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFdlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOworICAgIFdlYklt
YWdlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBSZWY8U2hhcmVhYmxlQml0
bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fYnVmZmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCBiZjNkZDA2MDNmNWY3YjI4ZGMxNGExNzI0ZDgw
MDMxYTFlZmFiM2Q5Li4wNDVkZWJiODExZGQzODUzMTc2NzcyNGE0NGY1MTZhOWQ1MDlmMDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5j
b2RlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSks
IHsgfSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggZWQ5YTk2MGY1YThkZTZiYmNkZjMwZmU4OWUxYTFmMGM0MTFhOTEzZi4uNDg0MjM5
MTY1YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2NWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQzODAsNyArNDM4
MCw3IEBAIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmJpdG1hcCgp
LmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJv
eU5vdGlmeT4oY2Fpcm9fc3VyZmFjZV9kZXN0cm95KSk7CisgICAgZ190YXNrX3JldHVybl9wb2lu
dGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkp
OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25h
cHNob3RPcHRpb25zKFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAyMDcz
OWU1YWRiMGI3N2FmZWIzMTA1ODFlYjk2ZDdlM2E3ODAyYjcwLi4yYjE4ZTk5Mjc0ZDMyNzhjY2My
Mjg2MTU2MjViMzNlYmM1ZGFhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRt
YXAoQ29jb2FJbWFnZSAqCiAgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwogCiAgICAg
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlv
bjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8g
Yml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShyZXN1bHRSZWN0LnNpemUo
KSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAyZWY5MDBkZjhlMDY4YjI2OGE4OWJkNGM0MDJmMzY0YjI0MzQxNjA0Li5hMzc1MGE1MjVmMmE1
MjE0ZWJiNmQ5YjI4NjE4NjI4MjI5MzMzNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTY4OTYsMTQgKzY4OTYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0
Y2hDb3UKICAgICBtX2ZpbmRDbGllbnQtPmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0aGlzLCBzdHJp
bmcsIG1hdGNoQ291bnQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JG
aW5kTWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRs
ZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZv
ckZpbmRNYXRjaChjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnRlbnRJbWFnZUhhbmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApIHsKKyAgICBhdXRvIGltYWdl
ID0gV2ViSW1hZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGNvbnRlbnRJbWFnZUhhbmRs
ZSkpOworICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1h
Z2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9u
TnVsbCgpKS5wdHIoKSwgbWF0Y2hJbmRleCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlk
R2V0SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBpbWFnZS5nZXQoKSwgbWF0Y2hJbmRleCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFRleHRJbmRpY2F0
b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRfdCBsaWZldGltZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDNhZDRmMDMzZTIxOWU3NTEwYzY2NGVkZWI3MjQ2
ZWQ0NzgxNjc4MS4uYWM1OWVmYzQ4MzhhZjBhY2Q5MGE3N2NiZjZhZDllZGMyMDQ5NDVjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRl
eCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2
b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7Ci0gICAgdm9pZCBkaWRH
ZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVu
dEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKKyAgICB2b2lkIGRpZEdldEltYWdl
Rm9yRmluZE1hdGNoKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBoaWRlRmluZElu
ZGljYXRvcigpOwogICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUyNzZk
M2UyZjc2NDA5ODZjMzhmZWM0OWQzZGM5OWIxYmFlZGFmYTAuLjQ1NTY0ZGI5M2RiODkzMTFlZWI4
M2Y4YjU0ZjMzMDY1ZjkyMmI5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0Miw3ICsyNDIsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+IG1hdGNoUmVjdCwgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBt
YXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpCiAgICAgRGlkRmFpbFRvRmluZFN0cmluZyhT
dHJpbmcgc3RyaW5nKQogICAgIERpZEZpbmRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIFZl
Y3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+IG1hdGNoZXMsIGludDMyX3QgZmlyc3RJbmRl
eEFmdGVyU2VsZWN0aW9uKQotICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaElu
ZGV4KQorICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKHN0cnVjdCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgcGFyYW1ldGVycywgV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCiAKICAg
ICAjIFBvcHVwTWVudSBtZXNzYWdlcwogICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6SW50UmVj
dCByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0
ZW0+IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIHN0cnVjdCBXZWJLaXQ6OlBsYXRmb3Jt
UG9wdXBNZW51RGF0YSBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNzIwNzVmYmM4NjJjMzRkMGM4NmI0YWM1MzhlNGM0
NjY5OWNiZWU0Mi4uNGI5ZTM1OTUzYjZiMzc3ZTFlOTA3YTEwNjcwYWUwYzY2ZjQ0YmEyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5NCwxMSArMjk0LDE1IEBAIC0gKHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2Vi
S2l0OjpXZWJJbWFnZSAqKWltYWdlCiAgICAgaWYgKF9pbWFnZVJlcGx5Q2FsbGJhY2tzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gaW1h
Z2UtPmJpdG1hcCgpLnNpemUoKTsKKyAgICBhdXRvIHNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAg
IHNpemUuc2NhbGUoMSAvIF9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAKKyAgICBh
dXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0
aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VDYWxsYmFjayA9IF9p
bWFnZVJlcGx5Q2FsbGJhY2tzLnRha2VGaXJzdCgpOwotICAgIGltYWdlQ2FsbGJhY2soYWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCkubWFrZUNH
SW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CisgICAgaW1hZ2VDYWxsYmFjayhhZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCkgc2l6ZTpzaXplXSkuZ2V0KCkpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBX
S1RleHRGaW5kZXJNYXRjaCBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHAKaW5kZXggN2FiNjdhMzQzN2EyOGExOWJkNjZlNDU1N2MzYjQ3NDU2YzFlMjExNS4uNDlkYWNk
NjNiNWViN2UwMWZjYTM3NTgwNTM4ZmU0ZDJlYjY3YjJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
cwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaW1hZ2UtPmJpdG1h
cCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0pLCAwKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCmluZGV4IGJmOGE0NzAzODVm
Y2E3NDBkNDQzNzU2ZWFhN2Y0ZDdmYzc5ZDI2NTYuLjZlYzU2OGQwNmRiMjhlZDQwNjMxZTI3NTAy
YTUwMGFkMjg3ZDE0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgog
I2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw1ICs0MywzIEBAIHVzaW5nIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSA9IHN0ZDo6dmFyaWFudDwKID47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcuaAppbmRleCA1ODAyMjhhZjg1Zjc1M2U1OGJkZjVlZmMxZDA3ZDFh
NmFmMDM2M2ZiLi5jZDJlOWUzZTE0Yjk4MTA2NGU1Yjg5MDNlYjQ5ZmQxZmQ4OTJmNmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaD4KIApAQCAtMzQsNyArMzIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZyA6IHB1YmxpYyBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmRTaGFyaW5nIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZW5kSGFu
ZGxlKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFz
QmFja2VuZEhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01Miw1ICs1MSwzIEBA
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1BR0VfQlVG
RkVSX0JBQ0tFTkRfU0hBUklORyhXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJp
bmcsIGlzSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZygpKQotCi0jZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCmluZGV4IGExMTcwNzI0OTBlNWM3YTc5NTRmYmJlNzhmNzBmNzkzNmVkYzJl
ZDEuLmJmZDQxMmMxMWI2NjNlNzNiNDBhNDI1ODk2ODBiYmE0ODg1NGM0NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmgiCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXIuaD4KQEAgLTg1LDcgKzgzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykp
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2VuZFNpemUs
IGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtOTMsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
YwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBiaXRt
YXAucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCkBAIC0xMTEsMTAgKzEwOSwxMCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
PihwYXJhbWV0ZXJzLCBiaXRtYXAucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb250ZXh0KSk7
CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiYmIGNvbnRleHQpCitJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBS
ZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1l
dGVycykKICAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKICAgICAsIG1fY29udGV4dChX
VEZNb3ZlKGNvbnRleHQpKQpAQCAtMTI2LDEwICsxMjQsMTAgQEAgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3Qg
UGFyYW0KICAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlvblNj
YWxlKCkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJh
Y2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7
CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIG1fYml0bWFwLT5jcmVh
dGVIYW5kbGUoaGFuZGxlKTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgcHJv
dGVjdGlvbik7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhh
bmRsZSkpOwogfQogCkBAIC0xNDMsNiArMTQxLDEzIEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBtX2Jp
dG1hcC0+Ynl0ZXNQZXJSb3coKTsKIH0KIAorI2lmIFVTRShDQUlSTykKK1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQ2Fpcm9T
dXJmYWNlKCkKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOwor
fQorI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFn
ZSgpKTsKQEAgLTE2NCw1ICsxNjksMyBAQCB2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQgogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDIxZGQw
ZDg3NTBhZGUzMzI2N2QwOGU4ODA3MWQ1ZDVjZDMzMDg0YmYuLmY1OTgyMjU3YmJhMTgxODk2MTg4
M2JmYjIwOGNmOGM1YTI2MmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgpAQCAtNDMsNiArNDEsNyBA
QCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
KwogcHVibGljOgogICAgIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIFdlYkNvcmU6OkludFNp
emUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKQEAgLTUyLDEy
ICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkNyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0
ZXJzJiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9jb250ZXh0OyB9Ci0gICAgCiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKKyAgICBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmlu
YWw7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9iaXRtYXAucHRyKCk7IH0KKyNpZiBVU0UoQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgZmluYWw7CisjZW5kaWYKIAogICAgIFJl
ZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVD
b3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0
aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWw7CkBAIC02
NiwxNiArNjksMTUgQEAgcHVibGljOgogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0
eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKSB7IH0KKwogcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZpbmFsOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNr
ZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KICAg
ICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSBmaW5hbCB7IC8qIERvIG5vdGhpbmcuIFRo
aXMgaXMgb25seSByZWxldmFudCBmb3IgSU9TdXJmYWNlIGJhY2tlbmRzICovIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJlZjxTaGFyZWFibGVCaXRtYXA+
IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4
IDI1YjVhNDU1ODI1MGVlMDYwNTZjODQzYTE3YzEzODE5NjE2OWYzYTcuLjE2ZmE2YjJhMDBhYjkx
YzgxODk2YTQ3ZGNmNThhYmM1ZDQ3MTc0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYKIHsKICAg
ICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IGltYWdlLmNvbG9y
U3BhY2UoKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGlt
YWdlLnNpemUoKSwgeyBpbWFnZS5jb2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0
N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3
Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJh
Y2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tl
bmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hT
ZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4u
MjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90
ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmlu
YWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBj
b25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhh
bmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmlu
ZGV4IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJlMTY0ZTA1N2Y2YjgxNjAuLmFlZGU3YmVhODJh
ODBlMDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBh
cmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNr
ZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5i
MTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlw
SWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAg
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25z
dCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIx
ZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNCAr
NjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFw
c2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgpCiAgICAgICAg
IG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6
V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1Nu
YXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1
ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxl
LT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlv
bnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9y
ZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVT
RShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXpl
XSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNa
ZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgp
LmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSku
YXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMx
YjY3ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCAr
MTcxLDEyIEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcq
IGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBz
aG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNz
Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250
ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJS
ZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuY2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBo
aWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAg
ICBncmFwaGljc0NvbnRleHQuc2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNz
Q29udGV4dC50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1l
Vmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmll
dzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4
Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJl
ZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJ
bnRSZWN0JiBwYWludGkKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+
cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJl
aGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhp
Y3NDb250ZXh0LmdldCgpLCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFt
ZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50
c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNl
bGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXct
PnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNo
b3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRl
eCA5NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNl
ZWYyZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25h
cHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50
UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAK
LSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0
byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RP
cHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkp
OworICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBiYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBo
aWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNj
YWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVS
ZWN0KCkueCgpLCBmcmFtZVZpZXctPmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1v
dmVCeSgtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4
dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsK
ICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVo
YXZpb3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAg
IGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRl
eHQsIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQsIHBh
aW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZp
b3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24p
OwogCi0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcAppbmRleCBkZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVh
YjdlLi5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25z
dAogICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigq
aW1hZ2UpOwogICAgIEludFNpemUgc2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9u
cz4oMCkpOwotCi0gICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0g
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJ
bWFnZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhh
bmRsZSBFWElGIHJvdGF0aW9uLgorICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdl
LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwg
eyB7IH0sIHNpemUgfSk7CiAKICAgICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAwYWZjMDE3
MmM5YjNjOGUyNzk2NTg1OTgzYzU1NWNmYjIyYWVjOWJiLi5iMTU3OWEyMGQ0ZDhmZDIyYjVlODAx
ODZhYmIxOTkzNTRiMjRkOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE5OTIsNyArMTk5Miw3IEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0
b3JlU2l6ZSA9IHNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2Nh
bGVGYWN0b3IpOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGll
cy5jcHAKaW5kZXggMTIwMjYzZDY1ZDYxZjU5MWU1ZjFmNjdmZDRmZThiZjUzZWZmYzMzMC4uODMx
ZjE4YjQ2NDBlNTgwYjM3YTQxNTkyNTA1ZmVmYWRhMDBhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJl
YWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwg
Q3JlYXRlU2gKICAgICAgICAgaWYgKCFzbmFwc2hvdEltYWdlKQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKHNuYXBzaG90UmVjdC5zaXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFw
KSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFw
c2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAg
ICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtODMsNyArODMs
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVy
SW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1w
dHkoKSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAxIHx8IGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAx
KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3Bh
Y2VGb3JCaXRtYXApIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOwogICAg
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTExNCw3ICsx
MTQsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVu
ZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBP
bmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2Ft
dXQuCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkg
fSk7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRT
aXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAg
aWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggZDMxZjQyNWI4ZDEzZDg3ZTFiYTRkMTY0NDE0YWMxMjVhNDYzYTYwZi4uMTNk
Yjg3YmM2ZWE1ZDI1ZmQ2MWVlNjk1NGUyYmRmNzY5YThiNjkyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0aW9uRGlzYWJsZXIu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgpA
QCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yQ2hvb3Nlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTk0MSw4ICs5NDMsMTIgQEAgV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50OjpkaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWMKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewotICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNo
b3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkgeworICAgICAgICBpZiAocHVycG9z
ZSAhPSBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hh
cmVhYmxlU25hcHNob3QsIHsgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDVlNWNlZmY3MDFj
OWU0YWUxZDhiZTNlNTgxNDBlOGRiMTQzZmM0NTYuLmViMmE2OGQzNTUwOTZiYTJlMGM3ZjZiYTM5
MDczNWFiNDg2ZjNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3Vy
ZmFjZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXpl
LCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VT
aXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlMWUwZTYxMTJh
MmRlZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0Li5iMTQzNThjMmNjMjk2MDRhNTAyNjUyODFj
OGQyMTUyNDZlZDgyMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC02OCw3
ICs2OCw3IEBAIHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdl
LCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3Bh
Y2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJh
bWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlMDcxM2YwMmE4NzdjMGI3
NjQzZDYyOTJlYzU5ODZkZDI0ZDNjN2MuLjdhMDYzNmQ0ZDQ5M2E5NWUyZDQ0YWRlYmE0YjY1MWMy
NzhlMGRlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTc2LDggKzc2LDgg
QEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHBhZ2VDb29yZGluYXRlcywgUGwKICAgICBpbnQgYmFja2luZ1N0b3JlV2lkdGggPSBz
dGQ6Om1heChwYWdlQ29vcmRpbmF0ZXMud2lkdGgoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudElu
c2V0TGVmdCgpIC0gbV9wb3B1cENsaWVudC0+Y2xpZW50SW5zZXRSaWdodCgpLCBwb3B1cFdpZHRo
KTsKIAogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZShiYWNraW5nU3RvcmVXaWR0aCwgKGl0
ZW1Db3VudCAqIGRhdGEubV9pdGVtSGVpZ2h0KSk7Ci0gICAgZGF0YS5tX25vdFNlbGVjdGVkQmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKLSAgICBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEu
bV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tp
bmdTdG9yZVNpemUsIHsgfSk7CisgICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4
dCA9IGRhdGEubV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gc2VsZWN0ZWRCYWNraW5n
U3RvcmVDb250ZXh0ID0gZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBmOWExMWM2NTI4ODg4YjEzMmM3
MjA3YThmM2E1ZGJiYzk1ODNkMjdiLi44ZDcxYzBhOTVjYThiZjE2ODJkOTE2MjQ0OWZhM2YxYWY1
MTk2NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7
IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYml0bWFwU2l6
ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXgg
MWQ2NDNiNmI0Mjg4ZDA4ZTAzOGM0NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRlYmVhYjgw
NjgyNDI5OGRkYTk3ZWZmY2M0MGM3YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIwICszMTks
MTggQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3Qg
bWF0Y2hJbmRleCkKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKG1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUp
LT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25hcHNob3Qg
PSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hv
dCgpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24p
OwogCiAgICAgaWYgKCFzZWxlY3Rpb25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBzaG90LT5j
cmVhdGVIYW5kbGUoaGFuZGxlKTsKLQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9uU25hcHNo
b3QtPmNyZWF0ZUhhbmRsZSgpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRH
ZXRJbWFnZUZvckZpbmRNYXRjaChoYW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc2Vs
ZWN0aW9uU25hcHNob3QtPnBhcmFtZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7CiB9CiAK
IHZvaWQgRmluZENvbnRyb2xsZXI6OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IDcxZWQxODgyZmI0MjRkMjFjNjc5ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLjlhY2VjNjZiZWJkZDVi
ZWQ1MDNmYTM5ZjAxYWE4ZmMxZDQyZGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2Vi
Q2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxDRkRhdGFS
ZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNr
LCB2b2lkCiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNy
ZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBzaG90ID0g
c25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFn
czo6Rm9yY2VCbGFja1RleHQgfSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSB9KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24o
KmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQs
IFdlYkNvcmU6OlNuYXBzaG90RmxhZ3M6OlNoYXJlYWJsZSB9LCBQaXhlbEZvcm1hdDo6QkdSQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0pOwogICAgIGlmICghc25hcHNob3QpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgpLCB7IH0p
OwotICAgIGlmICghc2hhcmVkU25hcHNob3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBwcm92aWRpbmcgYSB3YXkgdG8gdXNlIHN1
YnBpeGVsIGFudGlhbGlhc2luZyBmb3IgdGhlIHNuYXBzaG90Ci0gICAgLy8gaWYgd2UncmUgY29t
cG9zaXRpbmcgdGhpcyBpbWFnZSBvbnRvIGEgc29saWQgY29sb3IgKGUuZy4gdGhlIG1vZGVybiBm
aW5kIGluZGljYXRvciBzdHlsZSkuCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRT
bmFwc2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRl
eHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGdyYXBo
aWNzQ29udGV4dC0+c2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9hdFBvaW50
KCkpOwotCi0gICAgcmV0dXJuIHNoYXJlZFNuYXBzaG90OworICAgIHJldHVybiBXZWJJbWFnZTo6
Y3JlYXRlKHNuYXBzaG90LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUF9C
T1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKaW5kZXggNmMzYTk0ODZlNDQzNDJhZmNiNTRkYTc2YTIyY2EzZDAzYzIxNmVjNS4uZDM5ZmIy
NWI2YmZhYzM2YWY5YTY3ZmJjNmNlZmY0OTFlMDk4ZTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDsKK2NsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFt
ZUluZm9EYXRhOwogc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CkBAIC0xODQsNyArMTg1LDcg
QEAgcHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHdlYkFyY2hpdmVEYXRhKEZyYW1l
RmlsdGVyRnVuY3Rpb24sIHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OworICAgIFJlZlB0
cjxXZWJJbWFnZT4gY3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25JRCBmaXJzdExheWVyVHJlZVRyYW5zYWN0
aW9uSURBZnRlckRpZENvbW1pdExvYWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGF5ZXJUcmVl
VHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwNDg1ODYzNjgyMzUwZGJmYzFiZGVmYzJj
ZTA3NjU4NGE1YTMzMDUwLi4zYTRkMmZlYzRjNTUzNmM2ODE0MTBjZGRlNGJjZGY3NTc1YTZkMDdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MjY0MSw3ICsyNjQxLDcgQEAgdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFw
c2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3AKIAogICAgIFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGltYWdlLT5i
aXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRs
ZSk7CiB9CkBAIC0yNzEwLDE0ICsyNzEwLDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplCiAg
ICAgfQogfQogCi1zdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuYXBzaG90
T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV2Vi
UGFnZSYgcGFnZSkKK3N0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc25hcHNob3RDb2xvclNw
YWNlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQogewotICAgIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShDRykKICAg
ICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICByZXR1cm4gc2NyZWVuQ29sb3JT
cGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKLSAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMpCkBAIC0yNzMwLDE0ICsyNzI5LDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gV2Vi
UGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYg
Yml0CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRp
b25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmln
dXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
LCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5j
bGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRp
b25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBhdXRv
JiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIHBhaW50U25hcHNo
b3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmll
dywgZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KQEAgLTI3Njgs
MjcgKzI3NjUsMjYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2Vi
Q29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGkKICAgICAgICAgc25hcHNob3RT
aXplID0gSW50U2l6ZShzbmFwc2hvdFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVt
SGVpZ2h0KTsKICAgICB9CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShz
bmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFw
c2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBh
dXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0
aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywg
KnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFw
c2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZ3JhcGhpY3ND
b250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJsZSBk
ZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZh
Y3Rvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRl
dmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgc2NhbGVGYWN0b3IgLz0gZGV2aWNlU2NhbGVGYWN0
b3I7CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsK
KyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29u
dGV4dC50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIENvbG9yIHNh
dmVkQmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAg
ICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVW
aWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RS
ZWN0LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29y
ZGluYXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhp
Y3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJh
bWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXRO
b2RlVG9EcmF3KG51bGxwdHIpOwpAQCAtNTY2MSwzNyArNTY1NywzMyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZgogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGlu
ZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwotICAgICAgICBpZiAoIWJpdG1hcCkgewor
ICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBJbWFnZU9wdGlvbnNT
aGFyZWFibGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCAmbV9wYWdlLT5jaHJvbWUo
KS5jbGllbnQoKSk7CisgICAgICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KSB7Ci0gICAg
ICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6
ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2NhbGUocHJpbnRpbmdTY2FsZSk7CisKKyAgICAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0g
aW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19j
YXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zY2FsZShwcmludGluZ1NjYWxlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRm
RG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fcHJpbnRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+dHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBkcmF3UERG
RG9jdW1lbnQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9jdW1lbnQu
Z2V0KCksIHByaW50SW5mbywgcmVjdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoKmdy
YXBoaWNzQ29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChSZXRhaW5Q
dHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1l
KGNvcmVGcmFtZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7CisgICAg
ICAgICAgICBkcmF3UERGRG9jdW1lbnQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgfSBlbHNlCisj
ZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChn
cmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UgPSBXZWJJ
bWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAjZW5kaWYKIAog
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLQogICAgIGlmIChpbWFnZSkKLSAg
ICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFu
ZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoaGFuZGxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYmFkNWRlNGYxNTZmNzBmNzM5OWZmNWUyYzI3
Yzc5MDFiOTVjNTZlYy4uNjg1YzZmMGE2NmVmOTVkYTcwMGFjMTk4OGI4NDIyYzgxZTVlYmJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTMxMDIsOCArMzEwMiw4IEBAIHN0YXRpYyB2b2lkIHRleHRJbnRlcmFjdGlvblBv
c2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSFRNTElucHV0RWxlCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5v
ZGUoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29u
dGFpbnMgYXQgbW9zdCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KLSAg
ICBpZiAoUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBT
bmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICByZXR1cm4gJnNu
YXBzaG90LT5iaXRtYXAoKTsKKyAgICBpZiAoYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShl
bGVtZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQorICAgICAgICBy
ZXR1cm4gc25hcHNob3QtPmJpdG1hcCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDFhNzg5Zjk5ZDg5ZjY3ZjgwMjE1ZmQxNjYxNTA5Y2UzMzRkYjE4NjEuLmJkNTU4YjI4MmI2
NWUxM2U0MjRmYWZkNzI1MjE1ZmM5NTU1YjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTc2LDkgKzU3NiwxMyBA
QCB2b2lkIFdlYlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQogICAg
IGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgbGF5ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAgbGF5ZXIt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgLWltYWdlLT5zaXplKCkuaGVpZ2h0KCkpKTsKLSAg
ICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdlLT5i
aXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1MYXll
cigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFn
ZSogaW1hZ2UpCkBAIC01OTEsOCArNTk1LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3Zl
cmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsK
KyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0
U2l6ZShpbWFnZS0+c2l6ZSgpKTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRz
ID0gKF9fYnJpZGdlIGlkKWltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsK
KyAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRl
SGVhZGVyQW5kRm9vdGVyTGF5ZXJzRm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2NhbGVGYWN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTNmOGE1NmNk
MmJmOGEzODBjOTFmMjhlMjdlN2I2MzgwNmI3ZTMzOS4uYTg3YTIzMjU3ODJmYzA5NTQwYjMyNjlk
Zjg0NmE0ZDU0OTJkYzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMjIwNCw2ICsyMjA0LDggQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVS
ZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgICAgICByZXR1cm4gbV91
c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9z
ZTo6RE9NOgogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nOgorICAgIGNh
c2UgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3Nl
OjpTaGFyZWFibGVTbmFwc2hvdDoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRP
TVJlbmRlcmluZzsKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAg
ICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYTsK
</data>
<flag name="commit-queue"
          id="487076"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458244</attachid>
            <date>2022-04-24 22:57:21 -0700</date>
            <delta_ts>2022-04-25 22:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220424225720.patch</filename>
            <type>text/plain</type>
            <size>102303</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlOWRkYjNmNzgxZDQ5
ZTBhY2ZiYTQyZWEzYzQ1YjJmYTRkOTVjZC4uYzU1OWRjNTBjNjQ5MWY1NmZkZjdiY2Y3YWY0ZGI3
NjlhN2ZlNDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTA0LTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dpbkNhaXJvXSBVbnJldmlld2Vk
IGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZTU1YTA2NzA4N2NhM2E2ZTNjNzExNzBjOWQ0MjU1ZGFi
NjZkMzdhLi5jYmRiNGI1MTBkOWViOGNmZWExODcxYzI5OGJiNGE5OWYwNTZjZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgV2ViSW1hZ2UgYmUgYmFj
a2VkIGJ5IEltYWdlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzk1MjcKKyAgICAgICAgcmRhcjovLzkxMTEzNjI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL3djL1dDU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXQ1NjZW5lOjp1cGRhdGUp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKToK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdl
KToKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpzZXRJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0
ZXNQZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmlzQmFj
a2VkQnlTaGFyZWRNZW1vcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Vc2Vy
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OldlYkltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6cGFyYW1ldGVycyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkltYWdlOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2ViSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
Yml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6
CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNu
YXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2Ny
ZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSByZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnM6d2lkdGg6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VG
b3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFy
ZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1
cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydERy
YWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dp
bi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNl
dFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNu
YXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNCAgRGFuaWVsIEtvbGVzYSAgPGRrb2xlc2FAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVc2UgdXRmLTggZm9yIHRleHQgbW9kZSBmaWxlcyBpbiBnZW5lcmF0
ZS1hdXRvbWF0aW9uLWF0b20ucHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDljMGI4Mjk3NzZmZjUwOWU2Ny4uZDc5
MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyArODEsOCBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRS
ZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7
CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVj
dGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucy5mbGFn
cy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKSkK
QEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVj
dFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0
aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3Bh
Y2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8gcHVycG9zZSA9IG9wdGlvbnMuZmxh
Z3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxlKSA/IFJlbmRlcmluZ1B1cnBvc2U6
OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q7CisgICAgYXV0
byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3Qo
KSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBw
dXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRpb25zLnBpeGVsRm9y
bWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVj
dC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICghY2xpcFJlY3RzLmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IGU0YjlkMDA5Yzcy
NDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJjMmZmZDAyMTc3NzE4YTc3YzU1MzRl
NjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgK
QEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hvdEZsYWdzIDogdWludDhfdCB7CiAg
ICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQsCiAgICAgUGFpbnRF
dmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1LAogICAgIFBhaW50V2l0aEludGVn
cmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVhYmxlID0gMSA8PCA3LAogfTsKIAog
c3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggMWNhY2M4ZjY5NDU2ZGVj
MjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uYTUyZjg4Y2ZjMTYwMmZhNDNmYmFjOTQ4MGZjMGIy
NzUzODcwMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY3JlYXRp
b25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZmZXJUeXBlKHBhcmFt
ZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRl
cnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTUzLDYgKzUzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZmZXJUeXBlPihw
YXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5
cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tl
bmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBhNWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLjY5
ZmUxYmMxOWMxMjM4MzljYjQwZDYyMzBiYmI0ZjQ0YjM2YjAxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKKyNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAg
LTkwLDYgKzk0LDkgQEAgcHVibGljOgogICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZTsKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CiAgICAgICAgIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVy
Jik7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFj
a2VuZCgpOwpAQCAtMTI4LDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZp
cnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dM
ZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKKyNpZiBVU0UoQ0FJUk8pCisgICAgdmlydHVhbCBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc0luVXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICNpZiBIQVZFKElPU1VSRkFDRSkKQEAgLTE4Myw2ICsxOTQsNDUgQEAgcHJv
dGVjdGVkOgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbG9naWNhbFNpemU7
CisgICAgZW5jb2RlciA8PCByZXNvbHV0aW9uU2NhbGU7CisgICAgZW5jb2RlciA8PCBjb2xvclNw
YWNlOworICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBwdXJwb3Nl
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bG9naWNhbFNpemU7CisgICAgZGVjb2RlciA+PiBsb2dpY2FsU2l6ZTsKKyAgICBpZiAoIWxvZ2lj
YWxTaXplKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gcmVzb2x1dGlvblNjYWxlOworICAgIGRlY29kZXIgPj4gcmVzb2x1dGlvblNjYWxl
OworICAgIGlmICghcmVzb2x1dGlvblNjYWxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+
IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhl
bEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUHVycG9zZT4gcHVycG9zZTsKKyAgICBkZWNvZGVyID4+IHB1cnBvc2U7Cisg
ICAgaWYgKCFwdXJwb3NlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyAqbG9naWNhbFNpemUsICpyZXNvbHV0aW9uU2NhbGUsICpjb2xvclNwYWNlLCAqcGl4
ZWxGb3JtYXQsICpwdXJwb3NlIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBu
YW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bmRlcmluZ01vZGUuaAppbmRleCBhMjE2YjBlZDE1ZjczZTYzODE2Y2NjZjBlNjZlNmFkMGE5MDkx
ZDIwLi40YmJkMTc5NDcyNTNhMTkwYTJlNzU3NTg5MzM1MjllNzczNDg5NjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMy
LDggQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgQ2FudmFz
LAogICAgIERPTSwKICAgICBMYXllckJhY2tpbmcsCisgICAgU25hcHNob3QsCisgICAgU2hhcmVh
YmxlU25hcHNob3QsCiAgICAgTWVkaWFQYWludGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZWEwNDlhOTk1MzIxN2M2M2JiZTdk
NDEzY2RhN2RhYTk3MjYyMjBmMS4uYTZmZDBkYTk2NTE0Y2U3NWI0YWU4NGVkNmVjNjYzNmE5MThh
NGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC02NSwyMSArNjUsMjMgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwogfQogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorc3RhdGljIGlubGluZSBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBjbG9uZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90JiBzdXJmYWNlKQogewotICAgIHN3
aXRjaCAoY29weUJlaGF2aW9yKSB7Ci0gICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7Ci0gICAg
ICAgIGF1dG8gY29weSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJP
X0ZPUk1BVF9BUkdCMzIsCi0gICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1f
c3VyZmFjZS5nZXQoKSksCi0gICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodCht
X3N1cmZhY2UuZ2V0KCkpKSk7CisgICAgYXV0byBjb3B5ID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoJnN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoJnN1cmZh
Y2UpKSk7CiAKLSAgICAgICAgYXV0byBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShjb3B5Lmdl
dCgpKSk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFU
T1JfU09VUkNFKTsKLSAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBt
X3N1cmZhY2UuZ2V0KCksIDAsIDApOwotICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7Cisg
ICAgYXV0byBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShjb3B5LmdldCgpKSk7CisgICAgY2Fp
cm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgJnN1cmZhY2UsIDAsIDApOworICAgIGNh
aXJvX3BhaW50KGNyLmdldCgpKTsKIAotICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShXVEZNb3ZlKGNvcHkpKTsKLSAgICB9CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Cit7CisgICAgc3dpdGNoIChj
b3B5QmVoYXZpb3IpIHsKKyAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIHJldHVy
biBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNsb25lU3VyZmFjZSgqbV9zdXJmYWNlKSk7CiAKICAgICBj
YXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShSZWZQdHIgeyBtX3N1cmZhY2UuZ2V0KCkgfSk7CkBAIC04OSw2ICs5MSwxMSBAQCBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZQogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJv
U3VyZmFjZSgpCit7CisgICAgcmV0dXJuIGNsb25lU3VyZmFjZSgqbV9zdXJmYWNlKTsKK30KKwog
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJv
U3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApp
bmRleCBiNmI1NmQ4NjZiZGYwY2U3MzZjN2NmZTBiMTNhYWI1NWEyNmQ5OGNkLi45OWJiYzVmMjRm
NmQzMGFlNjBmZDI2ZGFmNDYwYTY3MWQxNmFhMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25z
dCBvdmVycmlkZTsKIAorICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpIG92ZXJyaWRlOworCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMTI1OTk4ZmY1NWNkZTAyM2RkODcyOTNlMmVhYjI0ZmQ2
ODRkN2RmYS4uZDVmYTE1M2FjMmFiNWZlMzIzNDdhZDQyMzg3N2UxNTMzYzA3ZDJiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVk
SWRlbnRpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBp
bWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKICAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUg
OiBpbWFnZUJ1ZmZlci0+dHJ1bmNhdGVkTG9naWNhbFNpemUoKTsKLSAgICAgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IGltYWdl
QnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUocmVzdWx0U2l6ZSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0p
OwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0
byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKQEAgLTMyOCw3ICsz
MjgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZQogICAgICAgICBpZiAoIWltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7
Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
SW50U2l6ZShpbWFnZVNpemUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAg
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZVNp
emUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAgICAgIGlmICghYml0bWFw
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL3djL1dDU2NlbmUuY3BwCmluZGV4IDdlMjI1ODIyNDhiNzI1NmRmZTk1MjVlZGY3OWIz
OTAxYjFhYWVkZTYuLjdhMTY2N2Y3YTEyM2IzODY1OTgyMjk4OGNjYzgxMTNhYTBkNTVlZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAK
QEAgLTIyNyw3ICsyMjcsNyBAQCBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUluZm8+IFdDU2NlbmU6OnVw
ZGF0ZShXQ1VwYXRlSW5mbyYmIHVwZGF0ZSkKIAogICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5m
bz4gcmVzdWx0OwogICAgIGlmIChtX3VzZXNPZmZzY3JlZW5SZW5kZXJpbmcpIHsKLSAgICAgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSh3aW5kb3dTaXpl
LCB7IH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHdp
bmRvd1NpemUsIHsgfSk7CiAgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aW5kb3dTaXplLndp
ZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCksIEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRF
LCBiaXRtYXAtPmRhdGEoKSk7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKICAgICAgICAgaWYgKGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGYyMTA5NmFhYWNkMGQ5ZjdjMDA2ZTk4ZjczMTFh
NDc5MmYwNGM3YTMuLmQxNTA4ZDUyZjA5N2NjNjEyNGY5YzEyOTk5ZGU3MGY3MWExMTM5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJ
bWFnZUZvckN1cnJlbnRUaW1lCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIGltYWdl
U2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7Cisg
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgcGxh
eWVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiB7
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1h
Z2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fp
cm8uY3BwCmluZGV4IGM4Y2M1YWE4ZmNiOTQ4MjBiZGRkNzk1NjUzMWYxNmYyMTQyODY3Y2QuLjUz
MDJkNTY2ZjgwZjkzY2FlYmNjNzBjMDcwYTk5MzBlZGIyMTUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcApAQCAtMzYsMTYgKzM2
LDE2IEBACiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tJbWFn
ZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFzcyBhIFJlZlB0ciB0aHJvdWdo
IHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZlcmVuY2UuCi0gICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCku
bGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmNyZWF0ZUNh
aXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJv
bUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9w
dGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChz
dXJmYWNlKSk7CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShp
bWFnZVNpemUsIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKLSAg
ICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7
CisgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKICAg
ICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4
IGYyZDMzMzQ3OGMyYWRiOWEzMTU2MGFmZTJjMGM4MDI0MTM0MGM1YWUuLmNiZTkxMjRmNDM1OWIy
ZTQ4ZjhlNGJkYWJkODdmMjQwMmMyYmY3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2cvV0tJbWFnZUNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSwxMiBAQCBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVh
dGVDR0ltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiAgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLm1ha2VD
R0ltYWdlQ29weSgpLmxlYWtSZWYoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gd2ViSW1hZ2Ut
PmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiB9CiAKIFdL
SW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdL
SW1hZ2VPcHRpb25zIG9wdGlvbnMpCkBAIC01MywxNCArNTgsMTIgQEAgV0tJbWFnZVJlZiBXS0lt
YWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMg
b3B0aW9ucykKICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlLT5z
aXplKCk7CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFn
ZVNpemUsIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogCi0gICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUp
OwotICAgIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0
LCByZWN0KTsKKworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclJlY3QocmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgcmVj
dCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXgg
MDQwMzYyMDAwZjVmMzVkNGNiNTY3MmY1YzdmNzZhYWExODIxNzYwNS4uZmU5MTVkMTc4NzAxYzk0
YjdmNGU2Y2NlNWI2ZjViNTgzYjE5ZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQ29udGV4dE1lbnVD
b250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgbWVudUxvY2EKIHZvaWQgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6c2V0SW1hZ2UoV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlKQogewogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGlu
ZyBzdHJhdGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgotICAgIG1fY29udHJvbGxlZEltYWdlID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwg
eyB9KTsKKyAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKElu
dFNpemUoaW1hZ2UtPnNpemUoKSksIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBt
X2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgaWYgKCFncmFw
aGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0YWEzZTVkODkyYTg4M2QwN2M4Zjg1MzgzNjk4MDlk
YTcwYmZmYzljLi5iMzIzNzhkNzE1NjZmZWMzNjU5MDJlMWJlZjk4ZjQ5ODNiMjZlZDc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcg
QEAgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXIKIHsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUo
KSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBj
b25zdAogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoV0tDR0NvbW1hbmRzQ29udGV4dENvcHlF
bmNvZGVkRGF0YShtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgQVNTRVJUKGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMmVh
NDM2OTgyNWI3NzJlODEwZDIwMDUwMzgyZWU4MDNlY2NlODBjOS4uZjQ1ZGZlMzRkMTE3ZDE0YzE2
YzJhMDAzN2EyMmJmMTYwY2U4NjJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkludFNp
emUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogICAg
IC8vIE5PVEU6IFRoZXNlIGFsbCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVD
b3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAyN2U4MjBlMjNjZjg4YTFiZjU4YWY5
OGZjNWMwZmMyYTg1ZGVmODMzLi5lNGRlYWQ1Zjg5MzhjZTE2YzY4Y2NjMGUyZDIwOWNmNTNkODAy
NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTksMjAgKzk5
LDYgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24KIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uKQotewotICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKTsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZp
Z3VyYXRpb24pOwotICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgdm9pZCogZGF0YSA9IDA7Ci0gICAgZGF0YSA9IFNoYXJlYWJs
ZUJpdG1hcE1hbGxvYzo6dHJ5TWFsbG9jKG51bUJ5dGVzKTsKLSAgICBpZiAoIWRhdGEpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0
bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIGRhdGEpKTsKLX0KLQotUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewogICAgIHZhbGlkYXRlQ29uZmlndXJh
dGlvbihjb25maWd1cmF0aW9uKTsKICAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXpl
KHNpemUsIGNvbmZpZ3VyYXRpb24pOwpAQCAtMTIzLDEzICsxMDksMTEgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ28KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25m
aWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJl
YWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51
bGwoKSkpOwogfQogCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiB7Ci0g
ICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7Ci0KICAgICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbik7CiAgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBj
b25maWd1cmF0aW9uKTsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtMTM5
LDcgKzEyMyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1h
cChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJl
ZE1lbW9yeSkpKTsKIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBw
cm90ZWN0aW9uKQpAQCAtMTQ4LDEzICsxMzIsMTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW8K
ICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24sIFdURk1v
dmUoc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5k
bGUubV9jb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
IGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChpc0Jh
Y2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwotCiAgICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3JlYXRl
SGFuZGxlKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwpAQCAtMTYyLDM0ICsxNDQsMTYgQEAgYm9v
bCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uIHByb3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2hhcmVhYmxlQml0
bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uLCB2b2lkKiBkYXRhKQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKLSAgICAsIG1fZGF0YShkYXRhKQotewotfQotCi1T
aGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUs
IENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRN
ZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKQotICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5KQotICAgICwgbV9kYXRh
KG51bGxwdHIpCisgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiB7
CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCgpCi17Ci0gICAgaWYgKCFp
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6
ZnJlZShtX2RhdGEpOwotfQotCiB2b2lkKiBTaGFyZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAog
ewotICAgIGlmIChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAgICAgIHJldHVybiBtX3No
YXJlZE1lbW9yeS0+ZGF0YSgpOwotCi0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1f
ZGF0YTsKKyAgICByZXR1cm4gbV9zaGFyZWRNZW1vcnktPmRhdGEoKTsKIH0KIAogQ2hlY2tlZFVp
bnQzMiBTaGFyZWFibGVCaXRtYXA6Om51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplIHNp
emUsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggNGEwNzQwMDE3MzVkZjg2
NGY0ZjRiZTFmOWU3NjU1MjQwM2VjM2Y1NC4uY2EzZDg0NGJkYWVjYjAzNjAyNTdkOGI4MDZkZWM4
YmQ5OGRlN2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
OSwxNCArNzksMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBDaGVja2VkVWludDMyIGNhbGN1bGF0
ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKICAg
ICBzdGF0aWMgQ2hlY2tlZFVpbnQzMiBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZp
Z3VyYXRpb24mKTsKIAotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2Vz
IG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKLQogICAgIC8vIENy
ZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgd2hvc2UgYmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJl
ZCB3aXRoIGFub3RoZXIgcHJvY2Vzcy4KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9u
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJs
ZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IENvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAgICAgLy8gQ3JlYXRlIGEg
c2hhcmVhYmxlIGJpdG1hcCBmcm9tIGEgaGFuZGxlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
ID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwpAQCAtOTQsMTEgKzkxLDEy
IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5k
bGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0OwogCi0gICAgflNoYXJlYWJsZUJpdG1hcCgpOwotCiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkpOyB9CiAKKyAgICB2b2lkKiBkYXRh
KCkgY29uc3Q7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gY2FsY3Vs
YXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9CisKICAgICAvLyBDcmVh
dGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUg
YmFja2luZyBzdG9yZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIApAQCAtMTA2LDggKzEwNCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNl
KTsKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxl
RmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNvdXJjZSk7CiAKLSAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnko
KSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeTsgfQotCiAgICAgLy8gVGhpcyBjcmVhdGVz
IGEgYml0bWFwIGltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1h
cCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhh
dCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY3JlYXRlSW1hZ2UoKTsKQEAgLTEzMCw4ICsxMjYsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTaGFyZWFibGVCaXRtYXAoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKLSAgICBTaGFyZWFibGVC
aXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IENvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAjaWYgVVNFKENHKQogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBj
b25zdDsKQEAgLTE0MywxMSArMTM4LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlU3VyZmFjZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXApOwogI2VuZGlmCiAKLXB1YmxpYzoK
LSAgICB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Qg
eyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9
Ci0gICAgCi1wcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KIAogICAgIFdlYkNv
cmU6OkludFNpemUgbV9zaXplOwpAQCAtMTU3LDExICsxNDcsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9yZWxlYXNlQml0bWFwQ29udGV4dERhdGFDYWxsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAK
LSAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9y
eSwgdGhpcyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgotICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotCi0gICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBi
aXRtYXAgaXMgYmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRo
ZSBkYXRhLgotICAgIHZvaWQqIG1fZGF0YSB7IG51bGxwdHIgfTsKKyAgICBSZWY8U2hhcmVkTWVt
b3J5PiBtX3NoYXJlZE1lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IGUxOTQwNzM3Mjg2ODUyZDAyM2FhOWFhMTkxNGFjZDAw
ZDMyNjFhNzUuLjdmZmE5ZGFmMjc0MTVhNzI2Y2U0NGE5ZDM0NmU1ZDU2NzIwMzRmZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjExLDkgKzIxMSw4IEBAIHZvaWQgVXNlckRhdGE6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBvYmplY3QpCiAg
ICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6SW1hZ2U6IHsKICAgICAgICAgYXV0byYgaW1hZ2Ug
PSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbWFnZSY+KG9iamVjdCk7CiAKLSAgICAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCku
aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5p
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZSho
YW5kbGUpKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gaW1hZ2UuY3JlYXRlSGFuZGxlKCk7Cisg
ICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFs
c2UgaW5kaWNhdGVzIG5vIGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KICAg
ICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMSw2
ICsyMjAsNyBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogCiAgICAgICAgIC8vIEluaXRpYWwgdHJ1ZSBpbmRp
Y2F0ZXMgYSBiaXRtYXAgd2FzIGFsbG9jYXRlZCBhbmQgaXMgc2hhcmVhYmxlLgogICAgICAgICBl
bmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgaW1hZ2UucGFyYW1ldGVycygpOwog
ICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzkw
LDE1ICszOTAsMTYgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRpZEVuY29kZSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gcGFyYW10
ZXJzOworICAgICAgICBkZWNvZGVyID4+IHBhcmFtdGVyczsKKyAgICAgICAgaWYgKCFwYXJhbXRl
cnMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgICAgICBpZiAoIWJpdG1hcCkKKyAg
ICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
cmVzdWx0ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoKnBhcmFtdGVycywgV1RGTW92ZShoYW5kbGUp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmNzQ4YmRmMzczNjE4MDgzZWFkYzk1YmY4YTZi
YjMyYjYzN2IwYmFkLi42YWEwZWM4NGZhNjE0MWVlOTg1Y2NjZWEyMzE0NDk3NmRmMTA5NmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTEwMTcsNyArMTAxNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRpYyB2b2lk
IGVuY29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlm
ICghZ3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVkMjJlNTc0
Li5iNzQ4YWFiMDAwY2IyYTNlZjA3ZWZjNjFkZmZmYzNmNWVjNzA4OGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4NzIsOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U+
IHsKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAgICAgICBX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmlu
Z1B1cnBvc2U6OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9z
ZTo6U25hcHNob3QsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJs
ZVNuYXBzaG90LAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50
aW5nCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggOTljOTUzY2Zj
MjI4MmU3YWU3ZTM1YjM1ZGIwYzFlNDE4NTIyYzA1OC4uYzRmNjUyNDQ2NjgyMTcxZTBiNDUzYjEy
NTIyYjQ1MjU2NmMyZDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NSArMjYs
MTIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAorI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ2hyb21lQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVm
ZmVyLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBJ
bWFnZU9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShj
b25zdCBJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBvcHRpb25zLCB7IH0pOwotfQorICAgIGlmIChj
bGllbnQpIHsKKyAgICAgICAgYXV0byBwdXJwb3NlID0gKG9wdGlvbnMgJiBJbWFnZU9wdGlvbnNT
aGFyZWFibGUpID8gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QgOiBSZW5kZXJp
bmdQdXJwb3NlOjpTbmFwc2hvdDsKKyAgICAgICAgYXV0byBidWZmZXIgPSBjbGllbnQtPmNyZWF0
ZUltYWdlQnVmZmVyKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHB1cnBvc2Us
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGlmICghYnVmZmVy
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJJbWFnZTo6
Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CiAKLVJlZlB0cjxXZWJJbWFn
ZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbWFnZU9w
dGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBiaXRt
YXBDb25maWd1cmF0aW9uKQotewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVh
YmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHNpemUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7Cisg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIGJpdG1h
cENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQorCisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LCAxLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghYnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShj
b25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8gYmFja2VuZCA9IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoaGFu
ZGxlKSk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAK
KyAgICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCkpOwor
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2Vi
SW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIFdlYklt
YWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitSZWY8V2ViSW1hZ2U+
IFdlYkltYWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpKTsKK30KKworV2ViSW1h
Z2U6OldlYkltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCit7Cit9CisKK0ludFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2J1ZmZlci0+YmFja2VuZFNpemUoKTsKK30KKworY29uc3QgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYnVmZmVyLT5wYXJhbWV0ZXJzKCk7CiB9CiAKLVJlZjxXZWJJbWFnZT4g
V2ViSW1hZ2U6OmNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKK0dyYXBoaWNz
Q29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkltYWdlKFdURk1vdmUoYml0bWFwKSkpOworICAgIHJldHVybiBtX2J1ZmZlci0+
Y29udGV4dCgpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4m
JiBiaXRtYXApCi0gICAgOiBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IFdlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3IpIGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoY29w
eUJlaGF2aW9yKTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViSW1hZ2U6OmJpdG1h
cCgpIGNvbnN0Cit7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBjb25zdF9jYXN0PEltYWdlQnVmZmVyJj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdp
bmdDb250ZXh0KCk7CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hh
cmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hh
cmluZykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0PElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5iaXRtYXAoKTsKIH0KIAot
V2ViSW1hZ2U6On5XZWJJbWFnZSgpCisjaWYgVVNFKENBSVJPKQorUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gV2ViSW1hZ2U6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CisgICAgaWYgKGF1dG8qIGJh
Y2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgcmV0dXJu
IGJhY2tlbmQtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQor
I2VuZGlmCiAKLWNvbnN0IEludFNpemUmIFdlYkltYWdlOjpzaXplKCkgY29uc3QKK1NoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIFdlYkltYWdlOjpjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7
CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwor
ICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0X2Nhc3Q8
SW1hZ2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKwor
ICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYg
KCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGF1dG8gYmFja2VuZEhhbmRsZSA9IGRvd25jYXN0PEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jcmVhdGVCYWNrZW5kSGFuZGxlKHBy
b3RlY3Rpb24pOworCisgICAgaWYgKGF1dG8gaGFuZGxlID0gc3RkOjpnZXRfaWY8U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU+KCZiYWNrZW5kSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUo
KmhhbmRsZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJJbWFnZS5oCmluZGV4IDIyZjM4NmY5ZDI5YTVkZjU3NDM4ZmJhYjQ3OGJi
Zjg2ZmUxY2QxMDUuLjk3ZTc5YmVmMmEzYmI1MzZjZjViY2E4NTNjNmUwMDgwODA2ZjEwYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTUgQEAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2hyb21lQ2xpZW50Owor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRTaXpl
OworY2xhc3MgTmF0aXZlSW1hZ2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsMjAg
KzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbWFnZSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJ
bWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb24mKTsKLSAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFNoYXJl
YWJsZUJpdG1hcD4mJik7Ci0gICAgfldlYkltYWdlKCk7Ci0gICAgCi0gICAgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFdlYkNvcmU6OkNocm9tZUNsaWVudCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik7CisgICAgc3RhdGljIFJl
ZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBT
aGFyZWFibGVCaXRtYXAmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9Ci0gICAg
Y29uc3QgU2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcC5n
ZXQoKTsgfQorICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIGNvbnN0IFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CisKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpC
YWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CisgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3Q7CisjaWYgVVNFKENBSVJPKQor
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOworI2VuZGlm
CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIFdlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYpOworICAg
IFdlYkltYWdlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBSZWY8U2hhcmVh
YmxlQml0bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fYnVm
ZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCBiZjNkZDA2MDNmNWY3YjI4ZGMxNGEx
NzI0ZDgwMDMxYTFlZmFiM2Q5Li4wNDVkZWJiODExZGQzODUzMTc2NzcyNGE0NGY1MTZhOWQ1MDlm
MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZv
aWQgZW5jb2RlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNp
emUoKSksIHsgfSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0lt
YWdlKGltYWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggZWQ5YTk2MGY1YThkZTZiYmNkZjMwZmU4OWUxYTFmMGM0MTFhOTEzZi4u
NDg0MjM5MTY1YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2NWJjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQzODAs
NyArNDM4MCw3IEBAIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmJp
dG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxH
RGVzdHJveU5vdGlmeT4oY2Fpcm9fc3VyZmFjZV9kZXN0cm95KSk7CisgICAgZ190YXNrX3JldHVy
bl9wb2ludGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFr
UmVmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVz
dHJveSkpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHdlYktpdFNuYXBzaG90T3B0aW9u
c1RvU25hcHNob3RPcHRpb25zKFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRl
eCAyMDczOWU1YWRiMGI3N2FmZWIzMTA1ODFlYjk2ZDdlM2E3ODAyYjcwLi4yYjE4ZTk5Mjc0ZDMy
NzhjY2MyMjg2MTU2MjViMzNlYmM1ZGFhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0
YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdl
VG9CaXRtYXAoQ29jb2FJbWFnZSAqCiAgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwog
CiAgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmln
dXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAg
IGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShyZXN1bHRSZWN0
LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCAyZWY5MDBkZjhlMDY4YjI2OGE4OWJkNGM0MDJmMzY0YjI0MzQxNjA0Li5hMzc1MGE1
MjVmMmE1MjE0ZWJiNmQ5YjI4NjE4NjI4MjI5MzMzNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY4OTYsMTQgKzY4OTYsMTQgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMy
X3QgbWF0Y2hDb3UKICAgICBtX2ZpbmRDbGllbnQtPmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0aGlz
LCBzdHJpbmcsIG1hdGNoQ291bnQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1h
Z2VGb3JGaW5kTWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFn
ZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWlu
dDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGNvbnRlbnRJbWFnZUhhbmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApIHsKKyAgICBhdXRv
IGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGNvbnRlbnRJbWFn
ZUhhbmRsZSkpOworICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlk
R2V0SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxl
YXNlTm9uTnVsbCgpKS5wdHIoKSwgbWF0Y2hJbmRleCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVu
dC0+ZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBpbWFnZS5nZXQoKSwgbWF0Y2hJbmRl
eCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFRleHRJ
bmRpY2F0b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRfdCBsaWZldGltZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDNhZDRmMDMzZTIxOWU3NTEwYzY2NGVk
ZWI3MjQ2ZWQ0NzgxNjc4MS4uYWM1OWVmYzQ4MzhhZjBhY2Q5MGE3N2NiZjZhZDllZGMyMDQ5NDVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMjIsNyArMTIy
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0
Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsK
ICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7Ci0gICAgdm9p
ZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKKyAgICB2b2lkIGRpZEdl
dEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWlu
dDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBoaWRl
RmluZEluZGljYXRvcigpOwogICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGUyNzZkM2UyZjc2NDA5ODZjMzhmZWM0OWQzZGM5OWIxYmFlZGFmYTAuLjQ1NTY0ZGI5M2RiODkz
MTFlZWI4M2Y4YjU0ZjMzMDY1ZjkyMmI5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0Miw3ICsyNDIsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+IG1hdGNoUmVjdCwgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50
MzJfdCBtYXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpCiAgICAgRGlkRmFpbFRvRmluZFN0
cmluZyhTdHJpbmcgc3RyaW5nKQogICAgIERpZEZpbmRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJp
bmcsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+IG1hdGNoZXMsIGludDMyX3QgZmly
c3RJbmRleEFmdGVyU2VsZWN0aW9uKQotICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBt
YXRjaEluZGV4KQorICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKHN0cnVjdCBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgcGFyYW1ldGVycywgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgp
CiAKICAgICAjIFBvcHVwTWVudSBtZXNzYWdlcwogICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6
SW50UmVjdCByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBWZWN0b3I8V2ViS2l0OjpXZWJQ
b3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIHN0cnVjdCBXZWJLaXQ6OlBs
YXRmb3JtUG9wdXBNZW51RGF0YSBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNzIwNzVmYmM4NjJjMzRkMGM4NmI0YWM1
MzhlNGM0NjY5OWNiZWU0Mi4uNGI5ZTM1OTUzYjZiMzc3ZTFlOTA3YTEwNjcwYWUwYzY2ZjQ0YmEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xp
ZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5NCwxMSArMjk0LDE1IEBAIC0gKHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3Vs
dDooV2ViS2l0OjpXZWJJbWFnZSAqKWltYWdlCiAgICAgaWYgKF9pbWFnZVJlcGx5Q2FsbGJhY2tz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXpl
ID0gaW1hZ2UtPmJpdG1hcCgpLnNpemUoKTsKKyAgICBhdXRvIHNpemUgPSBpbWFnZS0+c2l6ZSgp
OwogICAgIHNpemUuc2NhbGUoMSAvIF9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAK
KyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VDYWxsYmFj
ayA9IF9pbWFnZVJlcGx5Q2FsbGJhY2tzLnRha2VGaXJzdCgpOwotICAgIGltYWdlQ2FsbGJhY2so
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCku
bWFrZUNHSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CisgICAgaW1hZ2VDYWxsYmFj
ayhhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2l6ZTpzaXplXSkuZ2V0KCkpOwogfQogCiAjcHJhZ21hIG1h
cmsgLSBXS1RleHRGaW5kZXJNYXRjaCBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKaW5kZXggN2FiNjdhMzQzN2EyOGExOWJkNjZlNDU1N2MzYjQ3NDU2YzFlMjExNS4u
NDlkYWNkNjNiNWViN2UwMWZjYTM3NTgwNTM4ZmU0ZDJlYjY3YjJmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgcwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaW1hZ2Ut
PmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0pLCAw
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCmluZGV4IGJmOGE0
NzAzODVmY2E3NDBkNDQzNzU2ZWFhN2Y0ZDdmYzc5ZDI2NTYuLjZlYzU2OGQwNmRiMjhlZDQwNjMx
ZTI3NTAyYTUwMGFkMjg3ZDE0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29w
eS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw1ICs0MywzIEBAIHVzaW5nIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSA9IHN0ZDo6dmFyaWFudDwKID47CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaAppbmRleCA1ODAyMjhhZjg1Zjc1M2U1OGJkZjVlZmMx
ZDA3ZDFhNmFmMDM2M2ZiLi5jZDJlOWUzZTE0Yjk4MTA2NGU1Yjg5MDNlYjQ5ZmQxZmQ4OTJmNmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaD4KIApAQCAtMzQsNyArMzIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZyA6IHB1YmxpYyBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3Jp
dGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNr
ZW5kSGFuZGxlKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaGFzQmFja2VuZEhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01Miw1ICs1
MSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1B
R0VfQlVGRkVSX0JBQ0tFTkRfU0hBUklORyhXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZVNoYXJpbmcsIGlzSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZygpKQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGExMTcwNzI0OTBlNWM3YTc5NTRmYmJlNzhmNzBmNzkz
NmVkYzJlZDEuLmJmZDQxMmMxMWI2NjNlNzNiNDBhNDI1ODk2ODBiYmE0ODg1NGM0NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXIuaD4KQEAgLTg1LDcgKzgzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1l
dGVycykpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2Vu
ZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOwogICAgIGlmICghYml0bWFwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTMsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBh
cmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJz
LCBiaXRtYXAucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb250ZXh0KSk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCkBAIC0xMTEsMTAgKzEwOSwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250
ZXh0KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPihwYXJhbWV0ZXJzLCBiaXRtYXAucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb250
ZXh0KSk7CiB9CiAKLUltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiYmIGNvbnRleHQpCitJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4mJiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQo
cGFyYW1ldGVycykKICAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKICAgICAsIG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTI2LDEwICsxMjQsMTAgQEAgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQo
Y29uc3QgUGFyYW0KICAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1
dGlvblNjYWxlKCkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNv
bnN0CiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIG1fYml0bWFw
LT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgcHJvdGVjdGlvbik7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZN
b3ZlKGhhbmRsZSkpOwogfQogCkBAIC0xNDMsNiArMTQxLDEzIEBAIHVuc2lnbmVkIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVy
biBtX2JpdG1hcC0+Ynl0ZXNQZXJSb3coKTsKIH0KIAorI2lmIFVTRShDQUlSTykKK1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKCkKK3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOworfQorI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
IHsKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpKTsKQEAgLTE2NCw1ICsxNjksMyBAQCB2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQgog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4
IDIxZGQwZDg3NTBhZGUzMzI2N2QwOGU4ODA3MWQ1ZDVjZDMzMDg0YmYuLmY1OTgyMjU3YmJhMTgx
ODk2MTg4M2JmYjIwOGNmOGM1YTI2MmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgpAQCAtNDMsNiAr
NDEsNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kKTsKKwogcHVibGljOgogICAgIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIFdlYkNvcmU6
OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKQEAg
LTUyLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkNyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQ
YXJhbWV0ZXJzJiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9jb250ZXh0OyB9Ci0gICAgCiAgICAg
V2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKKyAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9iaXRtYXAucHRyKCk7IH0KKyNpZiBVU0UoQ0FJUk8pCisgICAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgZmluYWw7CisjZW5kaWYKIAog
ICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5h
bDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5n
U3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWw7
CkBAIC02NiwxNiArNjksMTUgQEAgcHVibGljOgogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJ
ZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKSB7IH0KKwogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZpbmFsOwogCiAgICAgSW1hZ2VCdWZm
ZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7
IH0KICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSBmaW5hbCB7IC8qIERvIG5vdGhp
bmcuIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgSU9TdXJmYWNlIGJhY2tlbmRzICovIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJlZjxTaGFyZWFibGVC
aXRtYXA+IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+IG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3Bw
CmluZGV4IDI1YjVhNDU1ODI1MGVlMDYwNTZjODQzYTE3YzEzODE5NjE2OWYzYTcuLjE2ZmE2YjJh
MDBhYjkxYzgxODk2YTQ3ZGNmNThhYmM1ZDQ3MTc0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYK
IHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKIAotICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IGltYWdl
LmNvbG9yU3BhY2UoKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGltYWdlLnNpemUoKSwgeyBpbWFnZS5jb2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkz
ZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5Yjlh
OThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJS
ZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3NGFj
OTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29u
c3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5k
bGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFj
a2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJlMTY0ZTA1N2Y2YjgxNjAuLmFlZGU3
YmVhODJhODBlMDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUo
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0
ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3du
ZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFs
OworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRl
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFy
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDll
MC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczoo
V0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgpCiAg
ICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRyPFdl
YktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0
Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9u
c0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9ub2Rl
SGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyks
IG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lk
dGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tp
bmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwog
I2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1pl
cm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNp
emU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9wdE5T
KFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJ
bWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3
MzY2MTMxYjY3ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3
MSwxNCArMTcxLDEyIEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFt
ZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFwc2hv
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9
IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhp
Y3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGlj
c0NvbnRleHQuY2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOworICAg
IGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAogICAg
IEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZy
YW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAgc3Rh
dGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBj
b25zdCBJbnRSZWN0JiBwYWludGkKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1l
Vmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihw
YWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgq
Z3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9u
LCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRD
b250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQ
YWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFt
ZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4g
c25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cAppbmRleCA5NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZj
OTNkNTNlZWYyZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwxNyBA
QCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9
IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rv
cik7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpCisg
ICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgc25h
cHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1NoYXJl
YWJsZSkpOworICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1dG8m
IGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+
ZnJhbWVSZWN0KCkueCgpLCBmcmFtZVZpZXctPmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFpbnRS
ZWN0Lm1vdmVCeSgtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBoaWNz
Q29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZp
b3IoKTsKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBh
aW50QmVoYXZpb3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlv
bgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGlj
c0NvbnRleHQsIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRl
eHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50
QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxl
Y3Rpb24pOwogCi0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFhMGVm
YWQzODVhYjdlLi5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3Mywx
MiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2Uo
KSBjb25zdAogICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcElt
YWdlPigqaW1hZ2UpOwogICAgIEludFNpemUgc2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwogICAg
IGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PEltYWdl
T3B0aW9ucz4oMCkpOwotCi0gICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRp
b24uCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgaWYgKCF3
ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBuZWVk
IHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgorICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdl
YkltYWdlLT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRtYXBJ
bWFnZSwgeyB7IH0sIHNpemUgfSk7CiAKICAgICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAw
YWZjMDE3MmM5YjNjOGUyNzk2NTg1OTgzYzU1NWNmYjIyYWVjOWJiLi5iMTU3OWEyMGQ0ZDhmZDIy
YjVlODAxODZhYmIxOTkzNTRiMjRkOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE5OTIsNyArMTk5Miw3IEBAIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFj
a2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRl
bnRzU2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAo
IWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYml0
bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5jcHAKaW5kZXggMTIwMjYzZDY1ZDYxZjU5MWU1ZjFmNjdmZDRmZThiZjUzZWZmYzMz
MC4uODMxZjE4YjQ2NDBlNTgwYjM3YTQxNTkyNTA1ZmVmYWRhMDBhOWNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJ
bWFnZSwgQ3JlYXRlU2gKICAgICAgICAgaWYgKCFzbmFwc2hvdEltYWdlKQogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKHNuYXBzaG90UmVjdC5zaXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9y
Qml0bWFwKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7
CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtODMs
NyArODMsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAo
UmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgICAgICBpZiAoaW1hZ2VTaXpl
LmlzRW1wdHkoKSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAxIHx8IGltYWdlU2l6ZS5oZWlnaHQo
KSA8PSAxKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNv
bG9yU3BhY2VGb3JCaXRtYXApIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0p
OwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTEx
NCw3ICsxMTQsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRt
YXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdp
ZGUgZ2FtdXQuCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJp
dG1hcCkgfSk7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7
CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggZDMxZjQyNWI4ZDEzZDg3ZTFiYTRkMTY0NDE0YWMxMjVhNDYzYTYw
Zi4uMTNkYjg3YmM2ZWE1ZDI1ZmQ2MWVlNjk1NGUyYmRmNzY5YThiNjkyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0aW9uRGlz
YWJsZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yQ2hvb3Nlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFn
ZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTk0MSw4ICs5NDMsMTIgQEAgV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50OjpkaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWMKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2Up
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkgeworICAgICAgICBpZiAo
cHVycG9zZSAhPSBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDb25jcmV0ZUltYWdlQnVmZmVy
PEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9z
ZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIG1fcGFnZS5l
bnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXpl
LCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDVlNWNl
ZmY3MDFjOWU0YWUxZDhiZTNlNTgxNDBlOGRiMTQzZmM0NTYuLmViMmE2OGQzNTUwOTZiYTJlMGM3
ZjZiYTM5MDczNWFiNDg2ZjNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENh
aXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkp
OwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlMWUw
ZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0Li5iMTQzNThjMmNjMjk2MDRhNTAy
NjUyODFjOGQyMTUyNDZlZDgyMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdl
IGltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNv
bG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5t
YWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlMDcxM2YwMmE4
NzdjMGI3NjQzZDYyOTJlYzU5ODZkZDI0ZDNjN2MuLjdhMDYzNmQ0ZDQ5M2E5NWUyZDQ0YWRlYmE0
YjY1MWMyNzhlMGRlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTc2LDgg
Kzc2LDggQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgUGwKICAgICBpbnQgYmFja2luZ1N0b3JlV2lk
dGggPSBzdGQ6Om1heChwYWdlQ29vcmRpbmF0ZXMud2lkdGgoKSAtIG1fcG9wdXBDbGllbnQtPmNs
aWVudEluc2V0TGVmdCgpIC0gbV9wb3B1cENsaWVudC0+Y2xpZW50SW5zZXRSaWdodCgpLCBwb3B1
cFdpZHRoKTsKIAogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZShiYWNraW5nU3RvcmVXaWR0
aCwgKGl0ZW1Db3VudCAqIGRhdGEubV9pdGVtSGVpZ2h0KSk7Ci0gICAgZGF0YS5tX25vdFNlbGVj
dGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2lu
Z1N0b3JlU2l6ZSwgeyB9KTsKLSAgICBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAg
IGRhdGEubV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG5vdFNlbGVjdGVkQmFja2luZ1N0b3Jl
Q29udGV4dCA9IGRhdGEubV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gc2VsZWN0ZWRC
YWNraW5nU3RvcmVDb250ZXh0ID0gZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBmOWExMWM2NTI4ODg4
YjEzMmM3MjA3YThmM2E1ZGJiYzk1ODNkMjdiLi44ZDcxYzBhOTVjYThiZjE2ODJkOTE2MjQ0OWZh
M2YxYWY1MTk2NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC04MjAsNyArODIwLDcgQEAg
dm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkoVXBkYXRlSW5mbyYg
dXBkYXRlSW5mbykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0g
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBT
aXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYml0
bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAK
aW5kZXggMWQ2NDNiNmI0Mjg4ZDA4ZTAzOGM0NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRl
YmVhYjgwNjgyNDI5OGRkYTk3ZWZmY2M0MGM3YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIw
ICszMTksMTggQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWlu
dDMyX3QgbWF0Y2hJbmRleCkKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKG1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
ZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25h
cHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25T
bmFwc2hvdCgpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxl
Y3Rpb24pOwogCiAgICAgaWYgKCFzZWxlY3Rpb25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBz
aG90LT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKLQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9u
U25hcHNob3QtPmNyZWF0ZUhhbmRsZSgpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChoYW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goc2VsZWN0aW9uU25hcHNob3QtPnBhcmFtZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7
CiB9CiAKIHZvaWQgRmluZENvbnRyb2xsZXI6OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRj
aEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CmluZGV4IDcxZWQxODgyZmI0MjRkMjFjNjc5ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLjlhY2VjNjZi
ZWJkZDViZWQ1MDNmYTM5ZjAxYWE4ZmMxZDQyZGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxD
RkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkCiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJh
bWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2Vi
RnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBz
aG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNo
b3RGbGFnczo6Rm9yY2VCbGFja1RleHQgfSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSB9KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxl
Y3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFj
a1RleHQsIFdlYkNvcmU6OlNuYXBzaG90RmxhZ3M6OlNoYXJlYWJsZSB9LCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0pOwogICAgIGlmICghc25hcHNo
b3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgp
LCB7IH0pOwotICAgIGlmICghc2hhcmVkU25hcHNob3QpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBwcm92aWRpbmcgYSB3YXkgdG8g
dXNlIHN1YnBpeGVsIGFudGlhbGlhc2luZyBmb3IgdGhlIHNuYXBzaG90Ci0gICAgLy8gaWYgd2Un
cmUgY29tcG9zaXRpbmcgdGhpcyBpbWFnZSBvbnRvIGEgc29saWQgY29sb3IgKGUuZy4gdGhlIG1v
ZGVybiBmaW5kIGluZGljYXRvciBzdHlsZSkuCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBz
aGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9h
dFBvaW50KCkpOwotCi0gICAgcmV0dXJuIHNoYXJlZFNuYXBzaG90OworICAgIHJldHVybiBXZWJJ
bWFnZTo6Y3JlYXRlKHNuYXBzaG90LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiAjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKaW5kZXggNmMzYTk0ODZlNDQzNDJhZmNiNTRkYTc2YTIyY2EzZDAzYzIxNmVjNS4u
ZDM5ZmIyNWI2YmZhYzM2YWY5YTY3ZmJjNmNlZmY0OTFlMDk4ZTczYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQCBjbGFz
cyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDsKK2NsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVj
dCBGcmFtZUluZm9EYXRhOwogc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CkBAIC0xODQsNyAr
MTg1LDcgQEAgcHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHdlYkFyY2hpdmVEYXRh
KEZyYW1lRmlsdGVyRnVuY3Rpb24sIHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25JRCBmaXJzdExheWVyVHJlZVRy
YW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExvYWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGF5
ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwNDg1ODYzNjgyMzUwZGJmYzFi
ZGVmYzJjZTA3NjU4NGE1YTMzMDUwLi4zYTRkMmZlYzRjNTUzNmM2ODE0MTBjZGRlNGJjZGY3NTc1
YTZkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjY0MSw3ICsyNjQxLDcgQEAgdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVj
dCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3AKIAogICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGlt
YWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGhhbmRsZSk7CiB9CkBAIC0yNzEwLDE0ICsyNzEwLDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRT
bmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBT
aXplCiAgICAgfQogfQogCi1zdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNu
YXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
cywgV2ViUGFnZSYgcGFnZSkKK3N0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc25hcHNob3RD
b2xvclNwYWNlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQogewotICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShD
RykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2Up
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFn
ZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICByZXR1cm4gc2NyZWVu
Q29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYK
LSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7CiB9CiAKIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNp
emUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCkBAIC0yNzMwLDE0ICsyNzI5LDEyIEBAIFJlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgYml0CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNo
b3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFw
Q29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJ
bWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9w
dGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXpl
LCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAg
ICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KQEAg
LTI3NjgsMjcgKzI3NjUsMjYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5v
ZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGkKICAgICAgICAgc25h
cHNob3RTaXplID0gSW50U2l6ZShzbmFwc2hvdFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBt
YXhpbXVtSGVpZ2h0KTsKICAgICB9CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNy
ZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
LCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsK
KyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBz
aG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0
aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFn
cmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZ3Jh
cGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRv
dWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VT
Y2FsZUZhY3Rvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFj
dG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgc2NhbGVGYWN0b3IgLz0gZGV2aWNlU2Nh
bGVGYWN0b3I7CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rv
cik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlv
bigpKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIENv
bG9yIHNhdmVkQmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9y
KCk7CiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAg
ZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25h
cHNob3RSZWN0LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1l
bnRDb29yZGluYXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3Qo
Z3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlv
biwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3
LT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOwpAQCAtNTY2MSwzNyArNTY1NywzMyBAQCB2b2lkIFdl
YlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZgogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5w
cmludGluZygpKTsKICNlbmRpZgogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwotICAgICAgICBpZiAoIWJpdG1h
cCkgeworICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBJbWFnZU9w
dGlvbnNTaGFyZWFibGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCAmbV9wYWdlLT5j
aHJvbWUoKS5jbGllbnQoKSk7CisgICAgICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KSB7
Ci0gICAgICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlt
YWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2NhbGUocHJpbnRpbmdTY2FsZSk7CisKKyAgICAgICAgYXV0byYgZ3JhcGhpY3NDb250
ZXh0ID0gaW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0
YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShwcmludGluZ1NjYWxlKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50
ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1fcHJpbnRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+dHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBk
cmF3UERGRG9jdW1lbnQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9j
dW1lbnQuZ2V0KCksIHByaW50SW5mbywgcmVjdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRp
ZgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJl
Y3QoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGlu
Z0ZyYW1lKGNvcmVGcmFtZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQp
OworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7
CisgICAgICAgICAgICBkcmF3UERGRG9jdW1lbnQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgfSBl
bHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29s
UmVjdChncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2Ug
PSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAjZW5k
aWYKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLQogICAgIGlmIChpbWFn
ZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3Jl
YXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYmFkNWRlNGYxNTZmNzBmNzM5OWZm
NWUyYzI3Yzc5MDFiOTVjNTZlYy4uNjg1YzZmMGE2NmVmOTVkYTcwMGFjMTk4OGI4NDIyYzgxZTVl
YmJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTMxMDIsOCArMzEwMiw4IEBAIHN0YXRpYyB2b2lkIHRleHRJbnRlcmFj
dGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSFRNTElucHV0RWxl
CiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hv
dEZvck5vZGUoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1h
Z2UgY29udGFpbnMgYXQgbW9zdCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJp
Zy4KLSAgICBpZiAoUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVt
ZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICByZXR1
cm4gJnNuYXBzaG90LT5iaXRtYXAoKTsKKyAgICBpZiAoYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90
Tm9kZShlbGVtZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQorICAg
ICAgICByZXR1cm4gc25hcHNob3QtPmJpdG1hcCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCmluZGV4IDFhNzg5Zjk5ZDg5ZjY3ZjgwMjE1ZmQxNjYxNTA5Y2UzMzRkYjE4NjEuLmJkNTU4
YjI4MmI2NWUxM2U0MjRmYWZkNzI1MjE1ZmM5NTU1YjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTc2LDkgKzU3
NiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdl
KQogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbGF5ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAg
bGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgLWltYWdlLT5zaXplKCkuaGVpZ2h0KCkp
KTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWlt
YWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZv
cm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShX
ZWJJbWFnZSogaW1hZ2UpCkBAIC01OTEsOCArNTk1LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0Qm90
dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1h
Z2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXll
ci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNv
bnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5n
ZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlk
KW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
dXBkYXRlSGVhZGVyQW5kRm9vdGVyTGF5ZXJzRm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2Nh
bGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTNm
OGE1NmNkMmJmOGEzODBjOTFmMjhlMjdlN2I2MzgwNmI3ZTMzOS4uYTg3YTIzMjU3ODJmYzA5NTQw
YjMyNjlkZjg0NmE0ZDU0OTJkYzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcApAQCAtMjIwNCw2ICsyMjA0LDggQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQogICAgICAgICByZXR1
cm4gbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5n
UHVycG9zZTo6RE9NOgogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nOgor
ICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q6CisgICAgY2FzZSBSZW5kZXJpbmdQ
dXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdDoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vz
c0ZvckRPTVJlbmRlcmluZzsKICAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRp
bmc6CiAgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JNZWRpYTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458331</attachid>
            <date>2022-04-25 22:24:55 -0700</date>
            <delta_ts>2022-04-25 23:37:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220425222454.patch</filename>
            <type>text/plain</type>
            <size>102336</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMyOTgxNjY4ZTIxMjRh
ZTIxNGJhNzE2NjllZTg2ZWEyOTUxYjA5Ni4uMDFiOTA5MDQ5N2M5NDE3ODFjNDkwZTY3NTQ4Nzc4
NDdlNWVjYWQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbmRlcmluZ01vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5oOgorCiAyMDIyLTA0LTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXF1ZXN0IGludGVyY2VwdGlvbiBzaG91bGQgbm90
IGJlIGd1YXJkZWQgYmFzZWQgb24gc2VydmljZSB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZmZWE5ZmMz
NDM3MWQ4YTJmN2Y4ZDEzNmJlM2Y2M2JmZTRjMWE0MTguLjBhYTViOGJjZjI1MDJmYjQyZDdiNTNk
ZTI1NThiNTljM2ZkMWI2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTA0LTI1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gTWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFy
Oi8vOTExMTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1h
cEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldDU2NlbmU6OnVwZGF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdL
SW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWly
b1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAg
ICAgICAoV0tJbWFnZUNyZWF0ZUNHSW1hZ2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21D
R0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OnNldEltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRs
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0
bWFwKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpkYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXApOiBE
ZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL1VzZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ckRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpl
bmNvZGVJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6V2ViSW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpwYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNvbnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6On5XZWJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkltYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXApOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Yml0bWFwIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVBlcnNpc3RlbnRDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxh
dGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRj
aCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRH
ZXRJbWFnZUZvck1hdGNoUmVzdWx0Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6Yml0bWFw
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21O
YXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJl
bW90ZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
OjppbWFnZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZp
bmRNYXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRh
a2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1Jl
Y3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNu
YXBzaG90Rm9yTm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBIQVJERU5JTkc6IEFkZCBN
RVNTQUdFX0NIRUNLIGluIHNvbWUgQ2FwdGl2ZSBQb3J0YWwgY2FzZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDlj
MGI4Mjk3NzZmZjUwOWU2Ny4uZDc5MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyAr
ODEsOCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJh
bWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9j
dW1lbnQudXBkYXRlTGF5b3V0KCk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNo
b3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsK
ICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2Vs
ZWN0aW9uSGlnaGxpZ2h0aW5nKSkKQEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVj
dCYgaW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQ
YWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWls
ZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
aW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFj
dG9yLCBvcHRpb25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8g
cHVycG9zZSA9IG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxl
KSA/IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9z
ZTo6U25hcHNob3Q7CisgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBk
b2N1bWVudC52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdp
bmRvdygpIDogbnVsbHB0cjsKKworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZVJlY3Quc2l6ZSgpLCBwdXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNw
YWNlLCBvcHRpb25zLnBpeGVsRm9ybWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQo
KS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICgh
Y2xpcFJlY3RzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5oCmluZGV4IGU0YjlkMDA5YzcyNDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJj
MmZmZDAyMTc3NzE4YTc3YzU1MzRlNjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hv
dEZsYWdzIDogdWludDhfdCB7CiAgICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkg
PSAxIDw8IDQsCiAgICAgUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1
LAogICAgIFBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVh
YmxlID0gMSA8PCA3LAogfTsKIAogc3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
aW5kZXggMWNhY2M4ZjY5NDU2ZGVjMjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uOTg4ZDQwNDk5
OGIxY2I2NDljMWIxODA2NGI1MDM0MWUwNDA0Yjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVh
dGUocGFyYW1ldGVycywgY3JlYXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFn
ZUJ1ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KQEAgLTUzLDYgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0g
QmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFi
YWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVh
dGU8SW1hZ2VCdWZmZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShj
b25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CisgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJh
bWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKSk7CiAgICAgfQogCkBAIC0yNzgsNiArMjg0LDI2IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorI2lmIFVTRShDQUlSTykKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgICAgIGlmICgh
YmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAKKyAgICAgICAg
YXV0byBzdXJmYWNlID0gYmFja2VuZC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisKKyAgICAgICAg
cmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGJlbG93LgorCisgICAgICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgZGF0YUtleTsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNl
cl9kYXRhKHN1cmZhY2UuZ2V0KCksICZkYXRhS2V5LCB0aGlzLCBbXSh2b2lkICpidWZmZXIpIHsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXIqPihidWZmZXIpLT5k
ZXJlZigpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gc3VyZmFjZTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgaXNJblVzZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5Y2IwNzhlZTk4
ZTc1MTczYjM0ZDY3ZDllYWIxNWE5ZTlkMjA2YTdlLi4xYWNkZTUxNjZlNjE4YmNhZDc1MTVjNTk0
YmQ3NDFmYTM2NGJhODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAKKyNpZiBV
U0UoQ0FJUk8pCisgICAgdmlydHVhbCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWly
b1N1cmZhY2UoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAg
IEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBh
NWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLjY5ZmUxYmMxOWMxMjM4MzljYjQwZDYyMzBiYmI0
ZjQ0YjM2YjAxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBVU0UoQ0FJUk8p
CisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTkwLDYgKzk0LDkgQEAgcHVibGljOgogICAg
ICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKICAgICAgICAgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQ7CiAgICAgICAgIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZTsKKworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwpAQCAtMTI4LDYgKzEzNSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBVU0UoQ0FJ
Uk8pCisgICAgdmlydHVhbCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZh
Y2UoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc0lu
VXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNpZiBIQVZFKElPU1VS
RkFDRSkKQEAgLTE4Myw2ICsxOTQsNDUgQEAgcHJvdGVjdGVkOgogICAgIFBhcmFtZXRlcnMgbV9w
YXJhbWV0ZXJzOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbG9naWNhbFNpemU7CisgICAgZW5jb2RlciA8PCByZXNvbHV0aW9u
U2NhbGU7CisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOworICAgIGVuY29kZXIgPDwgcGl4ZWxG
b3JtYXQ7CisgICAgZW5jb2RlciA8PCBwdXJwb3NlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9naWNhbFNpemU7CisgICAgZGVjb2RlciA+
PiBsb2dpY2FsU2l6ZTsKKyAgICBpZiAoIWxvZ2ljYWxTaXplKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gcmVzb2x1dGlvblNjYWxlOwor
ICAgIGRlY29kZXIgPj4gcmVzb2x1dGlvblNjYWxlOworICAgIGlmICghcmVzb2x1dGlvblNjYWxl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIg
Pj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUHVycG9zZT4gcHVycG9z
ZTsKKyAgICBkZWNvZGVyID4+IHB1cnBvc2U7CisgICAgaWYgKCFwdXJwb3NlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9naWNhbFNpemUsICpyZXNv
bHV0aW9uU2NhbGUsICpjb2xvclNwYWNlLCAqcGl4ZWxGb3JtYXQsICpwdXJwb3NlIH0gfTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAppbmRleCBhMjE2YjBl
ZDE1ZjczZTYzODE2Y2NjZjBlNjZlNmFkMGE5MDkxZDIwLi40YmJkMTc5NDcyNTNhMTkwYTJlNzU3
NTg5MzM1MjllNzczNDg5NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQ
dXJwb3NlIDogdWludDhfdCB7CiAgICAgQ2FudmFzLAogICAgIERPTSwKICAgICBMYXllckJhY2tp
bmcsCisgICAgU25hcHNob3QsCisgICAgU2hhcmVhYmxlU25hcHNob3QsCiAgICAgTWVkaWFQYWlu
dGluZwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHAKaW5kZXggZWEwNDlhOTk1MzIxN2M2M2JiZTdkNDEzY2RhN2RhYTk3MjYyMjBmMS4uNjljYjc4
NTg4ZGRkZGZhYTE3NGUxZTkzYzRiZTg4N2QzMTkzYzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC04OSw2ICs4OSwxMSBAQCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZQogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpCit7CisgICAgcmV0dXJuIFJlZlB0ciB7IG1fc3VyZmFjZS5nZXQoKSB9OworfQorCiBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9T
dXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmlu
ZGV4IGI2YjU2ZDg2NmJkZjBjZTczNmM3Y2ZlMGIxM2FhYjU1YTI2ZDk4Y2QuLjk5YmJjNWYyNGY2
ZDMwYWU2MGZkMjZkYWY0NjBhNjcxZDE2YWEyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0
IG92ZXJyaWRlOwogCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJm
YWNlKCkgb3ZlcnJpZGU7CisKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhl
bEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxMjU5OThmZjU1Y2RlMDIzZGQ4NzI5M2UyZWFiMjRmZDY4
NGQ3ZGZhLi5kNWZhMTUzYWMyYWI1ZmUzMjM0N2FkNDIzODc3ZTE1MzNjMDdkMmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJ
ZGVudGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9IGlt
YWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICBhdXRvIHJlc3VsdFNpemUgPSBwcmVz
ZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMgPyBiYWNrZW5kU2l6ZSA6
IGltYWdlQnVmZmVyLT50cnVuY2F0ZWRMb2dpY2FsU2l6ZSgpOwotICAgICAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFNpemUsIHsgaW1hZ2VC
dWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShyZXN1bHRTaXplLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7
CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRv
IGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtMzI4LDcgKzMy
OCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RmlsdGVyZWRJbWFnZUZvcklt
YWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlCiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsK
LSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJ
bnRTaXplKGltYWdlU2l6ZSksIHsgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKKyAgICAg
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlU2l6
ZSksIHsgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3Mvd2MvV0NTY2VuZS5jcHAKaW5kZXggN2UyMjU4MjI0OGI3MjU2ZGZlOTUyNWVkZjc5YjM5
MDFiMWFhZWRlNi4uN2ExNjY3ZjdhMTIzYjM4NjU5ODIyOTg4Y2NjODExM2FhMGQ1NWVlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcApA
QCAtMjI3LDcgKzIyNyw3IEBAIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gV0NTY2VuZTo6dXBk
YXRlKFdDVXBhdGVJbmZvJiYgdXBkYXRlKQogCiAgICAgc3RkOjpvcHRpb25hbDxVcGRhdGVJbmZv
PiByZXN1bHQ7CiAgICAgaWYgKG1fdXNlc09mZnNjcmVlblJlbmRlcmluZykgewotICAgICAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHdpbmRvd1NpemUs
IHsgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUod2lu
ZG93U2l6ZSwgeyB9KTsKICAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHdpbmRvd1NpemUud2lk
dGgoKSwgd2luZG93U2l6ZS5oZWlnaHQoKSwgR0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUs
IGJpdG1hcC0+ZGF0YSgpKTsKICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OwogICAgICAgICBpZiAoYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggZjIxMDk2YWFhY2QwZDlmN2MwMDZlOThmNzMxMWE0
NzkyZjA0YzdhMy4uZDE1MDhkNTJmMDk3Y2M2MTI0ZjljMTI5OTlkZTcwZjcxYTExMzk5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmJpdG1hcElt
YWdlRm9yQ3VycmVudFRpbWUKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8gaW1hZ2VT
aXplID0gaW1hZ2UtPnNpemUoKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyBwbGF5ZXItPmNvbG9yU3BhY2UoKSB9KTsKKyAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlU2l6ZSwgeyBwbGF5
ZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFn
ZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWly
by5jcHAKaW5kZXggYzhjYzVhYThmY2I5NDgyMGJkZGQ3OTU2NTMxZjE2ZjIxNDI4NjdjZC4uNTMw
MmQ1NjZmODBmOTNjYWViY2M3MGMwNzBhOTkzMGVkYjIxNTBhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBAIC0zNiwxNiArMzYs
MTYgQEAKIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdl
UmVmIGltYWdlUmVmKQogewogICAgIC8vIFdlIGNhbm5vdCBwYXNzIGEgUmVmUHRyIHRocm91Z2gg
dGhlIEFQSSBoZXJlLCBzbyB3ZSBqdXN0IGxlYWsgdGhlIHJlZmVyZW5jZS4KLSAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5s
ZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGltYWdlUmVmKS0+Y3JlYXRlQ2Fp
cm9TdXJmYWNlKCkubGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGlt
YWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAotICAg
IGNhaXJvX3QqIGNyID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
KyAgICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KTsKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwogICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWly
b19yZWN0YW5nbGUoY3IsIDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXgg
ZjJkMzMzNDc4YzJhZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2JlOTEyNGY0MzU5YjJl
NDhmOGU0YmRhYmQ4N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0
ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYkltYWdlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNH
SW1hZ2VDb3B5KCkubGVha1JlZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+
Y29weU5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIH0KIAogV0tJ
bWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJ
bWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0ltYWdlUmVmIFdLSW1h
Z2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBv
cHRpb25zKQogICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNp
emUoKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdl
U2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAgICBhdXRvIGdyYXBo
aWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
LSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7
Ci0gICAgCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3Qs
IHJlY3QpOworCisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0
LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCAw
NDAzNjIwMDBmNWYzNWQ0Y2I1NjcyZjVjN2Y3NmFhYTE4MjE3NjA1Li5mZTkxNWQxNzg3MDFjOTRi
N2Y0ZTZjY2U1YjZmNWI1ODNiMTlkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtODIsNyArODIsNyBAQCBDb250ZXh0TWVudUNv
bnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBtZW51TG9jYQogdm9pZCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpzZXRJbWFnZShXZWJDb3Jl
OjpJbWFnZSogaW1hZ2UpCiB7CiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5kaW5n
IHN0cmF0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCi0gICAgbV9jb250cm9sbGVkSW1hZ2UgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7
IH0pOworICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50
U2l6ZShpbWFnZS0+c2l6ZSgpKSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IG1f
Y29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRh
NzBiZmZjOWMuLmIzMjM3OGQ3MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBA
QCBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgp
IGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNv
bnN0CiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVu
Y29kZWREYXRhKG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0
MzY5ODI1Yjc3MmU4MTBkMjAwNTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZj
MmEwMDM3YTIyYmYxNjBjZTg2MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAg
Ly8gTk9URTogVGhlc2UgYWxsIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNv
cHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IDI3ZTgyMGUyM2NmODhhMWJmNThhZjk4
ZmM1YzBmYzJhODVkZWY4MzMuLmU0ZGVhZDVmODkzOGNlMTZjNjhjY2MwZTJkMjA5Y2Y1M2Q4MDI2
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSwyMCArOTks
NiBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbgogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24pCi17Ci0gICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pOwotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29uZmln
dXJhdGlvbik7Ci0gICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxl
Qml0bWFwTWFsbG9jOjp0cnlNYWxsb2MobnVtQnl0ZXMpOwotICAgIGlmICghZGF0YSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRt
YXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgZGF0YSkpOwotfQotCi1SZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdmFsaWRhdGVDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUo
c2l6ZSwgY29uZmlndXJhdGlvbik7CkBAIC0xMjMsMTMgKzEwOSwxMSBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXpl
JiBzaXplLCBDbwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZp
Z3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVh
YmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVs
bCgpKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKIHsKLSAg
ICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKLQogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uKTsKICAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNv
bmZpZ3VyYXRpb24pOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCkBAIC0xMzks
NyArMTIzLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFw
KHNpemUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVk
TWVtb3J5KSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHBy
b3RlY3Rpb24pCkBAIC0xNDgsMTMgKzEzMiwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtbwog
ICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92
ZShzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRs
ZS5tX2NvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAog
Ym9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQmFj
a2VkQnlTaGFyZWRNZW1vcnkoKSk7Ci0KICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVI
YW5kbGUoaGFuZGxlLm1faGFuZGxlLCBwcm90ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7CkBAIC0xNjIsMzQgKzE0NCwxNiBAQCBib29s
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gcHJvdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRt
YXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24sIHZvaWQqIGRhdGEpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fY29u
ZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQotICAgICwgbV9kYXRhKGRhdGEpCi17Ci19Ci0KLVNo
YXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
KQorU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1l
bW9yeSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pCi0gICAgLCBtX3NoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkpCi0gICAgLCBtX2RhdGEo
bnVsbHB0cikKKyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKIHsK
IH0KIAotU2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKLXsKLSAgICBpZiAoIWlz
QmFja2VkQnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwTWFsbG9jOjpm
cmVlKG1fZGF0YSk7Ci19Ci0KIHZvaWQqIFNoYXJlYWJsZUJpdG1hcDo6ZGF0YSgpIGNvbnN0CiB7
Ci0gICAgaWYgKGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgcmV0dXJuIG1fc2hh
cmVkTWVtb3J5LT5kYXRhKCk7Ci0KLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICByZXR1cm4gbV9k
YXRhOworICAgIHJldHVybiBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwogfQogCiBDaGVja2VkVWlu
dDMyIFNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKFdlYkNvcmU6OkludFNpemUgc2l6
ZSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA0YTA3NDAwMTczNWRmODY0
ZjRmNGJlMWY5ZTc2NTUyNDAzZWMzZjU0Li45NmExYzc4MmYxNThlNGFkYzkxMjU4ODA0MzkxYzJl
N2FlZGYyMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5
LDE0ICs3OSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRl
Qnl0ZXNQZXJSb3coV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYpOwogICAg
IHN0YXRpYyBDaGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmln
dXJhdGlvbiYpOwogCi0gICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMg
bWFsbG9jZWQgbWVtb3J5LgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwotCiAgICAgLy8gQ3Jl
YXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVk
IHdpdGggYW5vdGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24p
OworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxl
IGJpdG1hcCBmcm9tIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAvLyBDcmVhdGUgYSBz
aGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24g
PSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC05NCwxMSArOTEsMTIg
QEAgcHVibGljOgogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRs
ZShIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkgY29uc3Q7CiAKLSAgICB+U2hhcmVhYmxlQml0bWFwKCk7Ci0KICAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJ
bnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KIAorICAgIHZvaWQqIGRhdGEo
KSBjb25zdDsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxh
dGVCeXRlc1BlclJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KKwogICAgIC8vIENyZWF0
ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBi
YWNraW5nIHN0b3JlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCkBAIC0xMDYsOCArMTA0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2Up
OwogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgc2NhbGVG
YWN0b3IsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgc291cmNlKTsKIAotICAgIGJvb2wgaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5OyB9Ci0KICAgICAvLyBUaGlzIGNyZWF0ZXMg
YSBiaXRtYXAgaW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFw
IGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0
IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjcmVhdGVJbWFnZSgpOwpAQCAtMTI0LDE0ICsxMjAsMTQg
QEAgcHVibGljOgogI2VsaWYgVVNFKENBSVJPKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1h
cEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgog
ICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29u
dGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgorICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVBlcnNpc3RlbnRDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKIAogICAgIFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIHsgcmV0dXJuIGNyZWF0ZUNh
aXJvU3VyZmFjZSgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTaGFyZWFibGVCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKLSAgICBTaGFy
ZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0
cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAjaWYgVVNFKENH
KQogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVy
UmVmKSBjb25zdDsKQEAgLTE0MywxMSArMTM5LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCByZWxlYXNlU3VyZmFjZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXApOwogI2VuZGlmCiAKLXB1
YmxpYzoKLSAgICB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkg
Y29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRp
b24pOyB9Ci0gICAgCi1wcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsg
cmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KIAogICAg
IFdlYkNvcmU6OkludFNpemUgbV9zaXplOwpAQCAtMTU3LDExICsxNDgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9yZWxlYXNlQml0bWFwQ29udGV4dERhdGFDYWxsZWQgeyBmYWxzZSB9OwogI2Vu
ZGlmCiAKLSAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVk
IG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgotICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotCi0gICAgLy8gSWYgdGhlIHNoYXJl
YWJsZSBiaXRtYXAgaXMgYmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRz
IHRvIHRoZSBkYXRhLgotICAgIHZvaWQqIG1fZGF0YSB7IG51bGxwdHIgfTsKKyAgICBSZWY8U2hh
cmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IGUxOTQwNzM3Mjg2ODUyZDAyM2FhOWFhMTkx
NGFjZDAwZDMyNjFhNzUuLjdmZmE5ZGFmMjc0MTVhNzI2Y2U0NGE5ZDM0NmU1ZDU2NzIwMzRmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjExLDkgKzIxMSw4IEBAIHZvaWQgVXNlckRh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBvYmpl
Y3QpCiAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6SW1hZ2U6IHsKICAgICAgICAgYXV0byYg
aW1hZ2UgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbWFnZSY+KG9iamVjdCk7CiAKLSAgICAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBBU1NFUlQoaW1hZ2UuYml0
bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZS5iaXRt
YXAoKS5pc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhh
bmRsZShoYW5kbGUpKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gaW1hZ2UuY3JlYXRlSGFuZGxl
KCk7CisgICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEluaXRp
YWwgZmFsc2UgaW5kaWNhdGVzIG5vIGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJs
ZS4KICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTIyMSw2ICsyMjAsNyBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogCiAgICAgICAgIC8vIEluaXRpYWwgdHJ1
ZSBpbmRpY2F0ZXMgYSBiaXRtYXAgd2FzIGFsbG9jYXRlZCBhbmQgaXMgc2hhcmVhYmxlLgogICAg
ICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgaW1hZ2UucGFyYW1ldGVy
cygpOwogICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzkwLDE1ICszOTAsMTYgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRpZEVu
Y29kZSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4g
cGFyYW10ZXJzOworICAgICAgICBkZWNvZGVyID4+IHBhcmFtdGVyczsKKyAgICAgICAgaWYgKCFw
YXJhbXRlcnMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgICAgICBpZiAoIWJpdG1h
cCkKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgcmVzdWx0ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoKnBhcmFtdGVycywgV1RGTW92ZSho
YW5kbGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmNzQ4YmRmMzczNjE4MDgzZWFkYzk1
YmY4YTZiYjMyYjYzN2IwYmFkLi42YWEwZWM4NGZhNjE0MWVlOTg1Y2NjZWEyMzE0NDk3NmRmMTA5
NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTEwMTcsNyArMTAxNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRp
YyB2b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFn
ZS5zaXplKCkpLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0Owog
ICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVk
MjJlNTc0Li5iNzQ4YWFiMDAwY2IyYTNlZjA3ZWZjNjFkZmZmYzNmNWVjNzA4OGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4
NzIsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U+IHsKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAg
ICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2U6OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5n
UHVycG9zZTo6U25hcHNob3QsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNo
YXJlYWJsZVNuYXBzaG90LAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpNZWRp
YVBhaW50aW5nCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggOTlj
OTUzY2ZjMjI4MmU3YWU3ZTM1YjM1ZGIwYzFlNDE4NTIyYzA1OC4uMzlmYzQyZmIwNTM2NzNmNGEx
YmVjNTQyZjczMTc5MzExZTBjNGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0
NSArMjYsMTE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIK
IAorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUlt
YWdlQnVmZmVyLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0
ZShzaXplLCBvcHRpb25zLCB7IH0pOwotfQotCi1SZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpj
cmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgYml0bWFwQ29uZmlndXJhdGlv
bikKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAob3B0aW9ucyAmIEltYWdl
T3B0aW9uc1NoYXJlYWJsZSkgewotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgICAgICBp
ZiAoIWJpdG1hcCkKKyAgICAgICAgaWYgKGNsaWVudCkgeworICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBjbGllbnQtPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90LCAxLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHNpemUsIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxl
U25hcHNob3QsIHsgfSk7CisgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQorCisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBv
c2U6OlNuYXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlm
ICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4g
V2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8g
YmFja2VuZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAKKyAgICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdU
Rk1vdmUoYmFja2VuZCkpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwor
fQorCitSZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGJ1
ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZl
cikpKTsKK30KKworV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCit7Cit9CisKK0ludFNpemUgV2ViSW1h
Z2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlci0+YmFja2VuZFNpemUoKTsK
K30KKworY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBXZWJJbWFnZTo6cGFy
YW1ldGVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5wYXJhbWV0ZXJzKCk7CiB9
CiAKLVJlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYm
IGJpdG1hcCkKK0dyYXBoaWNzQ29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkltYWdlKFdURk1vdmUoYml0bWFwKSkpOworICAg
IHJldHVybiBtX2J1ZmZlci0+Y29udGV4dCgpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUmVm
PFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXApCi0gICAgOiBtX2JpdG1hcChXVEZNb3ZlKGJpdG1h
cCkpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFdlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5j
b3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKK30KKworUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gV2ViSW1hZ2U6OmJpdG1hcCgpIGNvbnN0Cit7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVm
ZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdF9jYXN0PEltYWdlQnVmZmVyJj4oKm1fYnVmZmVy
LnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisKKyAgICBhdXRvKiBzaGFyaW5nID0gYmFj
a2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5n
KS5iaXRtYXAoKTsKIH0KIAotV2ViSW1hZ2U6On5XZWJJbWFnZSgpCisjaWYgVVNFKENBSVJPKQor
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gV2ViSW1hZ2U6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCiB7
CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKIH0KKyNlbmRpZgog
Ci1jb25zdCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0CitTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBw
cm90ZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOworICAgIGF1
dG8qIGJhY2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAo
IWJhY2tlbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjb25zdF9jYXN0PEltYWdlQnVm
ZmVyJj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisKKyAgICBhdXRv
KiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBhdXRvIGJhY2tlbmRIYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9u
KTsKKworICAgIGlmIChhdXRvIGhhbmRsZSA9IHN0ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlPigmYmFja2VuZEhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUp
OworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSW1hZ2UuaAppbmRleCAyMmYzODZmOWQyOWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNk
MTA1Li45N2U3OWJlZjJhM2JiNTM2Y2Y1YmNhODUzYzZlMDA4MDgwNmYxMGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNz
IE5hdGl2ZUltYWdlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRp
b25zKTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uJik7Ci0gICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRt
YXA+JiYpOwotICAgIH5XZWJJbWFnZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBXZWJDb3JlOjpDaHJvbWVDbGllbnQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViSW1h
Z2U+IGNyZWF0ZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgU2hhcmVhYmxl
Qml0bWFwJiBiaXRtYXAoKSB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQotICAgIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0K
KyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdDsKKworICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OworCisgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0OworICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0OworI2lmIFVTRShDQUlSTykKKyAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNlbmRpZgorCisgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAgICBXZWJJbWFn
ZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgUmVmPFNoYXJlYWJsZUJpdG1h
cD4gbV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDk3YjVlNjNmMTVhODMxZmU0ZWUw
NWExYWViMzI4N2NjMGJkNzE5ZjkuLmU5NmRhOTEzOGQxYjJkODk2ZDA5MDA4YTNjYjNiNzM2Mzc0
YTM2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJ
CiAgICAgQ2Fpcm86OmRyYXdTdXJmYWNlKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBzdXJm
YWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpLCBzdGF0ZS5hbHBoYSgpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAor
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQZXJzaXN0ZW50
Q2Fpcm9TdXJmYWNlKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEo
KSwgbV9zaXplKTsKK30KKwogUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVDYWlyb1N1cmZhY2UoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGlt
YWdlID0gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEoKSwgbV9zaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IGJmM2RkMDYwM2Y1
ZjdiMjhkYzE0YTE3MjRkODAwMzFhMWVmYWIzZDkuLjA0NWRlYmI4MTFkZDM4NTMxNzY3NzI0YTQ0
ZjUxNmE5ZDUwOWYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2Up
CiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCB7IH0pOworICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNp
emUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBlZDlhOTYwZjVhOGRlNmJiY2RmMzBmZTg5ZTFhMWYw
YzQxMWE5MTNmLi40ODQyMzkxNjViNmRkNTM1MjkwNmU3NzQxZDE3ZmQ1MDhiNDY1YmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtNDM4MCw3ICs0MzgwLDcgQEAgdm9pZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBz
aG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIHVpbnQ2NF90IGNhbGxiYWNrSUQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3
ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpLCByZWludGVy
cHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKKyAgICBn
X3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgd2ViS2l0U25h
cHNob3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMoV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCmluZGV4IDIwNzM5ZTVhZGIwYjc3YWZlYjMxMDU4MWViOTZkN2UzYTc4MDJiNzAuLjJi
MThlOTkyNzRkMzI3OGNjYzIyODYxNTYyNWIzM2ViYzVkYWExNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMDcsNyAr
MzA3LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBs
YXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICoKICAgICByZXN1bHRSZWN0LnNldExvY2F0
aW9uKHsgfSk7CiAKICAgICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBi
aXRtYXBDb25maWd1cmF0aW9uOwotICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJh
dGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDMzZDA5ZGZjMjhiYjQ2ZjI4ZGNhNDYyYzFhNTU2OGQ3Yzg4ZGZj
NzEuLmFmY2Q1ZDViNDdmZjlhNDczZDY3NTY2NjczYzkzOTU3OGFhMTU0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjkwMCwxNCArNjkwMCwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1aW50MzJfdCBtYXRjaENvdQogICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJpbmdN
YXRjaGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdl
SGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoY29udGVudEltYWdlSGFuZGxlKTsKLSAgICBpZiAoIWJpdG1hcCkg
eworICAgIGF1dG8gaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUo
Y29udGVudEltYWdlSGFuZGxlKSk7CisgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ZpbmRNYXRjaGVz
Q2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpLCBtYXRjaEluZGV4KTsKKyAgICBtX2ZpbmRN
YXRjaGVzQ2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIGltYWdlLmdldCgp
LCBtYXRjaEluZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRJbmRpY2F0b3Io
Y29uc3QgVGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIHVpbnQ2NF90IGxpZmV0aW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjOTM1Mzk5NzYzYjAy
NWU0MmVkNzQxZDdhZWE4NDNmYTRkM2NhMTNmLi4zMGM1NjVjMmZhNzZjYmI4MDNiY2Q1MDYwZGI4
YWI4M2YxOGQ1N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTIyMiw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2go
aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1h
dGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNhdGVGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KTsKLSAgICB2b2lkIGRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOworICAg
IHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdl
SGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAg
ICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZTI3NmQzZTJmNzY0MDk4NmMzOGZlYzQ5ZDNkYzk5YjFiYWVkYWZhMC4uNDU1
NjRkYjkzZGI4OTMxMWVlYjgzZjhiNTRmMzMwNjVmOTIyYjk1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQyLDcgKzI0Miw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmluZFN0cmluZyhTdHJpbmcg
c3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJfdCBtYXRj
aENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKICAgICBEaWRG
YWlsVG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCiAgICAgRGlkRmluZFN0cmluZ01hdGNoZXMo
U3RyaW5nIHN0cmluZywgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4gbWF0Y2hlcywg
aW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCi0gICAgRGlkR2V0SW1hZ2VGb3JGaW5k
TWF0Y2goV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUs
IHVpbnQzMl90IG1hdGNoSW5kZXgpCisgICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc3RydWN0
IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCkKIAogICAgICMgUG9wdXBNZW51IG1lc3NhZ2VzCiAgICAgU2hvd1BvcHVwTWVu
dShXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIFZlY3RvcjxX
ZWJLaXQ6OldlYlBvcHVwSXRlbT4gaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgc3RydWN0
IFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA3MjA3NWZiYzg2MmMz
NGQwYzg2YjRhYzUzOGU0YzQ2Njk5Y2JlZTQyLi40YjllMzU5NTNiNmIzNzdlMWU5MDdhMTA2NzBh
ZTBjNjZmNDRiYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjk0LDExICsyOTQsMTUgQEAgLSAodm9pZClkaWRHZXRJbWFnZUZv
ck1hdGNoUmVzdWx0OihXZWJLaXQ6OldlYkltYWdlICopaW1hZ2UKICAgICBpZiAoX2ltYWdlUmVw
bHlDYWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpJ
bnRTaXplIHNpemUgPSBpbWFnZS0+Yml0bWFwKCkuc2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGlt
YWdlLT5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8gX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBp
bWFnZUNhbGxiYWNrID0gX2ltYWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgaW1h
Z2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdl
LT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKKyAgICBp
bWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CiB9CiAK
ICNwcmFnbWEgbWFyayAtIFdLVGV4dEZpbmRlck1hdGNoIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA3YWI2N2EzNDM3YTI4YTE5YmQ2NmU0NTU3YzNiNDc0
NTZjMWUyMTE1Li40OWRhY2Q2M2I1ZWI3ZTAxZmNhMzc1ODA1MzhmZTRkMmViNjdiMmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5k
bGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5k
bGUsIHsgfSksIDApOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgK
aW5kZXggYmY4YTQ3MDM4NWZjYTc0MGQ0NDM3NTZlYWE3ZjRkN2ZjNzlkMjY1Ni4uNmVjNTY4ZDA2
ZGIyOGVkNDA2MzFlMjc1MDJhNTAwYWQyODdkMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCi0KICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDUgKzQzLDMgQEAgdXNp
bmcgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gc3RkOjp2YXJpYW50PAogPjsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCmluZGV4IDU4MDIyOGFmODVmNzUz
ZTU4YmRmNWVmYzFkMDdkMWE2YWYwMzYzZmIuLmNkMmU5ZTNlMTRiOTgxMDY0ZTViODkwM2ViNDlm
ZDFmZDg5MmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogCkBAIC0zNCw3ICszMiw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIDogcHVi
bGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcgewogcHVibGljOgotICAgIHZp
cnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2Vu
ZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRXcml0ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNldEJhY2tlbmRIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBoYXNCYWNrZW5kSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTUyLDUgKzUxLDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlw
ZU5hbWUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkp
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggYTExNzA3MjQ5MGU1YzdhNzk1NGZi
YmU3OGY3MGY3OTM2ZWRjMmVkMS4uN2FlMTVhMGZlMDcwYzgzMTBlNTdlZmM4M2VmMGJlMzM3NTUx
MDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKIAotI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlci5oPgpAQCAt
ODUsNyArODMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJh
dGlvbihwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05Myw3ICs5MSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
KHBhcmFtZXRlcnMsIGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGNvbnRleHQpKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKQEAgLTExMSwx
MCArMTA5LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBX
VEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0
cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQog
ICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMjYsMTAgKzEyNCwxMCBAQCBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZChjb25zdCBQYXJhbQogICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihyZXNvbHV0aW9uU2NhbGUoKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBj
b25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJv
dGVjdGlvbikgY29uc3QKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0g
ICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIG1fYml0bWFwLT5jcmVhdGVI
YW5kbGUoaGFuZGxlLCBwcm90ZWN0aW9uKTsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKQEAgLTE0Myw2ICsxNDEsMTMgQEAgdW5zaWdu
ZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fYml0bWFwLT5ieXRlc1BlclJvdygpOwogfQogCisjaWYgVVNFKENBSVJP
KQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBtX2JpdG1hcC0+Y3JlYXRl
UGVyc2lzdGVudENhaXJvU3VyZmFjZSgpOworfQorI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZSht
X2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpKTsKQEAgLTE2NCw1ICsxNjksMyBAQCB2b2lk
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXImIHBpeGVsQgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oCmluZGV4IDIxZGQwZDg3NTBhZGUzMzI2N2QwOGU4ODA3MWQ1ZDVjZDMz
MDg0YmYuLmY1OTgyMjU3YmJhMTgxODk2MTg4M2JmYjIwOGNmOGM1YTI2MmNjNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oPgpAQCAtNDMsNiArNDEsNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFz
cyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKKwogcHVibGljOgogICAgIHN0YXRpYyBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJik7
CiAgICAgc3RhdGljIFdlYkNvcmU6OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNv
bnN0IFBhcmFtZXRlcnMmKTsKQEAgLTUyLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkNyZWF0aW9u
Q29udGV4dCYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29u
c3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9j
b250ZXh0OyB9Ci0gICAgCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0
IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxl
KCkgY29uc3QgZmluYWw7CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFj
a2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9iaXRtYXAucHRyKCk7IH0KKyNpZiBV
U0UoQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNl
KCkgZmluYWw7CisjZW5kaWYKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJ
bWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9y
ZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0
aW9uOjpObykgY29uc3QgZmluYWw7CkBAIC02NiwxNiArNjksMTUgQEAgcHVibGljOgogICAgIHZv
aWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50
LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
dHkmKSB7IH0KKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZp
bmFsOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmluZygp
IGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQo
KSBmaW5hbCB7IC8qIERvIG5vdGhpbmcuIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgSU9TdXJm
YWNlIGJhY2tlbmRzICovIH0KIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFw
OworICAgIFJlZjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDI1YjVhNDU1ODI1MGVlMDYwNTZjODQzYTE3YzEz
ODE5NjE2OWYzYTcuLjE2ZmE2YjJhMDBhYjkxYzgxODk2YTQ3ZGNmNThhYmM1ZDQ3MTc0ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgaW5s
aW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBG
cm9tTmF0aXZlSW1hZ2UoTmF0aXYKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUo
KTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
aW1hZ2Uuc2l6ZSgpLCB7IGltYWdlLmNvbG9yU3BhY2UoKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlLnNpemUoKSwgeyBpbWFnZS5jb2xvclNwYWNl
KCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5j
cHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3
OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcg
KzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFu
ZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFj
a2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThj
OThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2
ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNv
cmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24g
PSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDQzMjlhMWM5MTcxMzQ5NDcxOWMyYmFhNmJl
MTY0ZTA1N2Y2YjgxNjAuLmFlZGU3YmVhODJhODBlMDA2NzdlNTc2OWNkNjU5NjRmOWI0NmQ4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwog
fQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewog
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5k
UmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4
ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTcz
YWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2Vu
ZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVh
dGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJ
bWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZh
MWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFi
NWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRl
cmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNO
dW0KICAgICBpZiAod2lkdGgpCiAgICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZh
bHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUt
PnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9u
cyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7Cisg
ICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFw
c2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRl
T3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShX
ZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0lt
YWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxz
ZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmlt
YWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdj
MmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMxYjY3ZjJlZC4uYTRhOGVhMDEzYTVlMzVmMDZjY2Ji
ZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCArMTcxLDEyIEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1h
Z2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFp
bnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKIAot
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFw
U2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShiaXRtYXBTY2FsZUZh
Y3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFj
dG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoYml0bWFw
U2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBhaW50aW5nUmVj
dC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91
bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKICAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCkBA
IC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZy
YW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKIAogICAgIGF1dG8gb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWludGluZ1JlY3Qs
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwor
ICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwg
cGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENv
b3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhh
dmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA5NzUyOWZjMWFjMzkyMjkzNWQ5OTVjMmZjNWNh
ZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNlZWYyZmYxY2I2NTgwYTMzZGE4OGI3MzYzYTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNp
emUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3Jl
U2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Ci0gICAg
aWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUo
YmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyB8
IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkpOworICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiYWNraW5nU3Rv
cmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoc2Nh
bGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0
KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIHBhaW50
UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueCgpLCBmcmFtZVZpZXctPmZyYW1lUmVj
dCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlv
bigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRp
b24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9u
KCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBm
cmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4g
cGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CkBAIC0xNjUsMTIgKzE2MiwxMiBAQCBS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Uo
U25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihw
YWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFt
ZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3
LT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQ
YWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCi0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVh
dGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBzbmFwc2hvdDsK
IH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnRleHQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCBkZjhlNTVkZjFm
MGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVhYjdlLi5iZDI2MGY5M2ZiYmZhYmYwNmQ2MjZhMDcy
N2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFn
ZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwogICAgIEludFNpemUgc2l6ZShiaXRt
YXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNp
emUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCkpOwotCi0gICAgLy8gRklYTUU6IG5lZWQg
dG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJ
bWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZSwge3sgfSwgc2l6ZX0p
OworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgorICAgIGF1dG8m
IGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwgeyB7IH0sIHNpemUgfSk7CiAKICAgICByZXR1cm4g
d2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCAwYWZjMDE3MmM5YjNjOGUyNzk2NTg1OTgzYzU1NWNmYjIyYWVj
OWJiLi5iMTU3OWEyMGQ0ZDhmZDIyYjVlODAxODZhYmIxOTkzNTRiMjRkOWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE5
OTIsNyArMTk5Miw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNo
b3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsKICAgICBiYWNraW5n
U3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVC
aXRtYXBVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKaW5kZXggMTIwMjYzZDY1ZDYxZjU5MWU1
ZjFmNjdmZDRmZThiZjUzZWZmYzMzMC4uODMxZjE4YjQ2NDBlNTgwYjM3YTQxNTkyNTA1ZmVmYWRh
MDBhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFw
KFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICAgICAgaWYgKCFzbmFwc2hv
dEltYWdlKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90UmVjdC5zaXplKCksIHsg
V1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1vdmUoY29s
b3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKIApAQCAtODMsNyArODMsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBj
cmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAog
ICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBpbWFnZVNpemUud2lkdGgoKSA8PSAx
IHx8IGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAxKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGlt
YWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOworICAgICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNv
bG9yU3BhY2VGb3JCaXRtYXApIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAg
IHJldHVybiB7IH07CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVT
aAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGlt
YWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdU
Rk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUoY29s
b3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAgIHJl
dHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZDMxZjQyNWI4ZDEzZDg3ZTFi
YTRkMTY0NDE0YWMxMjVhNDYzYTYwZi4uMzZjMGU3MDgzNmIyYTMxMTE4NTZhNGIyNjA5MGM1ZmFm
NDljODQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpbmNs
dWRlICJIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRl
ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2Jq
ZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yQ2hvb3Nlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0Ns
aWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDVlNWNlZmY3MDFjOWU0YWUxZDhiZTNlNTgxNDBl
OGRiMTQzZmM0NTYuLmViMmE2OGQzNTUwOTZiYTJlMGM3ZjZiYTM5MDczNWFiNDg2ZjNhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0
bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUg
aW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOworICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlMWUwZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1
Mzc2ZWY0M2FkNTE0Li5iMTQzNThjMmNjMjk2MDRhNTAyNjUyODFjOGQyMTUyNDZlZDgyMGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIERy
YWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBj
b252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRTaXplJiBz
aXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1l
KCkudmlldygpKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwog
ICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQ
b3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlMDcxM2YwMmE4NzdjMGI3NjQzZDYyOTJlYzU5ODZkZDI0
ZDNjN2MuLjdhMDYzNmQ0ZDQ5M2E5NWUyZDQ0YWRlYmE0YjY1MWMyNzhlMGRlNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBN
ZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
d2luL1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTc2LDggKzc2LDggQEAgdm9pZCBXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGlu
YXRlcywgUGwKICAgICBpbnQgYmFja2luZ1N0b3JlV2lkdGggPSBzdGQ6Om1heChwYWdlQ29vcmRp
bmF0ZXMud2lkdGgoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0TGVmdCgpIC0gbV9wb3B1
cENsaWVudC0+Y2xpZW50SW5zZXRSaWdodCgpLCBwb3B1cFdpZHRoKTsKIAogICAgIEludFNpemUg
YmFja2luZ1N0b3JlU2l6ZShiYWNraW5nU3RvcmVXaWR0aCwgKGl0ZW1Db3VudCAqIGRhdGEubV9p
dGVtSGVpZ2h0KSk7Ci0gICAgZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKLSAgICBk
YXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEubV9ub3RTZWxlY3RlZEJhY2tp
bmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7
CisgICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+IG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dCA9IGRhdGEubV9ub3RTZWxl
Y3RlZEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gc2VsZWN0ZWRCYWNraW5nU3RvcmVDb250ZXh0ID0gZGF0
YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAppbmRleCBmOWExMWM2NTI4ODg4YjEzMmM3MjA3YThmM2E1ZGJiYzk1ODNk
MjdiLi44ZDcxYzBhOTVjYThiZjE2ODJkOTE2MjQ0OWZhM2YxYWY1MTk2NDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3M6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBJbnRTaXpl
IGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
ID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFw
U2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOworICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAo
IWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMWQ2NDNiNmI0Mjg4ZDA4ZTAz
OGM0NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRlYmVhYjgwNjgyNDI5OGRkYTk3ZWZmY2M0
MGM3YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIwICszMTksMTggQEAgdm9pZCBGaW5kQ29u
dHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBW
aXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG1fZmluZE1hdGNoZXNb
bWF0Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2VsZWN0aW9uU25h
cHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25T
bmFwc2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOwogCiAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCiAgICAgaWYgKCFzZWxl
Y3Rpb25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBzaG90LT5jcmVhdGVIYW5kbGUoaGFuZGxl
KTsKLQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9uU25hcHNob3QtPmNyZWF0ZUhhbmRsZSgp
OwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJbWFnZUZvckZpbmRNYXRj
aChoYW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc2VsZWN0aW9uU25hcHNob3QtPnBh
cmFtZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgRmluZENvbnRyb2xs
ZXI6OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDcxZWQxODgyZmI0MjRkMjFj
Njc5ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLjlhY2VjNjZiZWJkZDViZWQ1MDNmYTM5ZjAxYWE4ZmMx
ZDQyZGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRM
b2FkZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
QEAgLTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJB
cmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkCiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNu
YXBzaG90KCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24o
KmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQg
fSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9KTsK
KyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsg
V2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQsIFdlYkNvcmU6OlNuYXBzaG90
RmxhZ3M6OlNoYXJlYWJsZSB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH0pOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgpLCB7IH0pOwotICAgIGlmICghc2hhcmVk
U25hcHNob3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBwcm92aWRpbmcgYSB3YXkgdG8gdXNlIHN1YnBpeGVsIGFudGlhbGlhc2lu
ZyBmb3IgdGhlIHNuYXBzaG90Ci0gICAgLy8gaWYgd2UncmUgY29tcG9zaXRpbmcgdGhpcyBpbWFn
ZSBvbnRvIGEgc29saWQgY29sb3IgKGUuZy4gdGhlIG1vZGVybiBmaW5kIGluZGljYXRvciBzdHls
ZSkuCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+
cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUo
ZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9hdFBvaW50KCkpOwotCi0gICAgcmV0dXJu
IHNoYXJlZFNuYXBzaG90OworICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90LnJl
bGVhc2VOb25OdWxsKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNmMzYTk0ODZl
NDQzNDJhZmNiNTRkYTc2YTIyY2EzZDAzYzIxNmVjNS4uZDM5ZmIyNWI2YmZhYzM2YWY5YTY3ZmJj
NmNlZmY0OTFlMDk4ZTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKK2NsYXNz
IFdlYkltYWdlOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0
IFdlYnNpdGVQb2xpY2llc0RhdGE7CkBAIC0xODQsNyArMTg1LDcgQEAgcHVibGljOgogICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHdlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24sIHZv
aWQqIGNvbnRleHQpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRl
U2VsZWN0aW9uU25hcHNob3QoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgVHJhbnNhY3Rpb25JRCBmaXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1p
dExvYWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVy
RGlkQ29tbWl0TG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkODkyMmIwOWU1NGFmNTI2MTM2NzI0NWJiMjg2NmE2OGI0ZDRkOTBlLi5k
Y2UyMDg4NWMzZTNmM2VhOWI1YWIyZDFiMzM2NzFlMTc3MWM0NGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjYzOSw3ICsyNjM5LDcgQEAg
dm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUg
Yml0bWFwU2l6ZSwgdWludDMyX3Qgb3AKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAg
aGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CkBAIC0yNzA4LDE0
ICsyNzA4LDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplCiAgICAgfQogfQogCi1zdGF0aWMg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29u
ZmlndXJhdGlvbihTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3N0YXRp
YyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc25hcHNob3RDb2xvclNwYWNlKFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShDRykKICAgICBpZiAob3B0aW9ucyAmIFNu
YXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS52aWV3KCkpOworICAgICAgICByZXR1cm4gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIFJlZlB0
cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCkBAIC0y
NzI4LDE0ICsyNzI3LDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNp
emUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMo
b3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAq
dGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUs
IHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3Bh
Y2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYg
KCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcGFp
bnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAq
ZnJhbWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQg
PSBzbmFwc2hvdC0+Y29udGV4dCgpOworICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0
bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0
KTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KQEAgLTI3NjYsMjcgKzI3NjMsMjYgQEAgUmVm
UHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwg
U25hcHNob3RPcHRpb25zIG9wdGkKICAgICAgICAgc25hcHNob3RTaXplID0gSW50U2l6ZShzbmFw
c2hvdFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVtSGVpZ2h0KTsKICAgICB9CiAK
LSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBz
aG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1h
cENvbmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2Vi
SW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25z
KG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5j
aHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3Qt
PmNvbnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRl
RGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9
IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsK
ICAgICAgICAgc2NhbGVGYWN0b3IgLz0gZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgfQogCi0gICAg
Z3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNu
YXBzaG90UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIENvbG9yIHNhdmVkQmFja2dyb3VuZENvbG9y
ID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRC
YXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICBmcmFtZVZp
ZXctPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRz
Rm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0LCBGcmFtZVZpZXc6OkV4
Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJh
bWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hv
dFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENv
b3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihzYXZl
ZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KG51bGxwdHIp
OwpAQCAtNTY1OSwzNyArNTY1NSwzMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAg
ICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgogCi0g
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IH0pOwotICAgICAgICBpZiAoIWJpdG1hcCkgeworICAgICAgICBpbWFnZSA9IFdl
YkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBJbWFnZU9wdGlvbnNTaGFyZWFibGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CisgICAg
ICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH0KLSAgICAg
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwotICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KSB7Ci0gICAgICAgICAgICBmbG9hdCBwcmlu
dGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qu
d2lkdGgoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUocHJpbnRpbmdTY2Fs
ZSk7CisKKyAgICAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2UtPmNvbnRleHQoKTsK
KyAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNp
emUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2Fs
ZShwcmludGluZ1NjYWxlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgIGlmIChS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGlu
Z0ZyYW1lKGNvcmVGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcHJpbnRDb250
ZXh0KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
LCAtMSkpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKDAsIC1y
ZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBkcmF3UERGRG9jdW1lbnQoZ3JhcGhpY3ND
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9jdW1lbnQuZ2V0KCksIHByaW50SW5mbywg
cmVjdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoKmdyYXBoaWNzQ29udGV4dCwgcmVj
dCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBk
ZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOworICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICBkcmF3UERGRG9j
dW1lbnQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwZGZEb2N1bWVudC5nZXQo
KSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QpOwogICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1h
cC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKLQogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1h
cCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggYmFkNWRlNGYxNTZmNzBmNzM5OWZmNWUyYzI3Yzc5MDFiOTVjNTZlYy4uNjg1
YzZmMGE2NmVmOTVkYTcwMGFjMTk4OGI4NDIyYzgxZTVlYmJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMxMDIsOCAr
MzEwMiw4IEBAIHN0YXRpYyB2b2lkIHRleHRJbnRlcmFjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24o
V2ViUGFnZSYgcGFnZSwgY29uc3QgSFRNTElucHV0RWxlCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUoRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFpbnMgYXQgbW9zdCA2MDBL
IHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KLSAgICBpZiAoUmVmUHRyPFdlYklt
YWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFy
ZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICByZXR1cm4gJnNuYXBzaG90LT5iaXRtYXAoKTsK
KyAgICBpZiAoYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBTbmFwc2hvdE9w
dGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQorICAgICAgICByZXR1cm4gc25hcHNob3QtPmJp
dG1hcCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFhNzg5Zjk5ZDg5ZjY3
ZjgwMjE1ZmQxNjYxNTA5Y2UzMzRkYjE4NjEuLmJkNTU4YjI4MmI2NWUxM2U0MjRmYWZkNzI1MjE1
ZmM5NTU1YjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTc2LDkgKzU3NiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNl
dFRvcE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQogICAgIGlmICghbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUlt
YWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbGF5
ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoMCwgLWltYWdlLT5zaXplKCkuaGVpZ2h0KCkpKTsKLSAgICBsYXllci0+cGxhdGZvcm1M
YXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFn
ZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9f
YnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCkBAIC01OTEs
OCArNTk1LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFn
ZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgp
KTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWlt
YWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZv
cm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSGVhZGVyQW5kRm9vdGVyTGF5
ZXJzRm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggM2IwZTAwYWJiMGNlMzIzZDliNmQxYWY3ZDYy
MDdhODRkM2FmOTFmYi4uMzk1M2U5ZWQ4MzRiOTQ4ZmY5ZTIyZTczMmRhYjA1MjUyMzU1YTZmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjIwNSw2ICsyMjA1
LDggQEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlKQogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yQ2Fu
dmFzUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6RE9NOgogICAgIGNhc2Ug
UmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nOgorICAgIGNhc2UgUmVuZGVyaW5nUHVycG9z
ZTo6U25hcHNob3Q6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hv
dDoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZzsKICAgICBj
YXNlIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAgICAgICAgIHJldHVybiBtX3Vz
ZUdQVVByb2Nlc3NGb3JNZWRpYTsK
</data>
<flag name="commit-queue"
          id="487174"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458333</attachid>
            <date>2022-04-25 22:55:42 -0700</date>
            <delta_ts>2022-04-26 01:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220425225541.patch</filename>
            <type>text/plain</type>
            <size>102356</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMyOTgxNjY4ZTIxMjRh
ZTIxNGJhNzE2NjllZTg2ZWEyOTUxYjA5Ni4uMDFiOTA5MDQ5N2M5NDE3ODFjNDkwZTY3NTQ4Nzc4
NDdlNWVjYWQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbmRlcmluZ01vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5oOgorCiAyMDIyLTA0LTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXF1ZXN0IGludGVyY2VwdGlvbiBzaG91bGQgbm90
IGJlIGd1YXJkZWQgYmFzZWQgb24gc2VydmljZSB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZmZWE5ZmMz
NDM3MWQ4YTJmN2Y4ZDEzNmJlM2Y2M2JmZTRjMWE0MTguLjBhYTViOGJjZjI1MDJmYjQyZDdiNTNk
ZTI1NThiNTljM2ZkMWI2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTA0LTI1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gTWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFy
Oi8vOTExMTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1h
cEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldDU2NlbmU6OnVwZGF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdL
SW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWly
b1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAg
ICAgICAoV0tJbWFnZUNyZWF0ZUNHSW1hZ2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21D
R0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OnNldEltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRs
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0
bWFwKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpkYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXApOiBE
ZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL1VzZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ckRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpl
bmNvZGVJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJJbWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6V2ViSW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpwYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNvbnRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6On5XZWJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkltYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRtYXApOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Yml0bWFwIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVBlcnNpc3RlbnRDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxh
dGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRj
aCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRH
ZXRJbWFnZUZvck1hdGNoUmVzdWx0Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6Yml0bWFw
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21O
YXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJl
bW90ZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
OjppbWFnZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZp
bmRNYXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRh
a2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1Jl
Y3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNu
YXBzaG90Rm9yTm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBIQVJERU5JTkc6IEFkZCBN
RVNTQUdFX0NIRUNLIGluIHNvbWUgQ2FwdGl2ZSBQb3J0YWwgY2FzZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBiYzJhNTZlMDlj
MGI4Mjk3NzZmZjUwOWU2Ny4uZDc5MWM0M2RhN2I3OWU3OThiYmMxMWNkODM4MGFlODFkMmM1NzM3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpAQCAtODEsNyAr
ODEsOCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJh
bWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUucGFnZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAgZG9j
dW1lbnQudXBkYXRlTGF5b3V0KCk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNo
b3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsK
ICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2Vs
ZWN0aW9uSGlnaGxpZ2h0aW5nKSkKQEAgLTExNCw5ICsxMTUsMTMgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVj
dCYgaW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQ
YWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBjZWls
ZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
aW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFj
dG9yLCBvcHRpb25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8g
cHVycG9zZSA9IG9wdGlvbnMuZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6U2hhcmVhYmxl
KSA/IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90IDogUmVuZGVyaW5nUHVycG9z
ZTo6U25hcHNob3Q7CisgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50LnZpZXcoKSAmJiBk
b2N1bWVudC52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdp
bmRvdygpIDogbnVsbHB0cjsKKworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZVJlY3Quc2l6ZSgpLCBwdXJwb3NlLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNw
YWNlLCBvcHRpb25zLnBpeGVsRm9ybWF0LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBidWZmZXItPmNvbnRleHQo
KS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGlmICgh
Y2xpcFJlY3RzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5oCmluZGV4IGU0YjlkMDA5YzcyNDBmYjU4N2I0OTdmZTAzZmVmMjJhZTNiYzhjNzkuLmJiMWJj
MmZmZDAyMTc3NzE4YTc3YzU1MzRlNjZiZWQ1NTIzMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTbmFwc2hv
dEZsYWdzIDogdWludDhfdCB7CiAgICAgUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkg
PSAxIDw8IDQsCiAgICAgUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1
LAogICAgIFBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCisgICAgU2hhcmVh
YmxlID0gMSA8PCA3LAogfTsKIAogc3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
aW5kZXggMWNhY2M4ZjY5NDU2ZGVjMjdjNDIzZjBhZGRhODM5ZjA1ZGUxZWNmOS4uOTg4ZDQwNDk5
OGIxY2I2NDljMWIxODA2NGI1MDM0MWUwNDA0Yjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVh
dGUocGFyYW1ldGVycywgY3JlYXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VCdWZmZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxJbWFn
ZUJ1ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KQEAgLTUzLDYgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0g
QmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFi
YWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVh
dGU8SW1hZ2VCdWZmZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShj
b25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CisgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJh
bWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKSk7CiAgICAgfQogCkBAIC0yNzgsNiArMjg0LDI2IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorI2lmIFVTRShDQUlSTykKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgICAgIGlmICgh
YmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAKKyAgICAgICAg
YXV0byBzdXJmYWNlID0gYmFja2VuZC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisKKyAgICAgICAg
cmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGJlbG93LgorCisgICAgICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgZGF0YUtleTsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNl
cl9kYXRhKHN1cmZhY2UuZ2V0KCksICZkYXRhS2V5LCB0aGlzLCBbXSh2b2lkICpidWZmZXIpIHsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXIqPihidWZmZXIpLT5k
ZXJlZigpOworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gc3VyZmFjZTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgaXNJblVzZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5Y2IwNzhlZTk4
ZTc1MTczYjM0ZDY3ZDllYWIxNWE5ZTlkMjA2YTdlLi4xYWNkZTUxNjZlNjE4YmNhZDc1MTVjNTk0
YmQ3NDFmYTM2NGJhODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAKKyNpZiBV
U0UoQ0FJUk8pCisgICAgdmlydHVhbCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWly
b1N1cmZhY2UoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAg
IEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDMyNThmNzBjYTNlODBh
NWZjNjE1ZmQxNDI3OGZhNDA2YzM4NjVhNjQuLmYxZjFkZDE2NjI3M2ExOTQ3NjIyMzE3ZGVkMzIz
YmMwYzgwZjRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiwxMSBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBVU0UoQ0FJUk8p
CisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtOTAsNiAr
OTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
OwogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKICAgICAgICAgUmVuZGVyaW5nUHVy
cG9zZSBwdXJwb3NlOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKICAg
ICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCk7
CkBAIC0xMjgsNiArMTM2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBi
b29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYsIEdDR0xlbnVtLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAorI2lmIFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAg
ICAgdmlydHVhbCBib29sIGlzSW5Vc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogI2lmIEhBVkUoSU9TVVJGQUNFKQpAQCAtMTgzLDYgKzE5NSw0NSBAQCBwcm90ZWN0ZWQ6
CiAgICAgUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPiB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBsb2dpY2FsU2l6ZTsKKyAgICBl
bmNvZGVyIDw8IHJlc29sdXRpb25TY2FsZTsKKyAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Cisg
ICAgZW5jb2RlciA8PCBwaXhlbEZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IHB1cnBvc2U7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBsb2dpY2Fs
U2l6ZTsKKyAgICBkZWNvZGVyID4+IGxvZ2ljYWxTaXplOworICAgIGlmICghbG9naWNhbFNpemUp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiByZXNvbHV0aW9uU2NhbGU7CisgICAgZGVjb2RlciA+PiByZXNvbHV0aW9uU2NhbGU7CisgICAg
aWYgKCFyZXNvbHV0aW9uU2NhbGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBk
ZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxG
b3JtYXQ7CisgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1hdDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdQdXJwb3NlPiBwdXJwb3NlOworICAgIGRlY29kZXIgPj4gcHVycG9zZTsKKyAgICBpZiAo
IXB1cnBvc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7
ICpsb2dpY2FsU2l6ZSwgKnJlc29sdXRpb25TY2FsZSwgKmNvbG9yU3BhY2UsICpwaXhlbEZvcm1h
dCwgKnB1cnBvc2UgfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFj
ZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVu
ZGVyaW5nTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5n
TW9kZS5oCmluZGV4IGEyMTZiMGVkMTVmNzNlNjM4MTZjY2NmMGU2NmU2YWQwYTkwOTFkMjAuLjRi
YmQxNzk0NzI1M2ExOTBhMmU3NTc1ODkzMzUyOWU3NzM0ODk2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQCBl
bnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90IHsKICAgICBDYW52YXMsCiAgICAg
RE9NLAogICAgIExheWVyQmFja2luZywKKyAgICBTbmFwc2hvdCwKKyAgICBTaGFyZWFibGVTbmFw
c2hvdCwKICAgICBNZWRpYVBhaW50aW5nCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBlYTA0OWE5OTUzMjE3YzYzYmJlN2Q0MTNjZGE3
ZGFhOTcyNjIyMGYxLi42OWNiNzg1ODhkZGRkZmFhMTc0ZTFlOTNjNGJlODg3ZDMxOTNjN2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTg5
LDYgKzg5LDExIEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKK3sKKyAgICByZXR1cm4gUmVmUHRyIHsgbV9zdXJm
YWNlLmdldCgpIH07Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYjZiNTZkODY2YmRmMGNlNzM2YzdjZmUwYjEzYWFiNTVh
MjZkOThjZC4uOTliYmM1ZjI0ZjZkMzBhZTYwZmQyNmRhZjQ2MGE2NzFkMTZhYTIwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgcHVibGljOgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSBvdmVycmlkZTsKKwogICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dFBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDEyNTk5OGZmNTVjZGUw
MjNkZDg3MjkzZTJlYWIyNGZkNjg0ZDdkZmEuLmQ1ZmExNTNhYzJhYjVmZTMyMzQ3YWQ0MjM4Nzdl
MTUzM2MwN2QyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwMSw3ICszMDEsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdl
QnVmZmVyV2l0aFF1YWxpZmllZElkZW50aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvIGJhY2tlbmRTaXplID0gaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7CiAgICAgICAgIGF1
dG8gcmVzdWx0U2l6ZSA9IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246
OlllcyA/IGJhY2tlbmRTaXplIDogaW1hZ2VCdWZmZXItPnRydW5jYXRlZExvZ2ljYWxTaXplKCk7
Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
cmVzdWx0U2l6ZSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOworICAgICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHJlc3VsdFNpemUsIHsgaW1hZ2VCdWZm
ZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGUKICAgICAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBpbWFnZVNp
emUgPSBpbWFnZS0+c2l6ZSgpOwotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29s
b3JTcGFjZSgpIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOwog
ICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBj
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcAppbmRleCA3ZTIyNTgyMjQ4
YjcyNTZkZmU5NTI1ZWRmNzliMzkwMWIxYWFlZGU2Li43YTE2NjdmN2ExMjNiMzg2NTk4MjI5ODhj
Y2M4MTEzYWEwZDU1ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3Mvd2MvV0NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL3djL1dDU2NlbmUuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RkOjpvcHRpb25hbDxVcGRh
dGVJbmZvPiBXQ1NjZW5lOjp1cGRhdGUoV0NVcGF0ZUluZm8mJiB1cGRhdGUpCiAKICAgICBzdGQ6
Om9wdGlvbmFsPFVwZGF0ZUluZm8+IHJlc3VsdDsKICAgICBpZiAobV91c2VzT2Zmc2NyZWVuUmVu
ZGVyaW5nKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUod2luZG93U2l6ZSwgeyB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZSh3aW5kb3dTaXplLCB7IH0pOwogICAgICAgICBnbFJlYWRQaXhlbHMo
MCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpLCBHTF9CR1JBX0VY
VCwgR0xfVU5TSUdORURfQllURSwgYml0bWFwLT5kYXRhKCkpOwogICAgICAgICBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgIGlmIChiaXRtYXAtPmNyZWF0ZUhhbmRsZSho
YW5kbGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBmMjEwOTZhYWFj
ZDBkOWY3YzAwNmU5OGY3MzExYTQ3OTJmMDRjN2EzLi5kMTUwOGQ1MmYwOTdjYzYxMjRmOWMxMjk5
OWRlNzBmNzFhMTEzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Yml0bWFwSW1hZ2VGb3JDdXJyZW50VGltZQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwotICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IHBsYXllci0+
Y29sb3JTcGFjZSgpIH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaW1hZ2VTaXplLCB7IHBsYXllci0+Y29sb3JTcGFjZSgpIH0pOwogICAgIGlmICghYml0bWFw
KQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCBjOGNjNWFhOGZjYjk0ODIwYmRkZDc5NTY1
MzFmMTZmMjE0Mjg2N2NkLi41MzAyZDU2NmY4MGY5M2NhZWJjYzcwYzA3MGE5OTMwZWRiMjE1MGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWly
by5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogY2Fpcm9fc3VyZmFjZV90KiBXS0ltYWdlQ3JlYXRl
Q2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgLy8gV2UgY2Fubm90IHBh
c3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1c3QgbGVhayB0aGUgcmVm
ZXJlbmNlLgotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwo
aW1hZ2VSZWYpLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VS
ZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VT
aXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6
OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlv
bnMpKTsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFn
ZS0+Y29udGV4dCgpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3QqIGNyID0gZ3JhcGhpY3NDb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwg
c3VyZmFjZSwgMCwgMCk7CiAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRP
Ul9TT1VSQ0UpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcAppbmRleCBmMmQzMzM0NzhjMmFkYjlhMzE1NjBhZmUyYzBjODAyNDEzNDBj
NWFlLi5jYmU5MTI0ZjQzNTliMmU0OGY4ZTRiZGFiZDg3ZjI0MDJjMmJmNzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsMTIgQEAgQ0dJ
bWFnZVJlZiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlUmVmKQogICAgIGlm
ICghd2ViSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHdlYklt
YWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IHdlYkltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2Uu
bGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0lt
YWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQpAQCAtNTMsMTQgKzU4LDEy
IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNp
emUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6Oldl
YkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
KTsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Y29u
dGV4dCgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2lu
dCgwLCAwKSwgaW1hZ2VTaXplKTsKLSAgICAKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVj
dChyZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZlSW1h
Z2UsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisKKyAgICBncmFwaGljc0NvbnRleHQuY2xlYXJS
ZWN0KHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUlt
YWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5s
ZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwCmluZGV4IDA0MDM2MjAwMGY1ZjM1ZDRjYjU2NzJmNWM3Zjc2YWFhMTgyMTc2
MDUuLmZlOTE1ZDE3ODcwMWM5NGI3ZjRlNmNjZTViNmY1YjU4M2IxOWQ5ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIENvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhCiB2b2lkIENvbnRleHRNZW51Q29udGV4dERh
dGE6OnNldEltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSkKIHsKICAgICAvLyBGSVhNRTogZmln
dXJlIG91dCB0aGUgcm91bmRpbmcgc3RyYXRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBt
X2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNp
emUoaW1hZ2UtPnNpemUoKSksIHsgfSk7CisgICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7IH0pOwogICAgIGF1dG8g
Z3JhcGhpY3NDb250ZXh0ID0gbV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNGFhM2U1ZDg5MmE4
ODNkMDdjOGY4NTM4MzY5ODA5ZGE3MGJmZmM5Yy4uYjMyMzc4ZDcxNTY2ZmVjMzY1OTAyZTFiZWY5
OGY0OTgzYjI2ZWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05Nyw3ICs5Nyw3IEBAIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVyCiB7CiB9CiAKLUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbikgY29uc3QKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKFdLQ0dD
b21tYW5kc0NvbnRleHRDb3B5RW5jb2RlZERhdGEobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSkpOwogICAgIEFTU0VSVChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5oCmluZGV4IDJlYTQzNjk4MjViNzcyZTgxMGQyMDA1MDM4MmVlODAzZWNjZTgwYzku
LmY0NWRmZTM0ZDExN2QxNGMxNmMyYTAwMzdhMjJiZjE2MGNlODYyYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsK
KyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVE
KCkuCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2Vi
Q29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggMjdl
ODIwZTIzY2Y4OGExYmY1OGFmOThmYzVjMGZjMmE4NWRlZjgzMy4uZTRkZWFkNWY4OTM4Y2UxNmM2
OGNjYzBlMmQyMDljZjUzZDgwMjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTk5LDIwICs5OSw2IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uCiB9CiAKIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKLXsKLSAgICB2YWxpZGF0ZUNv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVz
Rm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsKLSAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZs
b3dlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHZvaWQqIGRhdGEgPSAwOwot
ICAgIGRhdGEgPSBTaGFyZWFibGVCaXRtYXBNYWxsb2M6OnRyeU1hbGxvYyhudW1CeXRlcyk7Ci0g
ICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBkYXRhKSk7Ci19Ci0K
LVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKICAg
ICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgYXV0byBudW1CeXRl
cyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsKQEAgLTEyMywxMyArMTA5
LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIENvCiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVk
TWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpKTsKIH0KIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYg
c2hhcmVkTWVtb3J5KQogewotICAgIEFTU0VSVChzaGFyZWRNZW1vcnkpOwotCiAgICAgdmFsaWRh
dGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1C
eXRlc0ZvclNpemUoc2l6ZSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092
ZXJmbG93ZWQoKSkKQEAgLTEzOSw3ICsxMjMsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgY29uZmlndXJh
dGlvbiwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAgLTE0OCwxMyArMTMyLDExIEBAIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYg
aGFuZGxlLCBTaGFyZWRNZW1vCiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9j
b25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBjcmVhdGUo
aGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgc2hhcmVkTWVtb3J5LnJlbGVh
c2VOb25OdWxsKCkpOwogfQogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhh
bmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QK
IHsKLSAgICBBU1NFUlQoaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKLQogICAgIGlmICghbV9z
aGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKQEAgLTE2
MiwzNCArMTQ0LDE2IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxl
JiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNp
emUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgdm9pZCogZGF0YSkKLSAgICA6IG1fc2l6
ZShzaXplKQotICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCi0gICAgLCBtX2Rh
dGEoZGF0YSkKLXsKLX0KLQotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChj
b25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZjxTaGFy
ZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKLSAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1l
bW9yeSkKLSAgICAsIG1fZGF0YShudWxscHRyKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92
ZShzaGFyZWRNZW1vcnkpKQogewogfQogCi1TaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRt
YXAoKQotewotICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQotICAgICAgICBTaGFy
ZWFibGVCaXRtYXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKLX0KLQogdm9pZCogU2hhcmVhYmxlQml0
bWFwOjpkYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQot
ICAgICAgICByZXR1cm4gbV9zaGFyZWRNZW1vcnktPmRhdGEoKTsKLQotICAgIEFTU0VSVChtX2Rh
dGEpOwotICAgIHJldHVybiBtX2RhdGE7CisgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5kYXRh
KCk7CiB9CiAKIENoZWNrZWRVaW50MzIgU2hhcmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNpemUo
V2ViQ29yZTo6SW50U2l6ZSBzaXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmlu
ZGV4IDRhMDc0MDAxNzM1ZGY4NjRmNGY0YmUxZjllNzY1NTI0MDNlYzNmNTQuLjk2YTFjNzgyZjE1
OGU0YWRjOTEyNTg4MDQzOTFjMmU3YWVkZjIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzksMTQgKzc5LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2hl
Y2tlZFVpbnQzMiBjYWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBD
b25maWd1cmF0aW9uJik7CiAgICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChjb25zdCBDb25maWd1cmF0aW9uJik7CiAKLSAgICAvLyBDcmVhdGUgYSBzaGFyZWFi
bGUgYml0bWFwIHRoYXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJh
dGlvbik7Ci0KICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcg
bWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29uZmlndXJhdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbik7CiAKICAgICAv
LyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBzaGFy
ZWQgbWVtb3J5IGJsb2NrLgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmKTsK
IAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhIGhhbmRsZS4KICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRl
KTsKQEAgLTk0LDExICs5MSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgog
ICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAotICAgIH5TaGFy
ZWFibGVCaXRtYXAoKTsKLQogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgc2l6ZSgpKTsg
fQogCisgICAgdm9pZCogZGF0YSgpIGNvbnN0OworICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNv
bnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9u
KTsgfQorCiAgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKQEAgLTEw
Niw4ICsxMDQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNvdXJjZSk7CiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3Rp
bmF0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UpOwogCi0gICAgYm9vbCBpc0Jh
Y2tlZEJ5U2hhcmVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1vcnk7IH0KLQog
ICAgIC8vIFRoaXMgY3JlYXRlcyBhIGJpdG1hcCBpbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5j
ZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1
c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFw
IHdvbid0IGNoYW5nZS4KICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7
CkBAIC0xMjQsMTQgKzEyMCwxNCBAQCBwdWJsaWM6CiAjZWxpZiBVU0UoQ0FJUk8pCiAgICAgLy8g
VGhpcyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBz
aGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4g
d2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBj
aGFuZ2UuCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlUGVyc2lzdGVudENhaXJv
U3VyZmFjZSgpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOwogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQbGF0Zm9ybUltYWdl
KCkgeyByZXR1cm4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7IH0KICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlv
biwgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIFNoYXJlYWJsZUJpdG1h
cChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1lbW9y
eT4mJik7CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNH
SW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYpIGNvbnN0OwpAQCAtMTQzLDExICsxMzksNiBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0Jp
dG1hcCk7CiAjZW5kaWYKIAotcHVibGljOgotICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKLSAgICBz
aXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyht
X3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KLSAgICAKLXByaXZhdGU6CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9jb25m
aWd1cmF0aW9uKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CkBAIC0xNTcsMTEg
KzE0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlbGVhc2VCaXRtYXBDb250ZXh0RGF0YUNh
bGxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0bWFw
IGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgc2hhcmVkIG1l
bW9yeSBvYmplY3QuCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7Ci0K
LSAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgZmFzdE1hbGxvY2Vk
IG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhlIGRhdGEuCi0gICAgdm9pZCogbV9kYXRhIHsgbnVs
bHB0ciB9OworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2Vy
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKaW5kZXggZTE5NDA3
MzcyODY4NTJkMDIzYWE5YWExOTE0YWNkMDBkMzI2MWE3NS4uN2ZmYTlkYWYyNzQxNWE3MjZjZTQ0
YTlkMzQ2ZTVkNTY3MjAzNGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNl
ckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTEsOSAr
MjExLDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQVBJOjpPYmplY3QmIG9iamVjdCkKICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFn
ZTogewogICAgICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkltYWdlJj4o
b2JqZWN0KTsKIAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIEFTU0VSVChpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwotICAg
ICAgICBpZiAoIWltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSB8fCAhaW1h
Z2UuYml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSkpIHsKKyAgICAgICAgYXV0byBoYW5kbGUg
PSBpbWFnZS5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkgewog
ICAgICAgICAgICAgLy8gSW5pdGlhbCBmYWxzZSBpbmRpY2F0ZXMgbm8gYWxsb2NhdGVkIGJpdG1h
cCBvciBpcyBub3Qgc2hhcmVhYmxlLgogICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjIxLDYgKzIyMCw3IEBAIHZvaWQgVXNlckRhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBvYmplY3QpCiAKICAg
ICAgICAgLy8gSW5pdGlhbCB0cnVlIGluZGljYXRlcyBhIGJpdG1hcCB3YXMgYWxsb2NhdGVkIGFu
ZCBpcyBzaGFyZWFibGUuCiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBpbWFnZS5wYXJhbWV0ZXJzKCk7CiAgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0zOTAsMTUgKzM5MCwxNiBAQCBib29sIFVzZXJEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQp
CiAgICAgICAgIGlmICghZGlkRW5jb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhbmRsZSkpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzPiBwYXJhbXRlcnM7CisgICAgICAgIGRlY29kZXIgPj4gcGFyYW10
ZXJzOworICAgICAgICBpZiAoIXBhcmFtdGVycykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7
Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1h
cC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmVzdWx0ID0gV2ViSW1hZ2U6OmNyZWF0ZSgq
cGFyYW10ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGY3
NDhiZGYzNzM2MTgwODNlYWRjOTViZjhhNmJiMzJiNjM3YjBiYWQuLjZhYTBlYzg0ZmE2MTQxZWU5
ODVjY2NlYTIzMTQ0OTc2ZGYxMDk2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
SW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9
KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGVuY29kZXIgPDwg
ISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDJlZmUyNjA3Mjc3YTRi
OGFkZjJmODA3NzA3ZmQ3NzMxZWQyMmU1NzQuLmI3NDhhYWIwMDBjYjJhM2VmMDdlZmM2MWRmZmZj
M2Y1ZWM3MDg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtODcyLDYgKzg3Miw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZT4gewogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQ
dXJwb3NlOjpDYW52YXMsCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSwK
ICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nLAorICAgICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwKKyAgICAgICAgV2ViQ29yZTo6
UmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsCiAgICAgICAgIFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkltYWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdlMzViMzVkYjBjMWU0MTg1MjJjMDU4
Li4zOWZjNDJmYjA1MzY3M2Y0YTFiZWM1NDJmNzMxNzkzMTFlMGM0YzVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSW1hZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwxMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJJbWFnZS5oIgogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQotewotICAgIHJl
dHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Ci19Ci0KLVJlZlB0cjxX
ZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJ
bWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
JiBiaXRtYXBDb25maWd1cmF0aW9uKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIENocm9tZUNsaWVudCogY2xpZW50KQogewogICAg
IGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmln
dXJhdGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBpZiAoY2xpZW50KSB7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxl
U25hcHNob3QsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAg
ICBpZiAoYnVmZmVyKQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYnVmZmVy
ID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBSZW5kZXJp
bmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCwgeyB9KTsKKyAgICAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0g
ICAgaWYgKCFiaXRtYXApCisKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3QsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKK30K
KworUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFj
a2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJiBo
YW5kbGUpCit7CisgICAgYXV0byBiYWNrZW5kID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBpZiAoIWJh
Y2tlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIGF1dG8gYnVmZmVyID0g
Q29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+Ojpj
cmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSk7CisgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1h
cC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShS
ZWY8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkltYWdlKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitXZWJJbWFnZTo6V2ViSW1hZ2UoUmVmPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKK3sK
K30KKworSW50U2l6ZSBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVm
ZmVyLT5iYWNrZW5kU2l6ZSgpOworfQorCitjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFt
ZXRlcnMmIFdlYkltYWdlOjpwYXJhbWV0ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZm
ZXItPnBhcmFtZXRlcnMoKTsKIH0KIAotUmVmPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFJl
ZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwKQorR3JhcGhpY3NDb250ZXh0JiBXZWJJbWFnZTo6
Y29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RG
TW92ZShiaXRtYXApKSk7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jb250ZXh0KCk7CiB9CiAKLVdl
YkltYWdlOjpXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKLSAgICA6IG1f
Yml0bWFwKFdURk1vdmUoYml0bWFwKSkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gV2ViSW1hZ2U6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKKyAg
ICByZXR1cm4gbV9idWZmZXItPmNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworfQorCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0bWFwKCkgY29uc3QKK3sKKyAgICBh
dXRvKiBiYWNrZW5kID0gbV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYg
KCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0X2Nhc3Q8SW1h
Z2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKworICAg
IGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKCFp
czxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOwogfQogCi1XZWJJbWFnZTo6fldlYkltYWdl
KCkKKyNpZiBVU0UoQ0FJUk8pCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBXZWJJbWFnZTo6Y3Jl
YXRlQ2Fpcm9TdXJmYWNlKCkKIHsKKyAgICByZXR1cm4gbV9idWZmZXItPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpOwogfQorI2VuZGlmCiAKLWNvbnN0IEludFNpemUmIFdlYkltYWdlOjpzaXplKCkgY29u
c3QKK1NoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIFdlYkltYWdlOjpjcmVhdGVIYW5kbGUoU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYml0
bWFwLT5zaXplKCk7CisgICAgYXV0byogYmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpOworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGNvbnN0X2Nhc3Q8SW1hZ2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0Nv
bnRleHQoKTsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5n
KCk7CisgICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5n
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYmFja2VuZEhhbmRsZSA9IGRvd25j
YXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jcmVhdGVCYWNr
ZW5kSGFuZGxlKHByb3RlY3Rpb24pOworCisgICAgaWYgKGF1dG8gaGFuZGxlID0gc3RkOjpnZXRf
aWY8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KCZiYWNrZW5kSGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoKmhhbmRsZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCmluZGV4IDIyZjM4NmY5ZDI5YTVkZjU3
NDM4ZmJhYjQ3OGJiZjg2ZmUxY2QxMDUuLjk3ZTc5YmVmMmEzYmI1MzZjZjViY2E4NTNjNmUwMDgw
ODA2ZjEwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTUgQEAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2hy
b21lQ2xpZW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBj
bGFzcyBJbnRTaXplOworY2xhc3MgTmF0aXZlSW1hZ2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDAsMjAgKzQ1LDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbWFn
ZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKLSAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVh
dGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7Ci0gICAgfldlYkltYWdlKCk7Ci0gICAgCi0gICAg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWZQdHI8
V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zLCBj
b25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFdlYkNvcmU6OkNocm9tZUNsaWVudCogPSBudWxscHRyKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4m
Jik7CiAKLSAgICBTaGFyZWFibGVCaXRtYXAmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdl
dCgpOyB9Ci0gICAgY29uc3QgU2hhcmVhYmxlQml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVy
biBtX2JpdG1hcC5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0Owor
ICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3Q7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkg
Y29uc3Q7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3Q7CisjaWYg
VVNFKENBSVJPKQorICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOworI2VuZGlmCisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjcmVhdGVIYW5kbGUo
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
V3JpdGUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRt
YXA+JiYpOworICAgIFdlYkltYWdlKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAKLSAg
ICBSZWY8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXgg
OTdiNWU2M2YxNWE4MzFmZTRlZTA1YTFhZWIzMjg3Y2MwYmQ3MTlmOS4uZTk2ZGE5MTM4ZDFiMmQ4
OTZkMDkwMDhhM2NiM2I3MzYzNzRhMzY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtODEsNiArODEsMTEgQEAgdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2NhbGVGYWN0b3IsIGNvbnN0IEkKICAgICBDYWlybzo6ZHJhd1N1cmZhY2UoKmNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KCksIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpOwogfQogCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVBlcnNpc3RlbnRDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBjcmVhdGVT
dXJmYWNlRnJvbURhdGEoZGF0YSgpLCBtX3NpemUpOworfQorCiBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CiAgICAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2UgPSBjcmVhdGVTdXJmYWNlRnJvbURhdGEoZGF0YSgpLCBt
X3NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggYmYzZGQwNjAzZjVmN2IyOGRjMTRhMTcyNGQ4MDAzMWExZWZhYjNkOS4uMDQ1ZGVi
YjgxMWRkMzg1MzE3Njc3MjRhNDRmNTE2YTlkNTA5ZjA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEVuY29kZXImIGVu
Y29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUo
KSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCB7IH0pOwogICAgIGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAK
ICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGVkOWE5NjBmNWE4
ZGU2YmJjZGYzMGZlODllMWExZjBjNDExYTkxM2YuLjQ4NDIzOTE2NWI2ZGQ1MzUyOTA2ZTc3NDFk
MTdmZDUwOGI0NjViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC00MzgwLDcgKzQzODAsNyBAQCB2b2lkIHdlYktpdFdl
YlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgdWludDY0X3Qg
Y2FsbGJhY2tJRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ190YXNrX3JldHVybl9w
b2ludGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2Uo
KS5sZWFrUmVmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZh
Y2VfZGVzdHJveSkpOworICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJJ
bWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpLCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCB3ZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1NuYXBzaG90T3B0aW9ucyhXZWJLaXRT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjA3MzllNWFkYjBiNzdhZmViMzEwNTgx
ZWI5NmQ3ZTNhNzgwMmI3MC4uMmIxOGU5OTI3NGQzMjc4Y2NjMjI4NjE1NjI1YjMzZWJjNWRhYTE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKgogICAg
IHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKIAogICAgIFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6
ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRp
b24pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzNkMDlkZmMyOGJiNDZmMjhk
Y2E0NjJjMWE1NTY4ZDdjODhkZmM3MS4uYWZjZDVkNWI0N2ZmOWE0NzNkNjc1NjY2NzNjOTM5NTc4
YWExNTQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02
OTAwLDE0ICs2OTAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3VudFN0cmluZ01hdGNo
ZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291CiAgICAgbV9maW5kQ2xp
ZW50LT5kaWRDb3VudFN0cmluZ01hdGNoZXModGhpcywgc3RyaW5nLCBtYXRjaENvdW50KTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5k
ZXgpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5kbGUp
OwotICAgIGlmICghYml0bWFwKSB7CisgICAgYXV0byBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUo
cGFyYW1ldGVycywgV1RGTW92ZShjb250ZW50SW1hZ2VIYW5kbGUpKTsKKyAgICBpZiAoIWltYWdl
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhp
cywgV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSkucHRyKCksIG1hdGNo
SW5kZXgpOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1
bHQodGhpcywgaW1hZ2UuZ2V0KCksIG1hdGNoSW5kZXgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0
YSwgdWludDY0X3QgbGlmZXRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGM5MzUzOTk3NjNiMDI1ZTQyZWQ3NDFkN2FlYTg0M2ZhNGQzY2ExM2YuLjMwYzU2NWMy
ZmE3NmNiYjgwM2JjZDUwNjBkYjhhYjgzZjE4ZDU3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xMjIyLDcgKzEyMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBn
ZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0
RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRNYXRj
aChpbnQzMl90IG1hdGNoSW5kZXgpOwotICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2go
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMy
X3QgbWF0Y2hJbmRleCk7CisgICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZv
aWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgaGlkZUZpbmRJbmRpY2F0b3IoKTsKICAgICB2b2lk
IGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMjc2ZDNlMmY3NjQwOTg2YzM4ZmVjNDlk
M2RjOTliMWJhZWRhZmEwLi40NTU2NGRiOTNkYjg5MzExZWViODNmOGI1NGYzMzA2NWY5MjJiOTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yNDIsNyArMjQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBE
aWRGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBtYXRj
aFJlY3QsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRX
cmFwQXJvdW5kKQogICAgIERpZEZhaWxUb0ZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZykKICAgICBE
aWRGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+PiBtYXRjaGVzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbikKLSAg
ICBEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKKyAgICBEaWRHZXRJbWFn
ZUZvckZpbmRNYXRjaChzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudElt
YWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogCiAgICAgIyBQb3B1cE1lbnUgbWVzc2Fn
ZXMKICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDY0X3QgdGV4
dERpcmVjdGlvbiwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4LCBzdHJ1Y3QgV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CmluZGV4IDcyMDc1ZmJjODYyYzM0ZDBjODZiNGFjNTM4ZTRjNDY2OTljYmVlNDIuLjRiOWUzNTk1
M2I2YjM3N2UxZTkwN2ExMDY3MGFlMGM2NmY0NGJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsMTEgKzI5NCwxNSBAQCAt
ICh2b2lkKWRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQ6KFdlYktpdDo6V2ViSW1hZ2UgKilpbWFn
ZQogICAgIGlmIChfaW1hZ2VSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS5zaXplKCk7
CisgICAgYXV0byBzaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBzaXplLnNjYWxlKDEgLyBfcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGlt
YWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIGltYWdlQ2FsbGJhY2sgPSBfaW1hZ2VSZXBseUNhbGxiYWNrcy50
YWtlRmlyc3QoKTsKLSAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpz
aXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6
c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUZXh0RmluZGVyTWF0Y2ggY2Fs
bGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDdhYjY3YTM0Mzdh
MjhhMTliZDY2ZTQ1NTdjM2I0NzQ1NmMxZTIxMTUuLjQ5ZGFjZDYzYjVlYjdlMDFmY2EzNzU4MDUz
OGZlNGQyZWI2N2IyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC04
NjEsNyArODYxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVu
c2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHMKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFuZGxl
ID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5z
aG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaAppbmRleCBiZjhhNDcwMzg1ZmNhNzQwZDQ0Mzc1NmVhYTdmNGQ3
ZmM3OWQyNjU2Li42ZWM1NjhkMDZkYjI4ZWQ0MDYzMWUyNzUwMmE1MDBhZDI4N2QxNDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpA
QCAtNDUsNSArNDMsMyBAQCB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBzdGQ6OnZh
cmlhbnQ8CiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgK
aW5kZXggNTgwMjI4YWY4NWY3NTNlNThiZGY1ZWZjMWQwN2QxYTZhZjAzNjNmYi4uY2QyZTllM2Ux
NGI5ODEwNjRlNWI4OTAzZWI0OWZkMWZkODkyZjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAKQEAgLTM0
LDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmlu
ZyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
QmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUmJikgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc0JhY2tlbmRIYW5kbGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTIsNSArNTEsMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JVRkZFUl9CQUNLRU5EX1NIQVJJTkco
V2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLCBpc0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmcoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBh
MTE3MDcyNDkwZTVjN2E3OTU0ZmJiZTc4ZjcwZjc5MzZlZGMyZWQxLi43YWUxNWEwZmUwNzBjODMx
MGU1N2VmYzgzZWYwYmUzMzc1NTEwN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgog
Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BpeGVsQnVmZmVyLmg+CkBAIC04NSw3ICs4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJh
Y2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFt
ZXRlcnMpKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTkzLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCks
IFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgYml0bWFwLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUoY29udGV4dCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlKQpAQCAtMTExLDEwICsxMDksMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMK
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJz
LCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgYml0bWFw
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCi1JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJp
dG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNoYXJlYWJsZUJpdG1hcD4m
JiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKICAg
ICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBtX2JpdG1h
cChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAg
LTEyNiwxMCArMTI0LDEwIEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAgICAgbV9jb250ZXh0
LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAotSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3Jl
YXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAogewogICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Cisg
ICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOwogICAgIHJldHVy
biBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIApAQCAtMTQz
LDYgKzE0MSwxMyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gbV9iaXRtYXAtPmJ5dGVzUGVyUm93KCk7
CiB9CiAKKyNpZiBVU0UoQ0FJUk8pCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCit7CisgICAgcmV0
dXJuIG1fYml0bWFwLT5jcmVhdGVQZXJzaXN0ZW50Q2Fpcm9TdXJmYWNlKCk7Cit9CisjZW5kaWYK
KwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwpAQCAt
MTY0LDUgKzE2OSwzIEBAIHZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpw
dXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMjFkZDBkODc1MGFkZTMz
MjY3ZDA4ZTg4MDcxZDVkNWNkMzMwODRiZi4uZjU5ODIyNTdiYmExODE4OTYxODgzYmZiMjA4Y2Y4
YzVhMjYyY2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CkBAIC00Myw2ICs0MSw3IEBAIGNsYXNzIFNo
YXJlYWJsZUJpdG1hcDsKIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCwgcHVibGlj
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCiBwdWJsaWM6
CiAgICAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50U2l6ZSBjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwpAQCAtNTIsMTIgKzUxLDE2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CisgICAg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBSZWY8
U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiYmKTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KLSAgICAKICAgICBXZWJDb3JlOjpJbnRTaXpl
IGJhY2tlbmRTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKworICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Jp
dG1hcC5wdHIoKTsgfQorI2lmIFVTRShDQUlSTykKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJD
b3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTY2LDE2ICs2OSwx
NSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhl
bEJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVz
dEZvcm1hdCkgZmluYWw7CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFdl
YkNvcmU6OlByb2Nlc3NJZGVudGl0eSYpIHsgfQorCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIGJ5
dGVzUGVyUm93KCkgY29uc3QgZmluYWw7CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5n
KiB0b0JhY2tlbmRTaGFyaW5nKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgcmVs
ZWFzZUdyYXBoaWNzQ29udGV4dCgpIGZpbmFsIHsgLyogRG8gbm90aGluZy4gVGhpcyBpcyBvbmx5
IHJlbGV2YW50IGZvciBJT1N1cmZhY2UgYmFja2VuZHMgKi8gfQogCi0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggMjViNWE0NTU4
MjUwZWUwNjA1NmM4NDNhMTdjMTM4MTk2MTY5ZjNhNy4uMTZmYTZiMmEwMGFiOTFjODE4OTZhNDdk
Y2Y1OGFiYzVkNDcxNzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApA
QCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZShOYXRpdgogewogICAgIGF1dG8gaW1h
Z2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZS5zaXplKCksIHsgaW1hZ2UuY29sb3JTcGFjZSgpIH0p
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2Uuc2l6ZSgp
LCB7IGltYWdlLmNvbG9yU3BhY2UoKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0MDExY2E4ZWE5OTNmM2VmYTQ3ZmJlOGJlNjY1
Yzc5OWEyNzlmOThhLi5lYWU2Zjc5NWVkM2Y5MjQ2NDJjNGQ4NDliOWE5OGE5YTc2OTc1NzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJS
ZW1vdGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhYwogICAg
IHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4ocGFy
YW1ldGVycywgV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgp
IGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbikg
Y29uc3QKIHsKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4o
bV9oYW5kbGUpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaApp
bmRleCAwOTQxYmZkYTdlZTA1OGM5OGYwMzUyMmQzYWU3M2M5NTc0YWM5OTI4Li4yMGQ4YzYwZTEx
MzU2ZThiMmUwN2Q1ODliMGQzOTZmMmYyNDEyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNl
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlID0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsKLSAgICBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFs
OworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRl
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRT
aXplKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDMyOWEx
YzkxNzEzNDk0NzE5YzJiYWE2YmUxNjRlMDU3ZjZiODE2MC4uYWVkZTdiZWE4MmE4MGUwMDY3N2U1
NzY5Y2Q2NTk2NGY5YjQ2ZDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNzMs
NyArNzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZQogICAgIHJldHVybiBtYWtlVW5pcXVl
PEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1ldGVycywg
V1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUo
KSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSht
X3N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCmlu
ZGV4IGJkYmNkOThmMzdlYTk0OThkMDc0YWY4NjcwODc0YjgxODFjMjQ4ODguLmIxNDQyNmU3ZjQy
ZDdkYTUwNWJmZmFmYWYxNGExNzNhZjIxMGQ2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShj
b25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKTsKIAotICAgIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgogICAgIC8vIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQppbmRl
eCAyODFkODY3ZDEyNjQ2MmVlNmExYmQ2ZTI3MmZjMjBiMjZiZDUwOWUwLi4wMjFkNzBmZjNhMDNi
NDZkN2VkNzU2OTA2MzU0YzBmYWI1YzcyYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDE0ICs2OSwxOCBAQCAt
IChDb2NvYUltYWdlICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90T3B0aW9u
cylvcHRpb25zIHdpZHRoOihOU051bQogICAgIGlmICh3aWR0aCkKICAgICAgICAgb3B0aW9uYWxX
aWR0aCA9IHdpZHRoLmZsb2F0VmFsdWU7CiAKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJJbWFnZT4g
aW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShXZWJLaXQ6OnRvU25hcHNob3RPcHRp
b25zKG9wdGlvbnMpLCBvcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92ZXJmbG93
LCBvcHRpb25hbFdpZHRoKTsKKyAgICBhdXRvIGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVk
SW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1Nu
YXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFn
ZS0+Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBp
ZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCiAjaWYgVVNFKEFQUEtJVCkK
LSAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFn
ZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2UoKS5nZXQoKSBzaXplOk5TWmVyb1NpemVdKS5hdXRvcmVs
ZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSku
YXV0b3JlbGVhc2UoKTsKICNlbHNlCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCldKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdp
dGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKS5hdXRvcmVsZWFz
ZSgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcAppbmRleCA3NWVmN2MyZjVjMjJmNjA4MTFiODA3M2FjZDczNjYxMzFiNjdmMmVkLi5h
NGE4ZWEwMTNhNWUzNWYwNmNjYmJmNmZiYzljYjA3OTg2NDAwOWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcxLDE0ICsxNzEsMTIgQEAg
c3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3
LCBjb25zdCBJbnRSZWN0JiBwYWludGkKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1h
cCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFw
c2hvdC0+Y29udGV4dCgpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0
ZSgtcGFpbnRpbmdSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNz
Q29udGV4dC5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxl
Y3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRl
U2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVj
dGlvbkhpZ2hsaWdodGluZykKQEAgLTE5Miw3ICsxOTAsNyBAQCBzdGF0aWMgUmVmUHRyPFdlYklt
YWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBh
aW50aQogCiAgICAgYXV0byBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwot
ICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQu
Z2V0KCksIHBhaW50aW5nUmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9j
dW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNo
b3QoZ3JhcGhpY3NDb250ZXh0LCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBG
cmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDk3NTI5ZmMx
YWMzOTIyOTM1ZDk5NWMyZmM1Y2FkOTRiMWJiNjUyZjIuLmFiNmIyNmM5M2Q1M2VlZjJmZjFjYjY1
ODBhMzNkYTg4YjczNjNhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOSwyMCArMTM5LDE3IEBAIFJlZlB0cjxXZWJJbWFn
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlv
bnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNpemUo
KTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8g
YmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0
b3JlU2l6ZSwgeyB9KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkKKyAgICBhdXRvIHNuYXBzaG90
ID0gV2ViSW1hZ2U6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0lt
YWdlT3B0aW9ucyhvcHRpb25zIHwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlKSk7CisgICAgaWYg
KCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IGJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYg
KCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0
ID0gc25hcHNob3QtPmNvbnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2NhbGVG
YWN0b3IpOwogCiAgICAgcGFpbnRSZWN0Lm1vdmUoZnJhbWVWaWV3LT5mcmFtZVJlY3QoKS54KCks
IGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueSgpKTsKICAgICBwYWludFJlY3QubW92ZUJ5KC1mcmFt
ZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xh
dGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRl
KC1wYWludFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4g
b2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvcjsKQEAg
LTE2NSwxMiArMTYyLDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZnJhbWVWaWV3
LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXQoKTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgcGFpbnRS
ZWN0KTsKKyAgICBmcmFtZVZpZXctPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0KTsK
ICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CiAKLSAgICBy
ZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiYWNraW5nU3RvcmUucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6dGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IGRmOGU1NWRmMWYwYWU4MzYwM2ZhOGRkM2E5MWEwZWZhZDM4NWFiN2UuLmJkMjYw
ZjkzZmJiZmFiZjA2ZDYyNmEwNzI3Yjc0ZGY2OTdlYjkyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MywxMyArMTczLDEyIEBAIFJlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjppbWFnZSgpIGNvbnN0CiAgICAgQml0
bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CiAg
ICAgSW50U2l6ZSBzaXplKGJpdG1hcEltYWdlLnNpemUoKSk7CiAgICAgYXV0byB3ZWJJbWFnZSA9
IFdlYkltYWdlOjpjcmVhdGUoc2l6ZSwgc3RhdGljX2Nhc3Q8SW1hZ2VPcHRpb25zPigwKSk7Ci0K
LSAgICAvLyBGSVhNRTogbmVlZCB0byBoYW5kbGUgRVhJRiByb3RhdGlvbi4KLSAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICBpZiAoIXdlYkltYWdlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGJpdG1h
cEltYWdlLCB7eyB9LCBzaXplfSk7CisgICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYg
cm90YXRpb24uCisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQo
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGJpdG1hcEltYWdlLCB7IHsgfSwgc2l6
ZSB9KTsKIAogICAgIHJldHVybiB3ZWJJbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDBhZmMwMTcyYzliM2M4ZTI3
OTY1ODU5ODNjNTU1Y2ZiMjJhZWM5YmIuLmIxNTc5YTIwZDRkOGZkMjJiNWU4MDE4NmFiYjE5OTM1
NGIyNGQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0g
c2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7
CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJh
Y2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAppbmRl
eCAxMjAyNjNkNjVkNjFmNTkxZTVmMWY2N2ZkNGZlOGJmNTNlZmZjMzMwLi44MzFmMThiNDY0MGU1
ODBiMzdhNDE1OTI1MDVmZWZhZGEwMGE5Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBj
cmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAog
ICAgICAgICBpZiAoIXNuYXBzaG90SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25h
cHNob3RSZWN0LnNpemUoKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90UmVjdC5z
aXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKICAgICAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVu
ZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGlt
YWdlU2l6ZS53aWR0aCgpIDw9IDEgfHwgaW1hZ2VTaXplLmhlaWdodCgpIDw9IDEpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1h
cCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1h
Z2VTaXplLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgICAgIGlmICgh
Yml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYg
cmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0
IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAgICBh
dXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNp
emUoYml0bWFwU2l6ZSksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICBh
dXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoYml0bWFw
U2l6ZSksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKICAgICBpZiAoIXNoYXJl
ZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBkMzFmNDI1YjhkMTNkODdlMWJhNGQxNjQ0MTRhYzEyNWE0NjNhNjBmLi4zNmMwZTcwODM2YjJh
MzExMTg1NmE0YjI2MDkwYzVmYWY0OWM4NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZpbmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1
ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCkBAIC02Nyw2ICs2
OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JD
aG9vc2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50UnVsZUxpc3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNl
VHJhY2tlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggNWU1Y2VmZjcw
MWM5ZTRhZTFkOGJlM2U1ODE0MGU4ZGIxNDNmYzQ1Ni4uZWIyYTY4ZDM1NTA5NmJhMmUwYzdmNmJh
MzkwNzM1YWI0ODZmM2FhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9T
dXJmYWNlVG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0g
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNp
emUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFn
ZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+aGFzUGxhdGZv
cm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGUxZTBlNjEx
MmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQuLmIxNDM1OGMyY2MyOTYwNGE1MDI2NTI4
MWM4ZDIxNTI0NmVkODIwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTY4
LDcgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFnZVJlZjsKIAogc3RhdGljIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcChEcmFnSW1hZ2UgaW1h
Z2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIHsgc2NyZWVuQ29sb3JT
cGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOworICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5G
cmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKaW5kZXggZWUwNzEzZjAyYTg3N2Mw
Yjc2NDNkNjI5MmVjNTk4NmRkMjRkM2M3Yy4uN2EwNjM2ZDRkNDkzYTk1ZTJkNDRhZGViYTRiNjUx
YzI3OGUwZGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtNzYsOCArNzYs
OCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogICAgIGludCBiYWNraW5nU3RvcmVXaWR0aCA9
IHN0ZDo6bWF4KHBhZ2VDb29yZGluYXRlcy53aWR0aCgpIC0gbV9wb3B1cENsaWVudC0+Y2xpZW50
SW5zZXRMZWZ0KCkgLSBtX3BvcHVwQ2xpZW50LT5jbGllbnRJbnNldFJpZ2h0KCksIHBvcHVwV2lk
dGgpOwogCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplKGJhY2tpbmdTdG9yZVdpZHRoLCAo
aXRlbUNvdW50ICogZGF0YS5tX2l0ZW1IZWlnaHQpKTsKLSAgICBkYXRhLm1fbm90U2VsZWN0ZWRC
YWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3Rv
cmVTaXplLCB7IH0pOwotICAgIGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgZGF0
YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVDb250
ZXh0ID0gZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBzZWxlY3RlZEJhY2tp
bmdTdG9yZUNvbnRleHQgPSBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGY5YTExYzY1Mjg4ODhiMTMy
YzcyMDdhOGYzYTVkYmJjOTU4M2QyN2IuLjhkNzFjMGE5NWNhOGJmMTY4MmQ5MTYyNDQ5ZmEzZjFh
ZjUxOTY0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lk
IERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRh
dGVJbmZvKQogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUs
IHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiaXRtYXBT
aXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRl
eCAxZDY0M2I2YjQyODhkMDhlMDM4YzQ2MjVkMDU0OWRlNjhhZjJhYTc3Li43ZTVkZGRlZGViZWFi
ODA2ODI0Mjk4ZGRhOTdlZmZjYzQwYzdjNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0zMTgsMjAgKzMx
OSwxOCBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJf
dCBtYXRjaEluZGV4KQogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24obV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XSk7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBzZWxlY3Rpb25TbmFwc2hvdCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFt
ZSktPmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCk7CisgICAgYXV0byBzZWxlY3Rpb25TbmFwc2hv
dCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSktPmNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCk7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlv
bik7CiAKICAgICBpZiAoIXNlbGVjdGlvblNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgc2VsZWN0aW9uU25hcHNob3Qt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOwotCisgICAgYXV0byBoYW5kbGUgPSBzZWxlY3Rpb25TbmFw
c2hvdC0+Y3JlYXRlSGFuZGxlKCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEdldEltYWdlRm9yRmluZE1hdGNoKGhhbmRsZSwgbWF0Y2hJbmRleCkpOworICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJbWFnZUZvckZpbmRNYXRjaChz
ZWxlY3Rpb25TbmFwc2hvdC0+cGFyYW1ldGVycygpLCBoYW5kbGUsIG1hdGNoSW5kZXgpKTsKIH0K
IAogdm9pZCBGaW5kQ29udHJvbGxlcjo6c2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggNzFlZDE4ODJmYjQyNGQyMWM2NzlkMTNiYjdiNTFiNGVjODRhMTY1ZS4uOWFjZWM2NmJlYmRk
NWJlZDUwM2ZhMzlmMDFhYThmYzFkNDJkYWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJX
ZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtODU5LDI3ICs4NjAsMTMgQEAgUmV0YWluUHRyPENGRGF0
YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24gY2FsbGJh
Y2ssIHZvaWQKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6
Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAorUmVmUHRyPFdlYkltYWdlPiBXZWJGcmFt
ZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewotICAgIGF1dG8gc25hcHNob3Qg
PSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIHsgeyBXZWJDb3JlOjpTbmFwc2hvdEZs
YWdzOjpGb3JjZUJsYWNrVGV4dCB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH0pOworICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bigqY29yZUZyYW1lKCksIHsgeyBXZWJDb3JlOjpTbmFwc2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4
dCwgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6U2hhcmVhYmxlIH0sIFBpeGVsRm9ybWF0OjpCR1JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CiAgICAgaWYgKCFzbmFwc2hvdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmJhY2tlbmRTaXplKCksIHsg
fSk7Ci0gICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHByb3ZpZGluZyBhIHdheSB0byB1c2Ug
c3VicGl4ZWwgYW50aWFsaWFzaW5nIGZvciB0aGUgc25hcHNob3QKLSAgICAvLyBpZiB3ZSdyZSBj
b21wb3NpdGluZyB0aGlzIGltYWdlIG9udG8gYSBzb2xpZCBjb2xvciAoZS5nLiB0aGUgbW9kZXJu
IGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJl
ZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShzbmFwc2hvdCksIEZsb2F0UG9p
bnQoKSk7Ci0KLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3Q7CisgICAgcmV0dXJuIFdlYkltYWdl
OjpjcmVhdGUoc25hcHNob3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAppbmRleCA2YzNhOTQ4NmU0NDM0MmFmY2I1NGRhNzZhMjJjYTNkMDNjMjE2ZWM1Li5kMzlm
YjI1YjZiZmFjMzZhZjlhNjdmYmM2Y2VmZjQ5MWUwOThlNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOworY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0IEZy
YW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKQEAgLTE4NCw3ICsxODUs
NyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURhdGEoRnJh
bWVGaWx0ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7CisgICAgUmVm
UHRyPFdlYkltYWdlPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlvbklEIGZpcnN0TGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMYXllclRy
ZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4OTIyYjA5ZTU0YWY1MjYxMzY3MjQ1
YmIyODY2YTY4YjRkNGQ5MGUuLmRjZTIwODg1YzNlM2YzZWE5YjVhYjJkMWIzMzY3MWUxNzcxYzQ0
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0yNjM5LDcgKzI2MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNu
YXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcAogCiAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2Ut
PmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFu
ZGxlKTsKIH0KQEAgLTI3MDgsMTQgKzI3MDgsMTMgQEAgdm9pZCBXZWJQYWdlOjpwYWludFNuYXBz
aG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUK
ICAgICB9CiB9CiAKLXN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gc25hcHNo
b3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBX
ZWJQYWdlJiBwYWdlKQorc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzbmFwc2hvdENvbG9y
U3BhY2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCiB7Ci0gICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIHJldHVybiBzY3JlZW5Db2xv
clNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgotICAg
IHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKIH0KIAogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMgb3B0aW9ucykKQEAgLTI3MjgsMTQgKzI3MjcsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXpl
JiBiaXQKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9w
dGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdl
OjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9u
cyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgp
LmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9w
dGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsICpncmFwaGljc0NvbnRleHQpOworICAgIGF1
dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgcGFpbnRTbmFw
c2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVW
aWV3LCBncmFwaGljc0NvbnRleHQpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwogfQpAQCAtMjc2
NiwyNyArMjc2MywyNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShX
ZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0aQogICAgICAgICBzbmFwc2hv
dFNpemUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGlt
dW1IZWlnaHQpOwogICAgIH0KIAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRl
KHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNu
YXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykpOworICAg
IGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RP
cHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25z
LCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNu
YXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBncmFwaGlj
c0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNu
YXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91Ymxl
IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBzY2FsZUZhY3RvciAvPSBkZXZpY2VTY2FsZUZh
Y3RvcjsKICAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsK
LSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkp
OworICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgZ3JhcGhpY3ND
b250ZXh0LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgQ29sb3Ig
c2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2spOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFt
ZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hv
dFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENv
b3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFw
aGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBG
cmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNl
dE5vZGVUb0RyYXcobnVsbHB0cik7CkBAIC01NjU5LDM3ICs1NjU1LDMzIEBAIHZvaWQgV2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mCiAgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50
aW5nKCkpOwogI2VuZGlmCiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0gICAgICAgIGlmICghYml0bWFwKSB7
CisgICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIEltYWdlT3B0aW9u
c1NoYXJlYWJsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksICZtX3BhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpIHsKLSAg
ICAgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VT
aXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zY2FsZShwcmludGluZ1NjYWxlKTsKKworICAgICAgICBhdXRvJiBncmFwaGljc0NvbnRleHQg
PSBpbWFnZS0+Y29udGV4dCgpOworICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNjYWxlKHByaW50aW5nU2NhbGUpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBw
ZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgewotICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9wcmludENvbnRleHQpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGRyYXdQ
REZEb2N1bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBwZGZEb2N1bWVu
dC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgq
Z3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKFJldGFp
blB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJh
bWUoY29yZUZyYW1lKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3QpOworICAgICAgICB9IGVsc2UK
KyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0
KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KLQotICAgICAgICBpbWFnZSA9IFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNlbmRpZgog
CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotCiAgICAgaWYgKGltYWdlKQot
ICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVI
YW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBjb21wbGV0
aW9uSGFuZGxlcihoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiYWQ1ZGU0ZjE1NmY3MGY3Mzk5ZmY1ZTJj
MjdjNzkwMWI5NWM1NmVjLi42ODVjNmYwYTY2ZWY5NWRhNzAwYWMxOTg4Yjg0MjJjODFlNWViYmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQpAQCAtMzEwMiw4ICszMTAyLDggQEAgc3RhdGljIHZvaWQgdGV4dEludGVyYWN0aW9u
UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBIVE1MSW5wdXRFbGUKIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9y
Tm9kZShFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbWFnZSBj
b250YWlucyBhdCBtb3N0IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28gYmlnLgot
ICAgIGlmIChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQs
IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCi0gICAgICAgIHJldHVybiAm
c25hcHNob3QtPmJpdG1hcCgpOworICAgIGlmIChhdXRvIHNuYXBzaG90ID0gc25hcHNob3ROb2Rl
KGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCisgICAgICAg
IHJldHVybiBzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggMWE3ODlmOTlkODlmNjdmODAyMTVmZDE2NjE1MDljZTMzNGRiMTg2MS4uYmQ1NThiMjgy
YjY1ZTEzZTQyNGZhZmQ3MjUyMTVmYzk1NTViMDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NzYsOSArNTc2LDEz
IEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAg
ICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRpdmVJbWFnZSA9
IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAg
ICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKICAgICBsYXll
ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSkpOwot
ICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2Ut
PmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYklt
YWdlKiBpbWFnZSkKQEAgLTU5MSw4ICs1OTUsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21P
dmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWxheWVyKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgp
OworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGxheWVyLT5z
ZXRTaXplKGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVu
dHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgp
OworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cGRh
dGVIZWFkZXJBbmRGb290ZXJMYXllcnNGb3JEZXZpY2VTY2FsZUNoYW5nZShmbG9hdCBzY2FsZUZh
Y3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzYjBlMDBh
YmIwY2UzMjNkOWI2ZDFhZjdkNjIwN2E4NGQzYWY5MWZiLi4zOTUzZTllZDgzNGI5NDhmZjllMjJl
NzMyZGFiMDUyNTIzNTVhNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0yMjA1LDYgKzIyMDUsOCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgICAgIHJldHVybiBt
X3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmc7CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJw
b3NlOjpET006CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpMYXllckJhY2tpbmc6CisgICAg
Y2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDoKKyAgICBjYXNlIFJlbmRlcmluZ1B1cnBv
c2U6OlNoYXJlYWJsZVNuYXBzaG90OgogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9y
RE9NUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZzoK
ICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458338</attachid>
            <date>2022-04-26 01:22:47 -0700</date>
            <delta_ts>2022-04-27 16:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220426012247.patch</filename>
            <type>text/plain</type>
            <size>105041</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMyOTgxNjY4ZTIxMjRh
ZTIxNGJhNzE2NjllZTg2ZWEyOTUxYjA5Ni4uZTAyN2RlZjE5ZWRmMjc3NDRiNjVjMjZjNzBjOTQ4
ZWVkY2FlNmJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
ZWZvcmUgZW5hYmxpbmcgR1BVIFByb2Nlc3MgZm9yIERPTSByZW5kZXJpbmcgdGhlcmUgd2VyZSB0
d28gbW9kZXMgZm9yCisgICAgICAgIHBhZ2Ugc25hcHNob3Q6IExvY2FsIGJpdG1hcCBhbmQgU2hh
cmVhYmxlQml0bWFwLiBUaGUgU2hhcmVhYmxlQml0bWFwIGlzCisgICAgICAgIHNoYXJlZCBiZXR3
ZWVuIHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNzLiBUaGUgaW1hZ2UgaXMgZHJhd24g
aW4KKyAgICAgICAgV2ViUHJvY2VzcyBhbmQgaXMgY29uc3VtZWQgYnkgdGhlIFVJUHJvY2Vzcy4K
KworICAgICAgICBBZnRlciBlbmFibGluZyBHUFUgUHJvY2VzcyBmb3IgRE9NIHJlbmRlcmluZywg
YSBuZXcgbW9kZSBzaG91bGQgYmUgYWRkZWQ6CisgICAgICAgIFJlbW90ZSBTaGFyZWFibGVCaXRt
YXAuIEluIHRoaXMgbW9kZSwgdGhlIGdyYXBoaWNzIHdpbGwgYmUgcmVjb3JkZWQgaW4KKyAgICAg
ICAgV2ViUHJvY2VzcywgdGhlIGRyYXdpbmcgd2lsbCBiZSBjb21taXR0ZWQgaW4gR1BVUHJvY2Vz
cyBhbmQgdGhlIGltYWdlIHdpbGwKKyAgICAgICAgYmUgY29uc3VtZWQgYnkgZWl0aGVyIHRoZSBX
ZWJQcm9jZXNzIG9yIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgVG8gYWRkIHRoaXMgbmV3IG1v
ZGUsIHRoZSBzbmFwc2hvdCB3aWxsIGJlIGRyYXduIHRvIGFuIEltYWdlQnVmZmVyIGluc3RlYWQK
KyAgICAgICAgb2YgYSBTaGFyZWFibGVCaXRtYXAuIEFuZCBXZWJJbWFnZSB3aWxsIGJlIGJhY2tl
ZCBieSBhbiBJbWFnZUJ1ZmZlciBpbnN0ZWFkCisgICAgICAgIG9mIGEgU2hhcmVhYmxlQml0bWFw
LgorCisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJv
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmg6CisKIDIwMjItMDQtMjUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHNob3VsZCBub3QgYmUgZ3VhcmRlZCBiYXNlZCBvbiBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZmZlYTlmYzM0MzcxZDhhMmY3ZjhkMTM2YmUzZjYzYmZlNGMxYTQxOC4uNjkwN2RhYTc3
ZTE4ZjBiNzBhNDc1Yjk0ODEyZmFhZDY4NDEwNDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjUg
QEAKKzIwMjItMDQtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIFdlYkltYWdlIGJlIGJhY2tlZCBieSBJbWFnZUJ1ZmZl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTI3
CisgICAgICAgIHJkYXI6Ly85MTExMzYyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0tIEFsbG93IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJp
bmcgYW5kIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZAorICAgICAgICAgICB0byBj
b21waWxlIGFsd2F5cy4KKworICAgICAgICAtLSBNYWtlIFdlYkltYWdlIGhvbGQgYW4gSW1hZ2VC
dWZmZXIgaW5zdGVhZCBvZiBoYXZpbmcgaXQgaG9sZCBhIFNoYXJlYWJsZUJpdGFtcC4KKworICAg
ICAgICAtLSBQYXNzIHRoZSBDaHJvbWVDbGllbnQgdG8gV2ViSW1hZ2U6OmNyZWF0ZSgpIHNvIGl0
IGNhbiBjYWxsIGl0cworICAgICAgICAgICBjcmVhdGVJbWFnZUJ1ZmZlcigpIHdoaWNoIGNyZWF0
ZXMgUmVtb3RlSW1hZ2VCdWZmZXIgZm9yIEdQVVByb2Nlc3MKKyAgICAgICAgICAgZHJhd2luZy4K
KworICAgICAgICAtLSBSZW1vdmUgdGhlIFNoYXJlYWJsZUJpdGFtcCBsb2NhbCBtb2RlIHdoZXJl
IGlzIGJhY2tlZCBieSBhIGxvY2FsIG1lbW9yeQorICAgICAgICAgICBidWZmZXIuIFRoaXMgbW9k
ZSB3YXMgYWRkZWQgdG8gbWFrZSBXZWJJbWFnZSBjYW4gYmUgbm9uIHNoYXJlYWJsZSBldmVuIAor
ICAgICAgICAgICBpdCB3YXMgYmFja2VkIGJ5IFNoYXJlYWJsZUJpdGFtcC4gU28gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoKQorICAgICAgICAgICBzaG91bGQgYmUgcmVuYW1lZCBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZSgpLgorCisgICAgICAgIC0tIFJlcGxhY2UgV2ViSW1hZ2U6
OmJpdG1hcCgpOjptYWtlQ0dJbWFnZUNvcHkoKSB3aXRoIAorICAgICAgICAgICBXZWJJbWFnZTo6
Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpCisKKyAgICAgICAgLS0g
UmVwbGFjZSBXZWJJbWFnZTo6Yml0bWFwKCk6Om1ha2VDR0ltYWdlQ29weSgpIHdpdGgKKyAgICAg
ICAgICAgV2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdT
dG9yZSkKKworICAgICAgICAtLSBSZXBsYWNlIFdlYkltYWdlOjpiaXRtYXAoKTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCkgd2l0aAorICAgICAgICAgICBXZWJJbWFnZTo6Y29udGV4dCgpCisKKyAg
ICAgICAgLS0gQWxsb3cgZW5jb2RpbmcgYW5kIGRlY29kaW5nIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZCBieSBhbGxvd2luZyAKKyAgICAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzIHRvIGJlIGVuY29kZWQgYW5kIGRlY29kZWQuCisKKyAgICAgICAgLS0gTWFr
ZSBJbWFnZUJ1ZmZlciBiZSBhYmxlIHRvIGNyZWF0ZUNhaXJvU3VyZmFjZSgpLiBUaGUgcG9pbnRl
ciB0byB0aGlzCisgICAgICAgICAgIHN1cmZhY2Ugd2lsbCBiZSBsZWFrZWQuIEFuZCB0byBtYWlu
dGFpbiBhIGNvcnJlY3QgbGlmZSBjeWNsZSBmb3IgdGhlIAorICAgICAgICAgICBzdXJmYWNlIGRh
dGEgd2hpY2ggaXMgb3duZWQgYnkgdGhlIGJhY2tlbmQsIHRoZSBJbWFnZUJ1ZmZlciBpdHNlbGYK
KyAgICAgICAgICAgd2lsbCBiZSByZWYoKSB3aGVuIHRoZSBzdXJmYWNlIFJlZlB0ciBpcyBjcmVh
dGVkIGFuZCB3aWxsIGJlIGRlcmVmKCkKKyAgICAgICAgICAgd2hlbiB0aGUgc3VyZmFjZSByYXcg
cG9pbnRlciBpcyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0
RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL3djL1dDU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXQ1NjZW5lOjp1cGRhdGUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Yml0
bWFwSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NhaXJvL1dL
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKToKKyAg
ICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKToK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0Nv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNv
bnRleHREYXRhOjpzZXRJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Ynl0ZXNQ
ZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmlzQmFja2Vk
QnlTaGFyZWRNZW1vcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0
YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW1hZ2U6OldlYkltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6cGFyYW1ldGVycyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkltYWdlOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlQ2Fp
cm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2ViSW1hZ2UpOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJJbWFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Yml0
bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQZXJzaXN0ZW50Q2Fp
cm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoK
KyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25h
cHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoLVtXS1RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3Jl
ZW5zaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmg6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmc6OmJpdG1hcCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3Jl
YXRlQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgor
ICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9uczp3aWR0aDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZv
clJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1No
YXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJl
YWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNl
VG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnREcmFnSW1h
Z2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2Vi
UG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRVcFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwbGF5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVh
dGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hv
dEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEJvdHRvbU92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmlu
Z0Zvcik6CisKIDIwMjItMDQtMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgSEFSREVOSU5HOiBBZGQgTUVTU0FHRV9DSEVDSyBpbiBzb21lIENhcHRpdmUg
UG9ydGFsIGNhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCmlu
ZGV4IDBiNGI1NTZkOTcxNGUwYmMyYTU2ZTA5YzBiODI5Nzc2ZmY1MDllNjcuLmQ3OTFjNDNkYTdi
NzllNzk4YmJjMTFjZDgzODBhZTgxZDJjNTczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4KQEAgLTgxLDcgKzgxLDggQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBz
bmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2UKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
ICpmcmFtZS5kb2N1bWVudCgpOworICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwogCiAgICAg
RnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBG
cmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMuZmxhZ3MuY29udGFp
bnMoU25hcHNob3RGbGFnczo6RXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZykpCkBAIC0xMTQs
OSArMTE1LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xp
cChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYgKG9wdGlvbnMuZmxh
Z3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6UGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3Rvcikp
CiAgICAgICAgIHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1
cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xvclNwYWNlLCBvcHRp
b25zLnBpeGVsRm9ybWF0KTsKKyAgICBhdXRvIHB1cnBvc2UgPSBvcHRpb25zLmZsYWdzLmNvbnRh
aW5zKFNuYXBzaG90RmxhZ3M6OlNoYXJlYWJsZSkgPyBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFi
bGVTbmFwc2hvdCA6IFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90OworICAgIGF1dG8gaG9zdFdp
bmRvdyA9IChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpID8gZG9j
dW1lbnQudmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgcHVycG9zZSwg
c2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCwgeyB9
LCB7IGhvc3RXaW5kb3cgfSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOworCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJlY3QueCgpLCAt
aW1hZ2VSZWN0LnkoKSk7CiAKICAgICBpZiAoIWNsaXBSZWN0cy5pc0VtcHR5KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAppbmRleCBlNGI5ZDAwOWM3MjQwZmI1ODdi
NDk3ZmUwM2ZlZjIyYWUzYmM4Yzc5Li5iYjFiYzJmZmQwMjE3NzcxOGE3N2M1NTM0ZTY2YmVkNTUy
MzJlNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC01Miw2
ICs1Miw3IEBAIGVudW0gY2xhc3MgU25hcHNob3RGbGFncyA6IHVpbnQ4X3QgewogICAgIFBhaW50
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA0LAogICAgIFBhaW50RXZlcnl0aGlu
Z0V4Y2x1ZGluZ1NlbGVjdGlvbiA9IDEgPDwgNSwKICAgICBQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yID0gMSA8PCA2LAorICAgIFNoYXJlYWJsZSA9IDEgPDwgNywKIH07CiAKIHN0cnVjdCBT
bmFwc2hvdE9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDFjYWNjOGY2OTQ1NmRlYzI3YzQyM2Yw
YWRkYTgzOWYwNWRlMWVjZjkuLjk4OGQ0MDQ5OThiMWNiNjQ5YzFiMTgwNjRiNTAzNDFlMDQwNGI3
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBhdXRv
IGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNyZWF0aW9uQ29udGV4
dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlQnVmZmVyVHlwZShwYXJhbWV0ZXJzLCBX
VEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7
CisgICAgICAgIHJldHVybiBjcmVhdGU8SW1hZ2VCdWZmZXJUeXBlPihwYXJhbWV0ZXJzLCBXVEZN
b3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUlt
YWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CkBAIC01Myw2ICs1MywxMiBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVy
cywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gY3JlYXRlPEltYWdlQnVmZmVyVHlwZT4ocGFyYW1ldGVy
cywgV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4u
Lik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIApAQCAtMjc4LDYg
KzI4NCwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyNp
ZiBVU0UoQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJm
YWNlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNr
ZW5kQ3JlYXRlZCgpOworICAgICAgICBpZiAoIWJhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgCisgICAgICAgIGF1dG8gc3VyZmFjZSA9IGJhY2tlbmQtPmNyZWF0
ZUNhaXJvU3VyZmFjZSgpOworCisgICAgICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBi
ZWxvdy4KKworICAgICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGRhdGFLZXk7Cisg
ICAgICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmZGF0YUtl
eSwgdGhpcywgW10odm9pZCAqYnVmZmVyKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb25j
cmV0ZUltYWdlQnVmZmVyKj4oYnVmZmVyKS0+ZGVyZWYoKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgcmV0dXJuIHN1cmZhY2U7CisgICAgfQorI2VuZGlmCisKICAgICBib29sIGlzSW5Vc2UoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggOWNiMDc4ZWU5OGU3NTE3M2IzNGQ2N2Q5ZWFiMTVhOWU5ZDIwNmE3
ZS4uMWFjZGU1MTY2ZTYxOGJjYWQ3NTE1YzU5NGJkNzQxZmEzNjRiYTgyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xNTUsNiArMTU1
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBi
b29sLCBib29sKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgPSAwOwogCisjaWYgVVNFKENBSVJPKQorICAgIHZpcnR1YWwgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaAppbmRleCAzMjU4ZjcwY2EzZTgwYTVmYzYxNWZkMTQyNzhmYTQwNmMzODY1YTY0Li5m
MWYxZGQxNjYyNzNhMTk0NzYyMjMxN2RlZDMyM2JjMGM4MGY0YTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsNiArMzYsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCisjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisj
aW5jbHVkZSA8Y2Fpcm8uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKQEAgLTkwLDYgKzk1LDkgQEAgcHVibGljOgogICAgICAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQ7CiAgICAgICAgIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZTsKKworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwpAQCAtMTI4LDYgKzEzNiwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJv
b2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBVU0UoQ0FJUk8pCisgICAg
dmlydHVhbCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSB7IHJl
dHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc0luVXNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29u
dGV4dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNpZiBIQVZFKElPU1VSRkFDRSkKQEAg
LTE4Myw2ICsxOTUsNDUgQEAgcHJvdGVjdGVkOgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJz
OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbG9naWNhbFNpemU7CisgICAgZW5jb2RlciA8PCByZXNvbHV0aW9uU2NhbGU7Cisg
ICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOworICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7Cisg
ICAgZW5jb2RlciA8PCBwdXJwb3NlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9naWNhbFNpemU7CisgICAgZGVjb2RlciA+PiBsb2dpY2Fs
U2l6ZTsKKyAgICBpZiAoIWxvZ2ljYWxTaXplKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gcmVzb2x1dGlvblNjYWxlOworICAgIGRlY29k
ZXIgPj4gcmVzb2x1dGlvblNjYWxlOworICAgIGlmICghcmVzb2x1dGlvblNjYWxlKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlm
ICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIgPj4gcGl4ZWxG
b3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUHVycG9zZT4gcHVycG9zZTsKKyAgICBk
ZWNvZGVyID4+IHB1cnBvc2U7CisgICAgaWYgKCFwdXJwb3NlKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9naWNhbFNpemUsICpyZXNvbHV0aW9uU2Nh
bGUsICpjb2xvclNwYWNlLCAqcGl4ZWxGb3JtYXQsICpwdXJwb3NlIH0gfTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAppbmRleCBhMjE2YjBlZDE1ZjczZTYz
ODE2Y2NjZjBlNjZlNmFkMGE5MDkxZDIwLi40YmJkMTc5NDcyNTNhMTkwYTJlNzU3NTg5MzM1Mjll
NzczNDg5NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVu
ZGVyaW5nTW9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDog
dWludDhfdCB7CiAgICAgQ2FudmFzLAogICAgIERPTSwKICAgICBMYXllckJhY2tpbmcsCisgICAg
U25hcHNob3QsCisgICAgU2hhcmVhYmxlU25hcHNob3QsCiAgICAgTWVkaWFQYWludGluZwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
ZWEwNDlhOTk1MzIxN2M2M2JiZTdkNDEzY2RhN2RhYTk3MjYyMjBmMS4uNjljYjc4NTg4ZGRkZGZh
YTE3NGUxZTkzYzRiZTg4N2QzMTkzYzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC04OSw2ICs4OSwxMSBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZQogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCit7
CisgICAgcmV0dXJuIFJlZlB0ciB7IG1fc3VyZmFjZS5nZXQoKSB9OworfQorCiBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29l
cmNlVG9JbWFnZSgpIGNvbnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGI2YjU2
ZDg2NmJkZjBjZTczNmM3Y2ZlMGIxM2FhYjU1YTI2ZDk4Y2QuLjk5YmJjNWYyNGY2ZDMwYWU2MGZk
MjZkYWY0NjBhNjcxZDE2YWEyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZC5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRl
OwogCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgb3Zl
cnJpZGU7CisKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCAxMjU5OThmZjU1Y2RlMDIzZGQ4NzI5M2UyZWFiMjRmZDY4NGQ3ZGZhLi5k
NWZhMTUzYWMyYWI1ZmUzMjM0N2FkNDIzODc3ZTE1MzNjMDdkMmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9IGltYWdlQnVmZmVy
LT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICBhdXRvIHJlc3VsdFNpemUgPSBwcmVzZXJ2ZVJlc29s
dXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMgPyBiYWNrZW5kU2l6ZSA6IGltYWdlQnVm
ZmVyLT50cnVuY2F0ZWRMb2dpY2FsU2l6ZSgpOwotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFNpemUsIHsgaW1hZ2VCdWZmZXItPmNv
bG9yU3BhY2UoKSB9KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShyZXN1bHRTaXplLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAgICAg
IGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGNvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlCiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKLSAgICAgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGlt
YWdlU2l6ZSksIHsgaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKKyAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlU2l6ZSksIHsgaW1h
Z2VCdWZmZXItPmNvbG9yU3BhY2UoKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3Mvd2MvV0NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mvd2Mv
V0NTY2VuZS5jcHAKaW5kZXggN2UyMjU4MjI0OGI3MjU2ZGZlOTUyNWVkZjc5YjM5MDFiMWFhZWRl
Ni4uN2ExNjY3ZjdhMTIzYjM4NjU5ODIyOTg4Y2NjODExM2FhMGQ1NWVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gV0NTY2VuZTo6dXBkYXRlKFdDVXBh
dGVJbmZvJiYgdXBkYXRlKQogCiAgICAgc3RkOjpvcHRpb25hbDxVcGRhdGVJbmZvPiByZXN1bHQ7
CiAgICAgaWYgKG1fdXNlc09mZnNjcmVlblJlbmRlcmluZykgewotICAgICAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHdpbmRvd1NpemUsIHsgfSk7Cisg
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUod2luZG93U2l6ZSwg
eyB9KTsKICAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHdpbmRvd1NpemUud2lkdGgoKSwgd2lu
ZG93U2l6ZS5oZWlnaHQoKSwgR0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIGJpdG1hcC0+
ZGF0YSgpKTsKICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgICAg
ICBpZiAoYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggZjIxMDk2YWFhY2QwZDlmN2MwMDZlOThmNzMxMWE0NzkyZjA0Yzdh
My4uZDE1MDhkNTJmMDk3Y2M2MTI0ZjljMTI5OTlkZTcwZjcxYTExMzk5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmJpdG1hcEltYWdlRm9yQ3Vy
cmVudFRpbWUKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gaW1h
Z2UtPnNpemUoKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGltYWdlU2l6ZSwgeyBwbGF5ZXItPmNvbG9yU3BhY2UoKSB9KTsKKyAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlU2l6ZSwgeyBwbGF5ZXItPmNvbG9y
U3BhY2UoKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKaW5k
ZXggYzhjYzVhYThmY2I5NDgyMGJkZGQ3OTU2NTMxZjE2ZjIxNDI4NjdjZC4uNTMwMmQ1NjZmODBm
OTNjYWViY2M3MGMwNzBhOTkzMGVkYjIxNTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBAIC0zNiwxNiArMzYsMTYgQEAKIGNh
aXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdlUmVmIGltYWdl
UmVmKQogewogICAgIC8vIFdlIGNhbm5vdCBwYXNzIGEgUmVmUHRyIHRocm91Z2ggdGhlIEFQSSBo
ZXJlLCBzbyB3ZSBqdXN0IGxlYWsgdGhlIHJlZmVyZW5jZS4KLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGltYWdlUmVmKS0+Y3JlYXRlQ2Fpcm9TdXJmYWNl
KCkubGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJm
YWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93
aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsK
ICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwg
V2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0
byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAotICAgIGNhaXJvX3Qq
IGNyID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWly
b190KiBjciA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBj
YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwogICAgIGNhaXJvX3Nl
dF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZjJkMzMzNDc4
YzJhZGI5YTMxNTYwYWZlMmMwYzgwMjQxMzQwYzVhZS4uY2JlOTEyNGY0MzU5YjJlNDhmOGU0YmRh
YmQ4N2YyNDAyYzJiZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDcgKzQxLDEyIEBAIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uo
V0tJbWFnZVJlZiBpbWFnZVJlZikKICAgICBpZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5
KCkubGVha1JlZigpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB3ZWJJbWFnZS0+Y29weU5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
OworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlv
bnMgb3B0aW9ucykKQEAgLTUzLDE0ICs1OCwxMiBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVG
cm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQog
ICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKICAg
ICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2Vi
S2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAo
IWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7Ci0gICAgCi0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwor
CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyUmVjdChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsK
ICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCAwNDAzNjIwMDBm
NWYzNWQ0Y2I1NjcyZjVjN2Y3NmFhYTE4MjE3NjA1Li5mZTkxNWQxNzg3MDFjOTRiN2Y0ZTZjY2U1
YjZmNWI1ODNiMTlkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcApAQCAtODIsNyArODIsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRh
OjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9j
YQogdm9pZCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpzZXRJbWFnZShXZWJDb3JlOjpJbWFnZSog
aW1hZ2UpCiB7CiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5kaW5nIHN0cmF0ZWd5
IGZvciBTaGFyZWFibGVCaXRtYXAuCi0gICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCB7IH0pOworICAg
IG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFn
ZS0+c2l6ZSgpKSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IG1fY29udHJvbGxl
ZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCmluZGV4IDRhYTNlNWQ4OTJhODgzZDA3YzhmODUzODM2OTgwOWRhNzBiZmZjOWMu
LmIzMjM3OGQ3MTU2NmZlYzM2NTkwMmUxYmVmOThmNDk4M2IyNmVkNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAg
ICAgYXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRh
KG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCAyZWE0MzY5ODI1Yjc3
MmU4MTBkMjAwNTAzODJlZTgwM2VjY2U4MGM5Li5mNDVkZmUzNGQxMTdkMTRjMTZjMmEwMDM3YTIy
YmYxNjBjZTg2MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5k
U2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVC
YWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTk9URTog
VGhlc2UgYWxsIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRp
dmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJD
b3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IDI3ZTgyMGUyM2NmODhhMWJmNThhZjk4ZmM1YzBmYzJh
ODVkZWY4MzMuLmU0ZGVhZDVmODkzOGNlMTZjNjhjY2MwZTJkMjA5Y2Y1M2Q4MDI2ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSwyMCArOTksNiBAQCBib29s
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29uZmlndXJhdGlvbgogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pCi17Ci0gICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwot
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29uZmlndXJhdGlvbik7
Ci0gICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICB2b2lkKiBkYXRhID0gMDsKLSAgICBkYXRhID0gU2hhcmVhYmxlQml0bWFwTWFs
bG9jOjp0cnlNYWxsb2MobnVtQnl0ZXMpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwg
Y29uZmlndXJhdGlvbiwgZGF0YSkpOwotfQotCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pOwogICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgY29u
ZmlndXJhdGlvbik7CkBAIC0xMjMsMTMgKzEwOSwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBD
bwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24s
IHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFw
KHNpemUsIGNvbmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKIHsKLSAgICBBU1NFUlQo
c2hhcmVkTWVtb3J5KTsKLQogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KTsKICAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRp
b24pOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCkBAIC0xMzksNyArMTIzLDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNv
bmZpZ3VyYXRpb24sIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkp
OwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShj
b25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24p
CkBAIC0xNDgsMTMgKzEzMiwxMSBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtbwogICAgIGlmICgh
c2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVh
dGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fY29uZmlndXJhdGlvbiwgV1RGTW92ZShzaGFyZWRN
ZW1vcnkpKTsKKyAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2NvbmZp
Z3VyYXRpb24sIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQmFja2VkQnlTaGFy
ZWRNZW1vcnkoKSk7Ci0KICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFu
ZGxlLm1faGFuZGxlLCBwcm90ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGhh
bmRsZS5tX3NpemUgPSBtX3NpemU7CkBAIC0xNjIsMzQgKzE0NCwxNiBAQCBib29sIFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24gcHJvdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJl
YWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24sIHZvaWQqIGRhdGEpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fY29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKQotICAgICwgbV9kYXRhKGRhdGEpCi17Ci19Ci0KLVNoYXJlYWJsZUJp
dG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorU2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAg
ICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCi0g
ICAgLCBtX3NoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkpCi0gICAgLCBtX2RhdGEobnVsbHB0cikK
KyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKIHsKIH0KIAotU2hh
cmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKLXsKLSAgICBpZiAoIWlzQmFja2VkQnlT
aGFyZWRNZW1vcnkoKSkKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwTWFsbG9jOjpmcmVlKG1fZGF0
YSk7Ci19Ci0KIHZvaWQqIFNoYXJlYWJsZUJpdG1hcDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5
LT5kYXRhKCk7Ci0KLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICByZXR1cm4gbV9kYXRhOworICAg
IHJldHVybiBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwogfQogCiBDaGVja2VkVWludDMyIFNoYXJl
YWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA0YTA3NDAwMTczNWRmODY0ZjRmNGJlMWY5
ZTc2NTUyNDAzZWMzZjU0Li45NmExYzc4MmYxNThlNGFkYzkxMjU4ODA0MzkxYzJlN2FlZGYyMjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDE0ICs3OSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENoZWNrZWRVaW50MzIgY2FsY3VsYXRlQnl0ZXNQZXJS
b3coV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYpOwogICAgIHN0YXRpYyBD
aGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYp
OwogCi0gICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQg
bWVtb3J5LgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwotCiAgICAgLy8gQ3JlYXRlIGEgc2hh
cmVhYmxlIGJpdG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5v
dGhlciBwcm9jZXNzLgotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOworICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIENvbmZpZ3VyYXRpb24pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBm
cm9tIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJh
dGlvbiwgUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUg
Yml0bWFwIGZyb20gYSBoYW5kbGUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNyZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC05NCwxMSArOTEsMTIgQEAgcHVibGlj
OgogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUm
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkgY29uc3Q7CiAKLSAgICB+U2hhcmVhYmxlQml0bWFwKCk7Ci0KICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KFdl
YkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KIAorICAgIHZvaWQqIGRhdGEoKSBjb25zdDsK
KyAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1Bl
clJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KKwogICAgIC8vIENyZWF0ZSBhIGdyYXBo
aWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0
b3JlLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCkBAIC0xMDYsOCArMTA0LDYgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UpOwogICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc291cmNlKTsKIAotICAgIGJvb2wgaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkTWVtb3J5OyB9Ci0KICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBiaXRtYXAg
aW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAg
ICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250
ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlPiBjcmVhdGVJbWFnZSgpOwpAQCAtMTI0LDE0ICsxMjAsMTQgQEAgcHVibGlj
OgogI2VsaWYgVVNFKENBSVJPKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRo
YXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRo
aXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2Yg
dGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgorICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGNyZWF0ZVBlcnNpc3RlbnRDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKIAogICAgIFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIHsgcmV0dXJuIGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKLSAgICBTaGFyZWFibGVCaXRt
YXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENv
bmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAjaWYgVVNFKENHKQogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25z
dDsKQEAgLTE0MywxMSArMTM5LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWxlYXNl
U3VyZmFjZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXApOwogI2VuZGlmCiAKLXB1YmxpYzoKLSAg
ICB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3QgeyBy
ZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9Ci0g
ICAgCi1wcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51
bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KIAogICAgIFdlYkNvcmU6
OkludFNpemUgbV9zaXplOwpAQCAtMTU3LDExICsxNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9yZWxlYXNlQml0bWFwQ29udGV4dERhdGFDYWxsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAg
ICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwg
dGhpcyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgotICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwotCi0gICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBiaXRt
YXAgaXMgYmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBk
YXRhLgotICAgIHZvaWQqIG1fZGF0YSB7IG51bGxwdHIgfTsKKyAgICBSZWY8U2hhcmVkTWVtb3J5
PiBtX3NoYXJlZE1lbW9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVXNlckRhdGEuY3BwCmluZGV4IGUxOTQwNzM3Mjg2ODUyZDAyM2FhOWFhMTkxNGFjZDAwZDMy
NjFhNzUuLjdmZmE5ZGFmMjc0MTVhNzI2Y2U0NGE5ZDM0NmU1ZDU2NzIwMzRmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjExLDkgKzIxMSw4IEBAIHZvaWQgVXNlckRhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFQSTo6T2JqZWN0JiBvYmplY3QpCiAgICAg
Y2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6SW1hZ2U6IHsKICAgICAgICAgYXV0byYgaW1hZ2UgPSBz
dGF0aWNfY2FzdDxjb25zdCBXZWJJbWFnZSY+KG9iamVjdCk7CiAKLSAgICAgICAgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCkuaXNC
YWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5pc0Jh
Y2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5k
bGUpKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gaW1hZ2UuY3JlYXRlSGFuZGxlKCk7CisgICAg
ICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFsc2Ug
aW5kaWNhdGVzIG5vIGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KICAgICAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMSw2ICsy
MjAsNyBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogCiAgICAgICAgIC8vIEluaXRpYWwgdHJ1ZSBpbmRpY2F0
ZXMgYSBiaXRtYXAgd2FzIGFsbG9jYXRlZCBhbmQgaXMgc2hhcmVhYmxlLgogICAgICAgICBlbmNv
ZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgaW1hZ2UucGFyYW1ldGVycygpOwogICAg
ICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzkwLDE1
ICszOTAsMTYgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRpZEVuY29kZSkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycz4gcGFyYW10ZXJz
OworICAgICAgICBkZWNvZGVyID4+IHBhcmFtdGVyczsKKyAgICAgICAgaWYgKCFwYXJhbXRlcnMp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwotICAgICAgICBpZiAoIWJpdG1hcCkKKyAgICAg
ICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVz
dWx0ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IHJlc3VsdCA9IFdlYkltYWdlOjpjcmVhdGUoKnBhcmFtdGVycywgV1RGTW92ZShoYW5kbGUpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmNzQ4YmRmMzczNjE4MDgzZWFkYzk1YmY4YTZiYjMy
YjYzN2IwYmFkLi42YWEwZWM4NGZhNjE0MWVlOTg1Y2NjZWEyMzE0NDk3NmRmMTA5NmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEw
MTcsNyArMTAxNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAKIHN0YXRpYyB2b2lkIGVu
Y29kZUltYWdlKEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZS5zaXplKCkp
LCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCAyZWZlMjYwNzI3N2E0YjhhZGYyZjgwNzcwN2ZkNzczMWVkMjJlNTc0Li5i
NzQ4YWFiMDAwY2IyYTNlZjA3ZWZjNjFkZmZmYzNmNWVjNzA4OGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3Miw2ICs4NzIsOCBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U+IHsK
ICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLAogICAgICAgICBXZWJD
b3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00sCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U6OkxheWVyQmFja2luZywKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6
U25hcHNob3QsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNu
YXBzaG90LAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5n
CiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKaW5kZXggOTljOTUzY2ZjMjI4
MmU3YWU3ZTM1YjM1ZGIwYzFlNDE4NTIyYzA1OC4uZjk5ZTk4OWYyOTQxN2U2YzBiZWRlYjU4ODk4
YmIxOGQ4YjdjYzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NSArMjYsMTIw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAorI2luY2x1
ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ2hyb21lQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVy
Lmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJl
ZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBJbWFn
ZU9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShzaXplLCBvcHRpb25zLCB7IH0pOwotfQorICAgIC8vIENyZWF0
ZSBzaGFyZWFibGUgUmVtb3RlSW1hZ2VCdWZmZXIgaWYgR1BVIFByb2Nlc3MgaXMgZW5hYmxlZC4K
KyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGF1dG8gcHVycG9zZSA9IChvcHRpb25zICYgSW1h
Z2VPcHRpb25zU2hhcmVhYmxlKSA/IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90
IDogUmVuZGVyaW5nUHVycG9zZTo6U25hcHNob3Q7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY2xp
ZW50LT5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCBwdXJwb3NlLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBp
ZiAoYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOworICAgIH0KIAotUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGJpdG1hcENvbmZpZ3VyYXRpb24p
Ci17CisgICAgLy8gQ3JlYXRlIHNoYXJlYWJsZSBDb25jcmV0ZUltYWdlQnVmZmVyLgogICAgIGlm
IChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJh
dGlvbik7Ci0gICAgICAgIGlmICghYml0bWFwKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbmNy
ZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRl
KHNpemUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9z
ZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7CisgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJp
dG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUo
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICgh
Yml0bWFwKQorCisgICAgLy8gQ3JlYXRlIGxvY2FsIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisgICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6
OlNuYXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICgh
YnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNy
ZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4gV2Vi
SW1hZ2U6OmNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8gYmFj
a2VuZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgCisgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3Zl
KGJhY2tlbmQpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQog
Ci1SZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBi
aXRtYXApCitSZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJp
dG1hcCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZl
cikpKTsKIH0KIAotV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0
bWFwKQotICAgIDogbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQorV2ViSW1hZ2U6OldlYkltYWdl
KFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiB9CiAKLVdlYkltYWdlOjp+V2ViSW1hZ2UoKQorSW50U2l6ZSBXZWJJbWFnZTo6c2l6
ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwogfQogCi1j
b25zdCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0Citjb25zdCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OlBhcmFtZXRlcnMmIFdlYkltYWdlOjpwYXJhbWV0ZXJzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9iaXRtYXAtPnNpemUoKTsKKyAgICByZXR1cm4gbV9idWZmZXItPnBhcmFtZXRlcnMo
KTsKK30KKworR3JhcGhpY3NDb250ZXh0JiBXZWJJbWFnZTo6Y29udGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYnVmZmVyLT5jb250ZXh0KCk7Cit9CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXItPmNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZp
b3IpOworfQorCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0bWFwKCkgY29u
c3QKK3sKKyAgICBhdXRvKiBiYWNrZW5kID0gbV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0X2Nhc3Q8SW1hZ2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7
CisgICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOworfQorCisjaWYgVVNF
KENBSVJPKQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gV2ViSW1hZ2U6OmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKK30K
KyNlbmRpZgorCitTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIGF1dG8q
IGJhY2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJh
Y2tlbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjb25zdF9jYXN0PEltYWdlQnVmZmVy
Jj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisKKyAgICBhdXRvKiBz
aGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIGJhY2tlbmRIYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9uKTsK
KworICAgIGlmIChhdXRvIGhhbmRsZSA9IHN0ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlPigmYmFja2VuZEhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUpOwor
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViSW1hZ2UuaAppbmRleCAyMmYzODZmOWQyOWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1
Li45N2U3OWJlZjJhM2JiNTM2Y2Y1YmNhODUzYzZlMDA4MDgwNmYxMGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDsKK2NsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5h
dGl2ZUltYWdlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25z
KTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
Jik7Ci0gICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+
JiYpOwotICAgIH5XZWJJbWFnZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJJ
bWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpOworICAgIHN0YXRpYyBSZWY8V2ViSW1hZ2U+
IGNyZWF0ZShSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgU2hhcmVhYmxlQml0
bWFwJiBiaXRtYXAoKSB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcCYgYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAg
ICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdDsKKworICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OworCisgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCgpIGNvbnN0OworI2lmIFVTRShDQUlSTykKKyAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNlbmRpZgorCisgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgY3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
biA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAgICBXZWJJbWFnZShS
ZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogCi0gICAgUmVmPFNoYXJlYWJsZUJpdG1hcD4g
bV9iaXRtYXA7CisgICAgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fp
cm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDk3YjVlNjNmMTVhODMxZmU0ZWUwNWEx
YWViMzI4N2NjMGJkNzE5ZjkuLmU5NmRhOTEzOGQxYjJkODk2ZDA5MDA4YTNjYjNiNzM2Mzc0YTM2
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1h
cENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAg
ICAgQ2Fpcm86OmRyYXdTdXJmYWNlKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpLCBzdGF0ZS5hbHBoYSgpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAorUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQZXJzaXN0ZW50Q2Fp
cm9TdXJmYWNlKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEoKSwg
bV9zaXplKTsKK30KKwogUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVDYWlyb1N1cmZhY2UoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdl
ID0gY3JlYXRlU3VyZmFjZUZyb21EYXRhKGRhdGEoKSwgbV9zaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IGJmM2RkMDYwM2Y1Zjdi
MjhkYzE0YTE3MjRkODAwMzFhMWVmYWIzZDkuLjA0NWRlYmI4MTFkZDM4NTMxNzY3NzI0YTQ0ZjUx
NmE5ZDUwOWYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBz
dGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2UpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCB7IH0pOworICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
LT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCBlZDlhOTYwZjVhOGRlNmJiY2RmMzBmZTg5ZTFhMWYwYzQx
MWE5MTNmLi40ODQyMzkxNjViNmRkNTM1MjkwNmU3NzQxZDE3ZmQ1MDhiNDY1YmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtNDM4MCw3ICs0MzgwLDcgQEAgdm9pZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIHVpbnQ2NF90IGNhbGxiYWNrSUQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJJ
bWFnZS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpLCByZWludGVycHJl
dF9jYXN0PEdEZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKKyAgICBnX3Rh
c2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oY2Fpcm9fc3Vy
ZmFjZV9kZXN0cm95KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgd2ViS2l0U25hcHNo
b3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMoV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDIwNzM5ZTVhZGIwYjc3YWZlYjMxMDU4MWViOTZkN2UzYTc4MDJiNzAuLjJiMThl
OTkyNzRkMzI3OGNjYzIyODYxNTYyNWIzM2ViYzVkYWExNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMDcsNyArMzA3
LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBsYXRm
b3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICoKICAgICByZXN1bHRSZWN0LnNldExvY2F0aW9u
KHsgfSk7CiAKICAgICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRt
YXBDb25maWd1cmF0aW9uOwotICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlv
bik7CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHJl
c3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKICAgICBpZiAoIWJpdG1hcCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDMzZDA5ZGZjMjhiYjQ2ZjI4ZGNhNDYyYzFhNTU2OGQ3Yzg4ZGZjNzEu
LmFmY2Q1ZDViNDdmZjlhNDczZDY3NTY2NjczYzkzOTU3OGFhMTU0OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjkwMCwxNCArNjkwMCwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCB1aW50MzJfdCBtYXRjaENvdQogICAgIG1fZmluZENsaWVudC0+ZGlkQ291bnRTdHJpbmdNYXRj
aGVzKHRoaXMsIHN0cmluZywgbWF0Y2hDb3VudCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29u
dGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQordm9pZCBXZWJQYWdlUHJveHk6
OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYgcGFyYW1ldGVycywgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFu
ZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29udGVudEltYWdlSGFuZGxlKTsKLSAgICBpZiAoIWJpdG1hcCkgewor
ICAgIGF1dG8gaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIFdURk1vdmUoY29u
dGVudEltYWdlSGFuZGxlKSk7CisgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2ZpbmRNYXRjaGVzQ2xp
ZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIFdlYkltYWdlOjpjcmVhdGUoYml0
bWFwLnJlbGVhc2VOb25OdWxsKCkpLnB0cigpLCBtYXRjaEluZGV4KTsKKyAgICBtX2ZpbmRNYXRj
aGVzQ2xpZW50LT5kaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KHRoaXMsIGltYWdlLmdldCgpLCBt
YXRjaEluZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRJbmRpY2F0b3IoY29u
c3QgVGV4dEluZGljYXRvckRhdGEmIGluZGljYXRvckRhdGEsIHVpbnQ2NF90IGxpZmV0aW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjOTM1Mzk5NzYzYjAyNWU0
MmVkNzQxZDdhZWE4NDNmYTRkM2NhMTNmLi4zMGM1NjVjMmZhNzZjYmI4MDNiY2Q1MDYwZGI4YWI4
M2YxOGQ1N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIy
Miw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50
MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1hdGNo
SW5kZXgpOwogICAgIHZvaWQgaW5kaWNhdGVGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsK
LSAgICB2b2lkIGRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpOworICAgIHZv
aWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzJiwgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFu
ZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2
b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggZTI3NmQzZTJmNzY0MDk4NmMzOGZlYzQ5ZDNkYzk5YjFiYWVkYWZhMC4uNDU1NjRk
YjkzZGI4OTMxMWVlYjgzZjhiNTRmMzMwNjVmOTIyYjk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQyLDcgKzI0Miw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkRmluZFN0cmluZyhTdHJpbmcgc3Ry
aW5nLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbWF0Y2hSZWN0LCB1aW50MzJfdCBtYXRjaENv
dW50LCBpbnQzMl90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCkKICAgICBEaWRGYWls
VG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCiAgICAgRGlkRmluZFN0cmluZ01hdGNoZXMoU3Ry
aW5nIHN0cmluZywgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4gbWF0Y2hlcywgaW50
MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCi0gICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0
Y2goV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVp
bnQzMl90IG1hdGNoSW5kZXgpCisgICAgRGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc3RydWN0IFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0
Y2hJbmRleCkKIAogICAgICMgUG9wdXBNZW51IG1lc3NhZ2VzCiAgICAgU2hvd1BvcHVwTWVudShX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIFZlY3RvcjxXZWJL
aXQ6OldlYlBvcHVwSXRlbT4gaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgc3RydWN0IFdl
YktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA3MjA3NWZiYzg2MmMzNGQw
Yzg2YjRhYzUzOGU0YzQ2Njk5Y2JlZTQyLi5kZmE2NjM2Nzg4ZTk5NTlhYTM0NmE4YmY3NTUxOTY0
MDFjYzYyNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRG
aW5kZXJDbGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjk0LDExICsyOTQsMTUgQEAgLSAodm9pZClkaWRHZXRJbWFnZUZvck1h
dGNoUmVzdWx0OihXZWJLaXQ6OldlYkltYWdlICopaW1hZ2UKICAgICBpZiAoX2ltYWdlUmVwbHlD
YWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpJbnRT
aXplIHNpemUgPSBpbWFnZS0+Yml0bWFwKCkuc2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGltYWdl
LT5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8gX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkp
OworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdlKFdl
YkNvcmU6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlQ2FsbGJhY2sgPSBfaW1hZ2VSZXBseUNhbGxi
YWNrcy50YWtlRmlyc3QoKTsKLSAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkg
c2l6ZTpzaXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
IHNpemU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUZXh0RmluZGVyTWF0
Y2ggY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDdhYjY3
YTM0MzdhMjhhMTliZDY2ZTQ1NTdjM2I0NzQ1NmMxZTIxMTUuLjQ5ZGFjZDYzYjVlYjdlMDFmY2Ez
NzU4MDUzOGZlNGQyZWI2N2IyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtl
U2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHMKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAg
aGFuZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VT
Y3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAppbmRleCBiZjhhNDcwMzg1ZmNhNzQwZDQ0Mzc1NmVh
YTdmNGQ3ZmM3OWQyNjU2Li42ZWM1NjhkMDZkYjI4ZWQ0MDYzMWUyNzUwMmE1MDBhZDI4N2QxNDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDx2YXJp
YW50PgpAQCAtNDUsNSArNDMsMyBAQCB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBz
dGQ6OnZhcmlhbnQ8CiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nLmgKaW5kZXggNTgwMjI4YWY4NWY3NTNlNThiZGY1ZWZjMWQwN2QxYTZhZjAzNjNmYi4uY2Qy
ZTllM2UxNGI5ODEwNjRlNWI4OTAzZWI0OWZkMWZkODkyZjZmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAK
QEAgLTM0LDcgKzMyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
U2hhcmluZyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
biA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUmJikgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc0JhY2tlbmRIYW5kbGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTIsNSArNTEsMyBAQCBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JVRkZFUl9CQUNLRU5EX1NI
QVJJTkcoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLCBpc0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApp
bmRleCBhMTE3MDcyNDkwZTVjN2E3OTU0ZmJiZTc4ZjcwZjc5MzZlZGMyZWQxLi43YWUxNWEwZmUw
NzBjODMxMGU1N2VmYzgzZWYwYmUzMzc1NTEwN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oIgogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BpeGVsQnVmZmVyLmg+CkBAIC04NSw3ICs4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFjCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9u
KHBhcmFtZXRlcnMpKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTkzLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJp
dG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgYml0bWFwLnJlbGVhc2VOb25O
dWxsKCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlKQpAQCAtMTExLDEwICsxMDksMTAgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWMKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihwYXJh
bWV0ZXJzLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywg
Yml0bWFwLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29udGV4dCkpOwogfQogCi1JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQor
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmPFNoYXJlYWJsZUJp
dG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4
dCkKICAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKHBhcmFtZXRlcnMpCiAgICAgLCBt
X2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKQEAgLTEyNiwxMCArMTI0LDEwIEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAgICAgbV9j
b250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAot
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAogewogICAgIFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSk7CisgICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIHByb3RlY3Rpb24pOwogICAg
IHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIApA
QCAtMTQzLDYgKzE0MSwxMyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gbV9iaXRtYXAtPmJ5dGVzUGVy
Um93KCk7CiB9CiAKKyNpZiBVU0UoQ0FJUk8pCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCit7Cisg
ICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVQZXJzaXN0ZW50Q2Fpcm9TdXJmYWNlKCk7Cit9Cisj
ZW5kaWYKKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkp
OwpAQCAtMTY0LDUgKzE2OSwzIEBAIHZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMjFkZDBkODc1
MGFkZTMzMjY3ZDA4ZTg4MDcxZDVkNWNkMzMwODRiZi4uZjU5ODIyNTdiYmExODE4OTYxODgzYmZi
MjA4Y2Y4YzVhMjYyY2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CkBAIC00Myw2ICs0MSw3IEBAIGNs
YXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCwg
cHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCiBw
dWJsaWM6CiAgICAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50U2l6ZSBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwpAQCAtNTIsMTIgKzUx
LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKIAotICAgIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7
CisgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
LCBSZWY8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0PiYmKTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KLSAgICAKICAgICBXZWJDb3JlOjpJ
bnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKworICAgIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2JpdG1hcC5wdHIoKTsgfQorI2lmIFVTRShDQUlSTykKKyAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkg
PSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24g
PSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTY2LDE2
ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpQaXhlbEJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkgZmluYWw7CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNv
bnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSYpIHsgfQorCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRT
aGFyaW5nKiB0b0JhY2tlbmRTaGFyaW5nKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQogICAgIHZv
aWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpIGZpbmFsIHsgLyogRG8gbm90aGluZy4gVGhpcyBp
cyBvbmx5IHJlbGV2YW50IGZvciBJT1N1cmZhY2UgYmFja2VuZHMgKi8gfQogCi0gICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgUmVmPFNoYXJlYWJsZUJpdG1hcD4gbV9i
aXRtYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gbV9j
b250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggMjVi
NWE0NTU4MjUwZWUwNjA1NmM4NDNhMTdjMTM4MTk2MTY5ZjNhNy4uMTZmYTZiMmEwMGFiOTFjODE4
OTZhNDdkY2Y1OGFiYzVkNDcxNzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZShOYXRpdgogewogICAgIGF1
dG8gaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZS5zaXplKCksIHsgaW1hZ2UuY29sb3JTcGFj
ZSgpIH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2Uu
c2l6ZSgpLCB7IGltYWdlLmNvbG9yU3BhY2UoKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0MDExY2E4ZWE5OTNmM2VmYTQ3ZmJl
OGJlNjY1Yzc5OWEyNzlmOThhLi5lYWU2Zjc5NWVkM2Y5MjQ2NDJjNGQ4NDliOWE5OGE5YTc2OTc1
NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJh
YwogICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZD4ocGFyYW1ldGVycywgV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhh
bmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbikgY29uc3QKIHsKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRS
aWdodD4obV9oYW5kbGUpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQuaAppbmRleCAwOTQxYmZkYTdlZTA1OGM5OGYwMzUyMmQzYWU3M2M5NTc0YWM5OTI4Li4yMGQ4
YzYwZTExMzU2ZThiMmUwN2Q1ODliMGQzOTZmMmYyNDEyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlID0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7
CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsK
LSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0
IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
NDMyOWExYzkxNzEzNDk0NzE5YzJiYWE2YmUxNjRlMDU3ZjZiODE2MC4uYWVkZTdiZWE4MmE4MGUw
MDY3N2U1NzY5Y2Q2NTk2NGY5YjQ2ZDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcApA
QCAtNzMsNyArNzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZQogICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4ocGFyYW1l
dGVycywgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZShtX3N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5oCmluZGV4IGJkYmNkOThmMzdlYTk0OThkMDc0YWY4NjcwODc0YjgxODFjMjQ4ODguLmIxNDQy
NmU3ZjQyZDdkYTUwNWJmZmFmYWYxNGExNzNhZjIxMGQ2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVu
dGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKTsKIAotICAgIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0IGZp
bmFsOwogCiBwcml2YXRlOgogICAgIC8vIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQppbmRleCAyODFkODY3ZDEyNjQ2MmVlNmExYmQ2ZTI3MmZjMjBiMjZiZDUwOWUwLi4wMjFkNzBm
ZjNhMDNiNDZkN2VkNzU2OTA2MzU0YzBmYWI1YzcyYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDE0ICs2OSwx
OCBAQCAtIChDb2NvYUltYWdlICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90
T3B0aW9ucylvcHRpb25zIHdpZHRoOihOU051bQogICAgIGlmICh3aWR0aCkKICAgICAgICAgb3B0
aW9uYWxXaWR0aCA9IHdpZHRoLmZsb2F0VmFsdWU7CiAKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJJ
bWFnZT4gaW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShXZWJLaXQ6OnRvU25hcHNo
b3RPcHRpb25zKG9wdGlvbnMpLCBvcHRpb25zICYga1dLU25hcHNob3RPcHRpb25zRXhjbHVkZU92
ZXJmbG93LCBvcHRpb25hbFdpZHRoKTsKKyAgICBhdXRvIGltYWdlID0gX25vZGVIYW5kbGUtPnJl
bmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAm
IGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZS0+Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsK
KyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCiAjaWYgVVNFKEFQ
UEtJVCkKLSAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTppbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2UoKS5nZXQoKSBzaXplOk5TWmVyb1NpemVdKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9T
aXplXSkuYXV0b3JlbGVhc2UoKTsKICNlbHNlCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdl
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0
KCldKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10g
aW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcAppbmRleCA3NWVmN2MyZjVjMjJmNjA4MTFiODA3M2FjZDczNjYxMzFiNjdm
MmVkLi5hNGE4ZWEwMTNhNWUzNWYwNmNjYmJmNmZiYzljYjA3OTg2NDAwOWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcxLDE0ICsxNzEs
MTIgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJh
bWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3Qt
PmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250
ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQg
PSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5h
cHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5j
bGVhclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGdy
YXBoaWNzQ29udGV4dC5zY2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgRnJhbWVWaWV3
OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJ
bmNsdWRlU2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZykKQEAgLTE5Miw3ICsxOTAsNyBAQCBzdGF0aWMgUmVmUHRy
PFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJl
Y3QmIHBhaW50aQogCiAgICAgYXV0byBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWlu
dEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZp
b3IpOwotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0Nv
bnRleHQuZ2V0KCksIHBhaW50aW5nUmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmll
dzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9y
U25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LCBwYWludGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0
aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAgIGZyYW1lVmlldy0+c2V0
UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDk3
NTI5ZmMxYWMzOTIyOTM1ZDk5NWMyZmM1Y2FkOTRiMWJiNjUyZjIuLmFiNmIyNmM5M2Q1M2VlZjJm
ZjFjYjY1ODBhMzNkYTg4YjczNjNhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOSwyMCArMTM5LDE3IEBAIFJlZlB0cjxX
ZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hv
dE9wdGlvbnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0
LnNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAg
IGF1dG8gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkKKyAgICBhdXRvIHNu
YXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCBzbmFwc2hvdE9wdGlv
bnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zIHwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlKSk7Cisg
ICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IGJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0g
ICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Z3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgYXV0byYgZ3JhcGhpY3ND
b250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUo
c2NhbGVGYWN0b3IpOwogCiAgICAgcGFpbnRSZWN0Lm1vdmUoZnJhbWVWaWV3LT5mcmFtZVJlY3Qo
KS54KCksIGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueSgpKTsKICAgICBwYWludFJlY3QubW92ZUJ5
KC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJh
bnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAg
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlv
cjsKQEAgLTE2NSwxMiArMTYyLDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZnJh
bWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXQoKTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwg
cGFpbnRSZWN0KTsKKyAgICBmcmFtZVZpZXctPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRS
ZWN0KTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7
CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CiAK
LSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiYWNraW5nU3RvcmUucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6dGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IGRmOGU1NWRmMWYwYWU4MzYwM2ZhOGRkM2E5MWEwZWZhZDM4NWFiN2Uu
LmJkMjYwZjkzZmJiZmFiZjA2ZDYyNmEwNzI3Yjc0ZGY2OTdlYjkyYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MywxMyArMTczLDEyIEBAIFJlZlB0
cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjppbWFnZSgpIGNvbnN0CiAg
ICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFn
ZSk7CiAgICAgSW50U2l6ZSBzaXplKGJpdG1hcEltYWdlLnNpemUoKSk7CiAgICAgYXV0byB3ZWJJ
bWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoc2l6ZSwgc3RhdGljX2Nhc3Q8SW1hZ2VPcHRpb25zPigw
KSk7Ci0KLSAgICAvLyBGSVhNRTogbmVlZCB0byBoYW5kbGUgRVhJRiByb3RhdGlvbi4KLSAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICBpZiAoIXdlYkltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdl
KGJpdG1hcEltYWdlLCB7eyB9LCBzaXplfSk7CisgICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxl
IEVYSUYgcm90YXRpb24uCisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNv
bnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGJpdG1hcEltYWdlLCB7IHsg
fSwgc2l6ZSB9KTsKIAogICAgIHJldHVybiB3ZWJJbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDBhZmMwMTcyYzli
M2M4ZTI3OTY1ODU5ODNjNTU1Y2ZiMjJhZWM5YmIuLmIxNTc5YTIwZDRkOGZkMjJiNWU4MDE4NmFi
YjE5OTM1NGIyNGQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVT
aXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZh
Y3Rvcik7CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cAppbmRleCAxMjAyNjNkNjVkNjFmNTkxZTVmMWY2N2ZkNGZlOGJmNTNlZmZjMzMwLi44MzFmMThi
NDY0MGU1ODBiMzdhNDE1OTI1MDVmZWZhZGEwMGE5Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxl
Qml0bWFwVXRpbGl0aWVzLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBDcmVh
dGVTaAogICAgICAgICBpZiAoIXNuYXBzaG90SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoc25hcHNob3RSZWN0LnNpemUoKSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0p
OworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90
UmVjdC5zaXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKICAgICAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC04Myw3ICs4Myw3IEBA
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFn
ZSYgcmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgp
IHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDEgfHwgaW1hZ2VTaXplLmhlaWdodCgpIDw9IDEpCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IFdURk1vdmUoY29sb3JTcGFjZUZv
ckJpdG1hcCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaW1hZ2VTaXplLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgICAg
IGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTE0LDcgKzExNCw3
IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJ
bWFnZSYgcmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkg
c2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4K
LSAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsK
KyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUo
Yml0bWFwU2l6ZSksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKICAgICBpZiAo
IXNoYXJlZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCBkMzFmNDI1YjhkMTNkODdlMWJhNGQxNjQ0MTRhYzEyNWE0NjNhNjBmLi4zNmMwZTcw
ODM2YjJhMzExMTg1NmE0YjI2MDkwYzVmYWY0OWM4NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZpbmRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIkhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCkBAIC02
Nyw2ICs2OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JDaG9vc2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50UnVsZUxpc3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggNWU1
Y2VmZjcwMWM5ZTRhZTFkOGJlM2U1ODE0MGU4ZGIxNDNmYzQ1Ni4uZWIyYTY4ZDM1NTA5NmJhMmUw
YzdmNmJhMzkwNzM1YWI0ODZmM2FhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0
Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNl
KSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShp
bWFnZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+aGFz
UGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGUx
ZTBlNjExMmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQuLmIxNDM1OGMyY2MyOTYwNGE1
MDI2NTI4MWM4ZDIxNTI0NmVkODIwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
QEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFnZVJlZjsKIAogc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcChEcmFnSW1h
Z2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIHsgc2NyZWVu
Q29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOworICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZyYW1l
Lm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKaW5kZXggZWUwNzEzZjAy
YTg3N2MwYjc2NDNkNjI5MmVjNTk4NmRkMjRkM2M3Yy4uN2EwNjM2ZDRkNDkzYTk1ZTJkNDRhZGVi
YTRiNjUxYzI3OGUwZGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtNzYs
OCArNzYsOCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogICAgIGludCBiYWNraW5nU3RvcmVX
aWR0aCA9IHN0ZDo6bWF4KHBhZ2VDb29yZGluYXRlcy53aWR0aCgpIC0gbV9wb3B1cENsaWVudC0+
Y2xpZW50SW5zZXRMZWZ0KCkgLSBtX3BvcHVwQ2xpZW50LT5jbGllbnRJbnNldFJpZ2h0KCksIHBv
cHVwV2lkdGgpOwogCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplKGJhY2tpbmdTdG9yZVdp
ZHRoLCAoaXRlbUNvdW50ICogZGF0YS5tX2l0ZW1IZWlnaHQpKTsKLSAgICBkYXRhLm1fbm90U2Vs
ZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNr
aW5nU3RvcmVTaXplLCB7IH0pOwotICAgIGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Cisg
ICAgZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3Rv
cmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbm90U2VsZWN0ZWRCYWNraW5nU3Rv
cmVDb250ZXh0ID0gZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBzZWxlY3Rl
ZEJhY2tpbmdTdG9yZUNvbnRleHQgPSBkYXRhLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGY5YTExYzY1Mjg4
ODhiMTMyYzcyMDdhOGYzYTVkYmJjOTU4M2QyN2IuLjhkNzFjMGE5NWNhOGJmMTY4MmQ5MTYyNDQ5
ZmEzZjFhZjUxOTY0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTgyMCw3ICs4MjAsNyBA
QCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGxheShVcGRhdGVJbmZv
JiB1cGRhdGVJbmZvKQogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsK
LSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1h
cFNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShi
aXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAppbmRleCAxZDY0M2I2YjQyODhkMDhlMDM4YzQ2MjVkMDU0OWRlNjhhZjJhYTc3Li43ZTVkZGRl
ZGViZWFiODA2ODI0Mjk4ZGRhOTdlZmZjYzQwYzdjNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0zMTgs
MjAgKzMxOSwxOCBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCh1
aW50MzJfdCBtYXRjaEluZGV4KQogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24obV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XSk7CiAKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBzZWxlY3Rpb25TbmFwc2hvdCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1l
KCpmcmFtZSktPmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCk7CisgICAgYXV0byBzZWxlY3Rpb25T
bmFwc2hvdCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSktPmNyZWF0ZVNlbGVjdGlv
blNuYXBzaG90KCk7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNl
bGVjdGlvbik7CiAKICAgICBpZiAoIXNlbGVjdGlvblNuYXBzaG90KQogICAgICAgICByZXR1cm47
CiAKLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgc2VsZWN0aW9uU25h
cHNob3QtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwotCisgICAgYXV0byBoYW5kbGUgPSBzZWxlY3Rp
b25TbmFwc2hvdC0+Y3JlYXRlSGFuZGxlKCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEdldEltYWdlRm9yRmluZE1hdGNoKGhhbmRsZSwgbWF0Y2hJbmRleCkpOworICAgIG1f
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJbWFnZUZvckZpbmRN
YXRjaChzZWxlY3Rpb25TbmFwc2hvdC0+cGFyYW1ldGVycygpLCBoYW5kbGUsIG1hdGNoSW5kZXgp
KTsKIH0KIAogdm9pZCBGaW5kQ29udHJvbGxlcjo6c2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1h
dGNoSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKaW5kZXggNzFlZDE4ODJmYjQyNGQyMWM2NzlkMTNiYjdiNTFiNGVjODRhMTY1ZS4uOWFjZWM2
NmJlYmRkNWJlZDUwM2ZhMzlmMDFhYThmYzFkNDJkYWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtODU5LDI3ICs4NjAsMTMgQEAgUmV0YWluUHRy
PENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJG
cmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAorUmVmUHRyPFdlYkltYWdlPiBX
ZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewotICAgIGF1dG8gc25h
cHNob3QgPSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIHsgeyBXZWJDb3JlOjpTbmFw
c2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4dCB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0pOworICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdFNl
bGVjdGlvbigqY29yZUZyYW1lKCksIHsgeyBXZWJDb3JlOjpTbmFwc2hvdEZsYWdzOjpGb3JjZUJs
YWNrVGV4dCwgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6U2hhcmVhYmxlIH0sIFBpeGVsRm9ybWF0
OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CiAgICAgaWYgKCFzbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmJhY2tlbmRTaXpl
KCksIHsgfSk7Ci0gICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHByb3ZpZGluZyBhIHdheSB0
byB1c2Ugc3VicGl4ZWwgYW50aWFsaWFzaW5nIGZvciB0aGUgc25hcHNob3QKLSAgICAvLyBpZiB3
ZSdyZSBjb21wb3NpdGluZyB0aGlzIGltYWdlIG9udG8gYSBzb2xpZCBjb2xvciAoZS5nLiB0aGUg
bW9kZXJuIGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9
IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShzbmFwc2hvdCksIEZs
b2F0UG9pbnQoKSk7Ci0KLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3Q7CisgICAgcmV0dXJuIFdl
YkltYWdlOjpjcmVhdGUoc25hcHNob3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAppbmRleCA2YzNhOTQ4NmU0NDM0MmFmY2I1NGRhNzZhMjJjYTNkMDNjMjE2ZWM1
Li5kMzlmYjI1YjZiZmFjMzZhZjlhNjdmYmM2Y2VmZjQ5MWUwOThlNzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw2ICs2Myw3IEBAIGNs
YXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOworY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJQYWdlOwogc3Ry
dWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKQEAgLTE4NCw3
ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJjaGl2ZURh
dGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7Cisg
ICAgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlvbklEIGZpcnN0TGF5ZXJUcmVl
VHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RM
YXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4OTIyYjA5ZTU0YWY1MjYx
MzY3MjQ1YmIyODY2YTY4YjRkNGQ5MGUuLmRjZTIwODg1YzNlM2YzZWE5YjVhYjJkMWIzMzY3MWUx
NzcxYzQ0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0yNjM5LDcgKzI2MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRS
ZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcAogCiAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChpbWFnZSkKLSAgICAgICAg
aW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoaGFuZGxlKTsKIH0KQEAgLTI3MDgsMTQgKzI3MDgsMTMgQEAgdm9pZCBXZWJQYWdlOjpwYWlu
dFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1h
cFNpemUKICAgICB9CiB9CiAKLXN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBzaG90T3B0aW9ucyBvcHRp
b25zLCBXZWJQYWdlJiBwYWdlKQorc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzbmFwc2hv
dENvbG9yU3BhY2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2UmIHBhZ2UpCiB7Ci0g
ICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNF
KENHKQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFj
ZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShw
YWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIHJldHVybiBzY3Jl
ZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRp
ZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKIH0KIAogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0
U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFw
c2hvdE9wdGlvbnMgb3B0aW9ucykKQEAgLTI3MjgsMTQgKzI3MjcsMTIgQEAgUmVmUHRyPFdlYklt
YWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiBiaXQKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RPcHRpb25zVG9CaXRt
YXBDb25maWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMo
b3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNp
emUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsICpncmFwaGljc0NvbnRleHQpOwor
ICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0KCk7CisgICAgcGFp
bnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAq
ZnJhbWVWaWV3LCBncmFwaGljc0NvbnRleHQpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwogfQpA
QCAtMjc2NiwyNyArMjc2MywyNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0aQogICAgICAgICBz
bmFwc2hvdFNpemUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3Is
IG1heGltdW1IZWlnaHQpOwogICAgIH0KIAotICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9u
cyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhpcykp
OworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25h
cHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShv
cHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNu
YXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAo
IWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBn
cmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAg
ZG91YmxlIGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBzY2FsZUZhY3RvciAvPSBkZXZpY2VT
Y2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFj
dG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0
aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShzY2FsZUZhY3Rvcik7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAg
Q29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29s
b3IoKTsKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5z
cGFyZW50QmxhY2spOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAg
ICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBz
bmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1
bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hv
dChncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0
aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5z
ZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZp
ZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CkBAIC01NjU5LDM3ICs1NjU1LDMzIEBAIHZvaWQg
V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mCiAgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCkt
PnByaW50aW5nKCkpOwogI2VuZGlmCiAKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0gICAgICAgIGlmICghYml0
bWFwKSB7CisgICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIEltYWdl
T3B0aW9uc1NoYXJlYWJsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksICZtX3BhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgIGlmIChncmFwaGljc0NvbnRleHQp
IHsKLSAgICAgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
aW1hZ2VTaXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwotICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShwcmludGluZ1NjYWxlKTsKKworICAgICAgICBhdXRvJiBncmFwaGljc0Nv
bnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOworICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKKyAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHByaW50aW5nU2NhbGUpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1l
bnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgewotICAgICAgICAg
ICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAg
IGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBwZGZE
b2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotI2Vu
ZGlmCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29s
UmVjdCgqZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYg
KFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50
aW5nRnJhbWUoY29yZUZyYW1lKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgp
KTsKKyAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3QpOworICAgICAgICB9
IGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bv
b2xSZWN0KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KLQotICAgICAgICBpbWFn
ZSA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNl
bmRpZgogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotCiAgICAgaWYgKGlt
YWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5j
cmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBj
b21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiYWQ1ZGU0ZjE1NmY3MGY3Mzk5
ZmY1ZTJjMjdjNzkwMWI5NWM1NmVjLi42ODVjNmYwYTY2ZWY5NWRhNzAwYWMxOTg4Yjg0MjJjODFl
NWViYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMzEwMiw4ICszMTAyLDggQEAgc3RhdGljIHZvaWQgdGV4dEludGVy
YWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25zdCBIVE1MSW5wdXRF
bGUKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBz
aG90Rm9yTm9kZShFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBp
bWFnZSBjb250YWlucyBhdCBtb3N0IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28g
YmlnLgotICAgIGlmIChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKGVs
ZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCi0gICAgICAgIHJl
dHVybiAmc25hcHNob3QtPmJpdG1hcCgpOworICAgIGlmIChhdXRvIHNuYXBzaG90ID0gc25hcHNo
b3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCisg
ICAgICAgIHJldHVybiBzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KaW5kZXggMWE3ODlmOTlkODlmNjdmODAyMTVmZDE2NjE1MDljZTMzNGRiMTg2MS4uYmQ1
NThiMjgyYjY1ZTEzZTQyNGZhZmQ3MjUyMTVmYzk1NTViMDg1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NzYsOSAr
NTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1h
Z2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQor
ICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKICAg
ICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNpemUoKS5oZWlnaHQo
KSkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQp
aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdl
KFdlYkltYWdlKiBpbWFnZSkKQEAgLTU5MSw4ICs1OTUsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRC
b3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWxheWVyKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJ
bWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGxh
eWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCku
Y29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgp
LmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2Ug
aWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojp1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXllcnNGb3JEZXZpY2VTY2FsZUNoYW5nZShmbG9hdCBz
Y2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAz
YjBlMDBhYmIwY2UzMjNkOWI2ZDFhZjdkNjIwN2E4NGQzYWY5MWZiLi4zOTUzZTllZDgzNGI5NDhm
ZjllMjJlNzMyZGFiMDUyNTIzNTVhNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0yMjA1LDYgKzIyMDUsOCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCiAgICAgICAgIHJl
dHVybiBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmc7CiAgICAgY2FzZSBSZW5kZXJp
bmdQdXJwb3NlOjpET006CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpMYXllckJhY2tpbmc6
CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDoKKyAgICBjYXNlIFJlbmRlcmlu
Z1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90OgogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9j
ZXNzRm9yRE9NUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWlu
dGluZzoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458477</attachid>
            <date>2022-04-27 16:06:16 -0700</date>
            <delta_ts>2022-04-27 17:38:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220427160615.patch</filename>
            <type>text/plain</type>
            <size>106038</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4YzVlOTkwN2M3Y2Rl
YjdjMTUzZDNjOGY4MzUzNGZmNTQ5ZmE3ZS4uYmE5Nzc2Y2QzODc5MDBjMTk4N2RhMDI4NWFkYTll
NmYyZDFjYWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
ZWZvcmUgZW5hYmxpbmcgR1BVIFByb2Nlc3MgZm9yIERPTSByZW5kZXJpbmcgdGhlcmUgd2VyZSB0
d28gbW9kZXMgZm9yCisgICAgICAgIHBhZ2Ugc25hcHNob3Q6IExvY2FsIGJpdG1hcCBhbmQgU2hh
cmVhYmxlQml0bWFwLiBUaGUgU2hhcmVhYmxlQml0bWFwIGlzCisgICAgICAgIHNoYXJlZCBiZXR3
ZWVuIHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNzLiBUaGUgaW1hZ2UgaXMgZHJhd24g
aW4KKyAgICAgICAgV2ViUHJvY2VzcyBhbmQgaXMgY29uc3VtZWQgYnkgdGhlIFVJUHJvY2Vzcy4K
KworICAgICAgICBBZnRlciBlbmFibGluZyBHUFUgUHJvY2VzcyBmb3IgRE9NIHJlbmRlcmluZywg
YSBuZXcgbW9kZSBzaG91bGQgYmUgYWRkZWQ6CisgICAgICAgIFJlbW90ZSBTaGFyZWFibGVCaXRt
YXAuIEluIHRoaXMgbW9kZSwgdGhlIGdyYXBoaWNzIHdpbGwgYmUgcmVjb3JkZWQgaW4KKyAgICAg
ICAgV2ViUHJvY2VzcywgdGhlIGRyYXdpbmcgd2lsbCBiZSBjb21taXR0ZWQgaW4gR1BVUHJvY2Vz
cyBhbmQgdGhlIGltYWdlIHdpbGwKKyAgICAgICAgYmUgY29uc3VtZWQgYnkgZWl0aGVyIHRoZSBX
ZWJQcm9jZXNzIG9yIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgVG8gYWRkIHRoaXMgbmV3IG1v
ZGUsIHRoZSBzbmFwc2hvdCB3aWxsIGJlIGRyYXduIHRvIGFuIEltYWdlQnVmZmVyIGluc3RlYWQK
KyAgICAgICAgb2YgYSBTaGFyZWFibGVCaXRtYXAuIEFuZCBXZWJJbWFnZSB3aWxsIGJlIGJhY2tl
ZCBieSBhbiBJbWFnZUJ1ZmZlciBpbnN0ZWFkCisgICAgICAgIG9mIGEgU2hhcmVhYmxlQml0bWFw
LgorCisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUNhaXJv
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmg6CisKIDIwMjItMDQtMjQgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
aGlsbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFRyYWNrIGhhbmRsaW5nIGZp
eGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDM1MjA2ZWFhNmZiZWMxMzcxMjU5M2E0MzExMzBmZWM5Zjk4YzYyOGEu
LjQ2NWU4MjQzMmExNDYyMTM5ODkxMzIzNDExMDQwYWJhODA2OGJmMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTY2IEBACisyMDIyLTA0LTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkg
SW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTExMTM2MjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLSBBbGxvdyBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGVTaGFyaW5nIGFuZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQKKyAgICAg
ICAgICAgdG8gY29tcGlsZSBhbHdheXMuCisKKyAgICAgICAgLS0gTWFrZSBXZWJJbWFnZSBob2xk
IGFuIEltYWdlQnVmZmVyIGluc3RlYWQgb2YgaGF2aW5nIGl0IGhvbGQgYSBTaGFyZWFibGVCaXRh
bXAuCisKKyAgICAgICAgLS0gUGFzcyB0aGUgQ2hyb21lQ2xpZW50IHRvIFdlYkltYWdlOjpjcmVh
dGUoKSBzbyBpdCBjYW4gY2FsbCBpdHMKKyAgICAgICAgICAgY3JlYXRlSW1hZ2VCdWZmZXIoKSB3
aGljaCBjcmVhdGVzIFJlbW90ZUltYWdlQnVmZmVyIGZvciBHUFVQcm9jZXNzCisgICAgICAgICAg
IGRyYXdpbmcuCisKKyAgICAgICAgLS0gUmVtb3ZlIHRoZSBTaGFyZWFibGVCaXRhbXAgbG9jYWwg
bW9kZSB3aGVyZSBpcyBiYWNrZWQgYnkgYSBsb2NhbCBtZW1vcnkKKyAgICAgICAgICAgYnVmZmVy
LiBUaGlzIG1vZGUgd2FzIGFkZGVkIHRvIG1ha2UgV2ViSW1hZ2UgY2FuIGJlIG5vbiBzaGFyZWFi
bGUgZXZlbiAKKyAgICAgICAgICAgaXQgd2FzIGJhY2tlZCBieSBTaGFyZWFibGVCaXRhbXAuIFNv
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKCkKKyAgICAgICAgICAgc2hvdWxkIGJl
IHJlbmFtZWQgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoKS4KKworICAgICAgICAtLSBSZXBsYWNl
IFdlYkltYWdlOjpiaXRtYXAoKTo6bWFrZUNHSW1hZ2VDb3B5KCkgd2l0aCAKKyAgICAgICAgICAg
V2ViSW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKQorCisg
ICAgICAgIC0tIFJlcGxhY2UgV2ViSW1hZ2U6OmJpdG1hcCgpOjptYWtlQ0dJbWFnZUNvcHkoKSB3
aXRoCisgICAgICAgICAgIFdlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6RG9udENv
cHlCYWNraW5nU3RvcmUpCisKKyAgICAgICAgLS0gUmVwbGFjZSBXZWJJbWFnZTo6Yml0bWFwKCk6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpIHdpdGgKKyAgICAgICAgICAgV2ViSW1hZ2U6OmNvbnRl
eHQoKQorCisgICAgICAgIC0tIEFsbG93IGVuY29kaW5nIGFuZCBkZWNvZGluZyBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgYnkgYWxsb3dpbmcgCisgICAgICAgICAgIEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyB0byBiZSBlbmNvZGVkIGFuZCBkZWNvZGVkLgorCisgICAg
ICAgIC0tIE1ha2UgSW1hZ2VCdWZmZXIgYmUgYWJsZSB0byBjcmVhdGVDYWlyb1N1cmZhY2UoKS4g
VGhlIHBvaW50ZXIgdG8gdGhpcworICAgICAgICAgICBzdXJmYWNlIHdpbGwgYmUgbGVha2VkLiBB
bmQgdG8gbWFpbnRhaW4gYSBjb3JyZWN0IGxpZmUgY3ljbGUgZm9yIHRoZSAKKyAgICAgICAgICAg
c3VyZmFjZSBkYXRhIHdoaWNoIGlzIG93bmVkIGJ5IHRoZSBiYWNrZW5kLCB0aGUgSW1hZ2VCdWZm
ZXIgaXRzZWxmCisgICAgICAgICAgIHdpbGwgYmUgcmVmKCkgd2hlbiB0aGUgc3VyZmFjZSBSZWZQ
dHIgaXMgY3JlYXRlZCBhbmQgd2lsbCBiZSBkZXJlZigpCisgICAgICAgICAgIHdoZW4gdGhlIHN1
cmZhY2UgcmF3IHBvaW50ZXIgaXMgZGVzdHJveWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRo
UXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V0NTY2VuZTo6
dXBkYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OmJpdG1hcEltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUNhaXJvU3Vy
ZmFjZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRl
Q0dJbWFnZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAq
IFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29u
dGV4dE1lbnVDb250ZXh0RGF0YTo6c2V0SW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCk6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
Ojppc0JhY2tlZEJ5U2hhcmVkTWVtb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFy
ZWQvVXNlckRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dl
YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpXZWJJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdl
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OnBhcmFtZXRlcnMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkltYWdlOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbWFnZTo6Yml0bWFwIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6
OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGVI
YW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6fldlYkltYWdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2U6OmJpdG1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpiaXRt
YXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGVy
c2lzdGVudENhaXJvU3VyZmFjZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJWaWV3RGlk
UmVjZWl2ZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGRpZEdldEltYWdlRm9yTWF0Y2hSZXN1
bHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojp0YWtlU2NyZWVuc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpiaXRtYXAgY29uc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhh
bmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZS5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSByZW5kZXJl
ZEltYWdlV2l0aE9wdGlvbnM6d2lkdGg6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZl
cnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BsYXkp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRha2VTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnNuYXBzaG90Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNo
b3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNoYXJlYWJsZUJpdG1hcFNuYXBzaG90Rm9yTm9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hvdWxkVXNl
UmVtb3RlUmVuZGVyaW5nRm9yKToKKwogMjAyMi0wNC0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBzZW5kaW5nIGEgZmx1c2ggSVBDIHRv
IHRoZSBHUFUgcHJvY2VzcyB3aGVuIGRlc3Ryb3lpbmcgYSBSZW1vdGVJbWFnZUJ1ZmZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAwYjRiNTU2ZDk3MTRl
MGJjMmE1NmUwOWMwYjgyOTc3NmZmNTA5ZTY3Li5kNzkxYzQzZGE3Yjc5ZTc5OGJiYzExY2Q4Mzgw
YWU4MWQyYzU3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAq
IENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
CkBAIC04MSw3ICs4MSw4IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RX
aXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYgKCFmcmFt
ZS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0KCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQo
KTsKKyAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0
aW9uSW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRl
U2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6
OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpKQpAQCAtMTE0LDkgKzExNSwxMyBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBz
aG90RmxhZ3M6OlBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBzY2FsZUZh
Y3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7
CisgICAgYXV0byBwdXJwb3NlID0gb3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdz
OjpTaGFyZWFibGUpID8gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QgOiBSZW5k
ZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDsKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSAoZG9jdW1lbnQu
dmlldygpICYmIGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpKSA/IGRvY3VtZW50LnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworCisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIHB1cnBvc2UsIHNjYWxlRmFjdG9yLCBvcHRp
b25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQsIHsgfSwgeyBob3N0V2luZG93IH0p
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwog
CiAgICAgaWYgKCFjbGlwUmVjdHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3R0aW5nLmgKaW5kZXggZTRiOWQwMDljNzI0MGZiNTg3YjQ5N2ZlMDNmZWYyMmFlM2Jj
OGM3OS4uYmIxYmMyZmZkMDIxNzc3MThhNzdjNTUzNGU2NmJlZDU1MjMyZTY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNs
YXNzIFNuYXBzaG90RmxhZ3MgOiB1aW50OF90IHsKICAgICBQYWludFNlbGVjdGlvbkFuZEJhY2tn
cm91bmRzT25seSA9IDEgPDwgNCwKICAgICBQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24gPSAxIDw8IDUsCiAgICAgUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvciA9IDEgPDwgNiwK
KyAgICBTaGFyZWFibGUgPSAxIDw8IDcsCiB9OwogCiBzdHJ1Y3QgU25hcHNob3RPcHRpb25zIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaAppbmRleCAxY2FjYzhmNjk0NTZkZWMyN2M0MjNmMGFkZGE4MzlmMDVkZTFlY2Y5
Li45ODhkNDA0OTk4YjFjYjY0OWMxYjE4MDY0YjUwMzQxZTA0MDRiNzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2Vu
ZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjcmVhdGlvbkNvbnRleHQpOwogICAgICAgICBpZiAo
IWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4g
Y3JlYXRlPEltYWdlQnVmZmVyVHlwZT4ocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgpAQCAtNTMsNiArNTMsMTIgQEAgcHVibGljOgogICAgICAgICBhdXRv
IGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwogICAg
ICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2Vu
ZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIs
IHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlw
ZT4gY3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZm
ZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKQEAgLTI3OCw2ICsyODQsMjYgQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisjaWYgVVNFKENBSVJPKQorICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAg
ICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IAorICAgICAgICBhdXRvIHN1cmZhY2UgPSBiYWNrZW5kLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsK
KworICAgICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgYmVsb3cuCisKKyAgICAgICAg
c3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBkYXRhS2V5OworICAgICAgICBjYWlyb19zdXJm
YWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJmRhdGFLZXksIHRoaXMsIFtdKHZvaWQg
KmJ1ZmZlcikgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlcio+
KGJ1ZmZlciktPmRlcmVmKCk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBzdXJmYWNl
OworICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc0luVXNlKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IDRhY2YyMzA4OGE1MzU1ZGM0NTVlZDMzN2NiNDBkNDMzYmYzYWNhMGQuLmNlZmMyMGFjNzIzMjNh
NDM2ODg1ODE0YWNjMGFkZTQxNjI0ZGU3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTU1LDYgKzE1NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYs
IEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0g
MDsKIAorI2lmIFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiBwcm90
ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMzI1
OGY3MGNhM2U4MGE1ZmM2MTVmZDE0Mjc4ZmE0MDZjMzg2NWE2NC4uZjFmMWRkMTY2MjczYTE5NDc2
MjIzMTdkZWQzMjNiYzBjODBmNGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDExIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lm
IFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CkBAIC05MCw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgICAgICBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2U7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVj
b2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
ckJhY2tlbmQoKTsKQEAgLTEyOCw2ICsxMzYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwg
R0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCisjaWYgVVNFKENBSVJPKQorICAgIHZpcnR1YWwgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
I2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgaXNJblVzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAjaWYgSEFWRShJT1NVUkZBQ0UpCkBAIC0xODMsNiArMTk1LDQ1IEBA
IHByb3RlY3RlZDoKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGxvZ2ljYWxT
aXplOworICAgIGVuY29kZXIgPDwgcmVzb2x1dGlvblNjYWxlOworICAgIGVuY29kZXIgPDwgY29s
b3JTcGFjZTsKKyAgICBlbmNvZGVyIDw8IHBpeGVsRm9ybWF0OworICAgIGVuY29kZXIgPDwgcHVy
cG9zZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IGxvZ2ljYWxTaXplOworICAgIGRlY29kZXIgPj4gbG9naWNhbFNpemU7CisgICAgaWYgKCFs
b2dpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IHJlc29sdXRpb25TY2FsZTsKKyAgICBkZWNvZGVyID4+IHJlc29sdXRpb25T
Y2FsZTsKKyAgICBpZiAoIXJlc29sdXRpb25TY2FsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsRm9y
bWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAgIGlmICgh
cGl4ZWxGb3JtYXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1B1cnBvc2U+IHB1cnBvc2U7CisgICAgZGVjb2RlciA+PiBwdXJwb3Nl
OworICAgIGlmICghcHVycG9zZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHJldHVybiB7IHsgKmxvZ2ljYWxTaXplLCAqcmVzb2x1dGlvblNjYWxlLCAqY29sb3JTcGFjZSwg
KnBpeGVsRm9ybWF0LCAqcHVycG9zZSB9IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggYTIxNmIwZWQxNWY3M2U2MzgxNmNjY2YwZTY2ZTZhZDBh
OTA5MWQyMC4uNGJiZDE3OTQ3MjUzYTE5MGEyZTc1NzU4OTMzNTI5ZTc3MzQ4OTY3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2
ICszMiw4IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3QgewogICAgIENh
bnZhcywKICAgICBET00sCiAgICAgTGF5ZXJCYWNraW5nLAorICAgIFNuYXBzaG90LAorICAgIFNo
YXJlYWJsZVNuYXBzaG90LAogICAgIE1lZGlhUGFpbnRpbmcKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGVhMDQ5YTk5NTMyMTdjNjNi
YmU3ZDQxM2NkYTdkYWE5NzI2MjIwZjEuLjY5Y2I3ODU4OGRkZGRmYWExNzRlMWU5M2M0YmU4ODdk
MzE5M2M3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtODksNiArODksMTEgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBSZWZQ
dHIgeyBtX3N1cmZhY2UuZ2V0KCkgfTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25z
dAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiNmI1NmQ4NjZiZGYwY2U3MzZjN2Nm
ZTBiMTNhYWI1NWEyNmQ5OGNkLi45OWJiYzVmMjRmNmQzMGFlNjBmZDI2ZGFmNDYwYTY3MWQxNmFh
MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAt
NDQsNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAorICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIG92ZXJyaWRlOworCiAgICAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJG
b3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMTI1
OTk4ZmY1NWNkZTAyM2RkODcyOTNlMmVhYjI0ZmQ2ODRkN2RmYS4uZDVmYTE1M2FjMmFiNWZlMzIz
NDdhZDQyMzg3N2UxNTMzYzA3ZDJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0
bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsK
ICAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+dHJ1bmNhdGVkTG9n
aWNhbFNpemUoKTsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7Cisg
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocmVzdWx0U2l6ZSwg
eyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZQogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZVNpemUpLCB7IGltYWdl
QnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZVNpemUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNw
YWNlKCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCmluZGV4
IDdlMjI1ODIyNDhiNzI1NmRmZTk1MjVlZGY3OWIzOTAxYjFhYWVkZTYuLjdhMTY2N2Y3YTEyM2Iz
ODY1OTgyMjk4OGNjYzgxMTNhYTBkNTVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGQ6Om9w
dGlvbmFsPFVwZGF0ZUluZm8+IFdDU2NlbmU6OnVwZGF0ZShXQ1VwYXRlSW5mbyYmIHVwZGF0ZSkK
IAogICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gcmVzdWx0OwogICAgIGlmIChtX3VzZXNP
ZmZzY3JlZW5SZW5kZXJpbmcpIHsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZSh3aW5kb3dTaXplLCB7IH0pOworICAgICAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHdpbmRvd1NpemUsIHsgfSk7CiAgICAgICAgIGds
UmVhZFBpeGVscygwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCks
IEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBiaXRtYXAtPmRhdGEoKSk7CiAgICAgICAg
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYgKGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGYyMTA5NmFhYWNkMGQ5ZjdjMDA2ZTk4ZjczMTFhNDc5MmYwNGM3YTMuLmQxNTA4ZDUyZjA5N2Nj
NjEyNGY5YzEyOTk5ZGU3MGY3MWExMTM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFnZUZvckN1cnJlbnRUaW1lCiAgICAgICAg
IHJldHVybiB7IH07CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUs
IHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGM4Y2M1YWE4ZmNiOTQ4
MjBiZGRkNzk1NjUzMWYxNmYyMTQyODY3Y2QuLjUzMDJkNTY2ZjgwZjkzY2FlYmNjNzBjMDcwYTk5
MzBlZGIyMTUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8v
V0tJbWFnZUNhaXJvLmNwcApAQCAtMzYsMTYgKzM2LDE2IEBACiBjYWlyb19zdXJmYWNlX3QqIFdL
SW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBX
ZSBjYW5ub3QgcGFzcyBhIFJlZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBs
ZWFrIHRoZSByZWZlcmVuY2UuCi0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGltYWdlUmVmKS0+
Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChpbWFnZVJlZiktPmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKIH0K
IAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7CiAgICAgYXV0byB3ZWJJbWFn
ZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIFdlYktpdDo6dG9JbWFnZU9w
dGlvbnMob3B0aW9ucykpOwotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJp
dG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4
dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKLSAgICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY3IgPSBncmFwaGlj
c0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENB
SVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCBpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGYyZDMzMzQ3OGMyYWRiOWEzMTU2MGFmZTJj
MGM4MDI0MTM0MGM1YWUuLmNiZTkxMjRmNDM1OWIyZTQ4ZjhlNGJkYWJkODdmMjQwMmMyYmY3MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0
MSwxMiBAQCBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVDR0ltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYpCiAgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmxlYWtSZWYoKTsKKyAg
ICBhdXRvIG5hdGl2ZUltYWdlID0gd2ViSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwbGF0
Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICByZXR1cm4gcGxh
dGZvcm1JbWFnZS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21D
R0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCkBAIC01
MywxNCArNTgsMTIgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFn
ZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBXZWJDb3JlOjpJbnRT
aXplIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAgICAgYXV0byB3ZWJJbWFnZSA9
IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIFdlYktpdDo6dG9JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0
bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdl
YkltYWdlLT5jb250ZXh0KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3Jl
OjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwotICAgIAotICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdl
KCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKKworICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGVhclJlY3QocmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZSgqbmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJ
KHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXggMDQwMzYyMDAwZjVmMzVkNGNiNTY3MmY1Yzdm
NzZhYWExODIxNzYwNS4uZmU5MTVkMTc4NzAxYzk0YjdmNGU2Y2NlNWI2ZjViNTgzYjE5ZDk4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIHZvaWQgQ29udGV4dE1l
bnVDb250ZXh0RGF0YTo6c2V0SW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogewogICAgIC8v
IEZJWE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdHJhdGVneSBmb3IgU2hhcmVhYmxlQml0
bWFwLgotICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgeyB9KTsKKyAgICBtX2NvbnRyb2xsZWRJbWFn
ZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIHsgfSk7
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0
YWEzZTVkODkyYTg4M2QwN2M4Zjg1MzgzNjk4MDlkYTcwYmZmYzljLi5iMzIzNzhkNzE1NjZmZWMz
NjU5MDJlMWJlZjk4ZjQ5ODNiMjZlZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXIK
IHsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIGF1dG8gZGF0YSA9IGFk
b3B0Q0YoV0tDR0NvbW1hbmRzQ29udGV4dENvcHlFbmNvZGVkRGF0YShtX2NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpKSk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMmVhNDM2OTgyNWI3NzJlODEwZDIwMDUwMzgyZWU4
MDNlY2NlODBjOS4uZjQ1ZGZlMzRkMTE3ZDE0YzE2YzJhMDAzN2EyMmJmMTYwY2U4NjJhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5h
bDsKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNv
bnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFu
ZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE5PVEU6IFRoZXNlIGFsbCBBU1NFUlRf
Tk9UX1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdT
dG9yZSkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAppbmRleCAyN2U4MjBlMjNjZjg4YTFiZjU4YWY5OGZjNWMwZmMyYTg1ZGVmODMzLi5lNGRlYWQ1
Zjg5MzhjZTE2YzY4Y2NjMGUyZDIwOWNmNTNkODAyNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtOTksMjAgKzk5LDYgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRp
b24KIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQotewotICAg
IHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKLSAgICBhdXRvIG51bUJ5dGVz
ID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRpb24pOwotICAgIGlmIChudW1CeXRl
cy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgdm9pZCog
ZGF0YSA9IDA7Ci0gICAgZGF0YSA9IFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6dHJ5TWFsbG9jKG51
bUJ5dGVzKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIGRh
dGEpKTsKLX0KLQotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKQogewogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKICAgICBh
dXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRpb24pOwpAQCAt
MTIzLDEzICsxMDksMTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ28KICAgICBpZiAoIXNoYXJl
ZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0
aW9uLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOwogfQogCi1SZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNv
bnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmPFNoYXJl
ZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiB7Ci0gICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7Ci0K
ICAgICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgYXV0byBudW1C
eXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsKICAgICBpZiAobnVt
Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtMTM5LDcgKzEyMyw3IEBAIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENv
bmZpZ3VyYXRpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFy
ZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBjb25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKIH0KIAogUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpAQCAtMTQ4LDEzICsxMzIs
MTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29u
c3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUs
IGhhbmRsZS5tX2NvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0
dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9jb25maWd1cmF0aW9uLCBzaGFyZWRN
ZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0
aW9uKSBjb25zdAogewotICAgIEFTU0VSVChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwotCiAg
ICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2hhbmRsZSwgcHJv
dGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9z
aXplOwpAQCAtMTYyLDM0ICsxNDQsMTYgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhh
bmRsZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCB2b2lkKiBkYXRhKQot
ICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikK
LSAgICAsIG1fZGF0YShkYXRhKQotewotfQotCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJp
dG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6ZSkK
ICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQotICAgICwgbV9zaGFyZWRNZW1v
cnkoc2hhcmVkTWVtb3J5KQotICAgICwgbV9kYXRhKG51bGxwdHIpCisgICAgLCBtX3NoYXJlZE1l
bW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6flNo
YXJlYWJsZUJpdG1hcCgpCi17Ci0gICAgaWYgKCFpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0g
ICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZShtX2RhdGEpOwotfQotCiB2b2lkKiBT
aGFyZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAogewotICAgIGlmIChpc0JhY2tlZEJ5U2hhcmVk
TWVtb3J5KCkpCi0gICAgICAgIHJldHVybiBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwotCi0gICAg
QVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YTsKKyAgICByZXR1cm4gbV9zaGFyZWRN
ZW1vcnktPmRhdGEoKTsKIH0KIAogQ2hlY2tlZFVpbnQzMiBTaGFyZWFibGVCaXRtYXA6Om51bUJ5
dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmgKaW5kZXggNGEwNzQwMDE3MzVkZjg2NGY0ZjRiZTFmOWU3NjU1MjQwM2VjM2Y1NC4u
OTZhMWM3ODJmMTU4ZTRhZGM5MTI1ODgwNDM5MWMyZTdhZWRmMjIxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxNCArNzksMTEgQEAgcHVibGljOgogICAg
IHN0YXRpYyBDaGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNp
emUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0aWMgQ2hlY2tlZFVpbnQzMiBjYWxj
dWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKIAotICAgIC8vIENyZWF0
ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb25maWd1cmF0aW9uKTsKLQogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgd2hv
c2UgYmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJlZCB3aXRoIGFub3RoZXIgcHJvY2Vzcy4KLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9u
KTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4
aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVm
UHRyPFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRN
ZW1vcnk+JiYpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGEgaGFu
ZGxlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgSGFu
ZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpOwpAQCAtOTQsMTEgKzkxLDEyIEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUg
YSBoYW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0Owog
Ci0gICAgflNoYXJlYWJsZUJpdG1hcCgpOwotCiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIFdlYkNvcmU6OkludFJlY3QgYm91
bmRzKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgp
LCBzaXplKCkpOyB9CiAKKyAgICB2b2lkKiBkYXRhKCkgY29uc3Q7CisgICAgc2l6ZV90IGJ5dGVz
UGVyUm93KCkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2Nv
bmZpZ3VyYXRpb24pOyB9CisKICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQg
Y2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKIApAQCAtMTA2LDggKzEwNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlKTsKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZSk7CiAKLSAg
ICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1l
bW9yeTsgfQotCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgYml0bWFwIGltYWdlIHRoYXQgZGlyZWN0
bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25s
eSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJl
YWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY3Jl
YXRlSW1hZ2UoKTsKQEAgLTEyNCwxNCArMTIwLDE0IEBAIHB1YmxpYzoKICNlbGlmIFVTRShDQUlS
TykKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVy
ZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0
byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0
bWFwIHdvbid0IGNoYW5nZS4KKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVQZXJz
aXN0ZW50Q2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRl
Q2Fpcm9TdXJmYWNlKCk7CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBs
YXRmb3JtSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b25maWd1cmF0aW9uLCB2b2lkKik7Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgU2hh
cmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWY8
U2hhcmVkTWVtb3J5PiYmKTsKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZikgY29uc3Q7CkBAIC0xNDMsMTEgKzEz
OSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQq
IHR5cGVsZXNzQml0bWFwKTsKICNlbmRpZgogCi1wdWJsaWM6Ci0gICAgdm9pZCogZGF0YSgpIGNv
bnN0OwotICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5
dGVzUGVyUm93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQotICAgIAotcHJpdmF0ZToKICAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9z
aXplLCBtX2NvbmZpZ3VyYXRpb24pOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsK
QEAgLTE1NywxMSArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVsZWFzZUJpdG1hcENv
bnRleHREYXRhQ2FsbGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgLy8gSWYgdGhlIHNoYXJl
YWJsZSBiaXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRo
ZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJl
ZE1lbW9yeTsKLQotICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBm
YXN0TWFsbG9jZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgZGF0YS4KLSAgICB2b2lkKiBt
X2RhdGEgeyBudWxscHRyIH07CisgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcApp
bmRleCBlMTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5MTRhY2QwMGQzMjYxYTc1Li43ZmZhOWRhZjI3
NDE1YTcyNmNlNDRhOWQzNDZlNWQ1NjcyMDM0ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIxMSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGU6OkltYWdlOiB7CiAgICAgICAgIGF1dG8mIGltYWdlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViSW1hZ2UmPihvYmplY3QpOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgQVNTRVJUKGltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1lbW9y
eSgpIHx8ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgeworICAgICAgICBh
dXRvIGhhbmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRsZSgpOworICAgICAgICBpZiAoaGFuZGxlLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxv
Y2F0ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8
IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjEsNiArMjIwLDcgQEAgdm9pZCBVc2Vy
RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9i
amVjdCkKIAogICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5kaWNhdGVzIGEgYml0bWFwIHdhcyBh
bGxvY2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAgICAgICAgZW5jb2RlciA8PCB0cnVlOworICAg
ICAgICBlbmNvZGVyIDw8IGltYWdlLnBhcmFtZXRlcnMoKTsKICAgICAgICAgZW5jb2RlciA8PCBo
YW5kbGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5MCwxNSArMzkwLDE2IEBAIGJvb2wg
VXNlckRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9iamVj
dD4mIHJlc3VsdCkKICAgICAgICAgaWYgKCFkaWRFbmNvZGUpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IHBhcmFtdGVyczsKKyAgICAgICAgZGVjb2Rl
ciA+PiBwYXJhbXRlcnM7CisgICAgICAgIGlmICghcGFyYW10ZXJzKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisgICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXN1bHQgPSBXZWJJbWFn
ZTo6Y3JlYXRlKCpwYXJhbXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggZjc0OGJkZjM3MzYxODA4M2VhZGM5NWJmOGE2YmIzMmI2MzdiMGJhZC4uNmFhMGVj
ODRmYTYxNDFlZTk4NWNjY2VhMjMxNDQ5NzZkZjEwOTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShFbmNvZGVy
JiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5z
aXplKCkpLCB7IH0pOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKICAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAg
ZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMmVm
ZTI2MDcyNzdhNGI4YWRmMmY4MDc3MDdmZDc3MzFlZDIyZTU3NC4uYjc0OGFhYjAwMGNiMmEzZWYw
N2VmYzYxZGZmZmMzZjVlYzcwODhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04NzIsNiArODcyLDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlPiB7CiAgICAgICAgIFdlYkNvcmU6
OlJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVy
cG9zZTo6RE9NLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpMYXllckJhY2tp
bmcsCisgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90LAorICAgICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCwKICAgICAgICAg
V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZwogICAgID47CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSW1hZ2UuY3BwCmluZGV4IDk5Yzk1M2NmYzIyODJlN2FlN2UzNWIzNWRiMGMx
ZTQxODUyMmMwNTguLmY5OWU5ODlmMjk0MTdlNmMwYmVkZWI1ODg5OGJiMThkOGI3Y2MxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNDUgKzI2LDEyMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZUNsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5oPgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8V2ViSW1hZ2U+IFdl
YkltYWdlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SW1hZ2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgQ2hyb21lQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIFdlYkltYWdlOjpjcmVh
dGUoc2l6ZSwgb3B0aW9ucywgeyB9KTsKLX0KKyAgICAvLyBDcmVhdGUgc2hhcmVhYmxlIFJlbW90
ZUltYWdlQnVmZmVyIGlmIEdQVSBQcm9jZXNzIGlzIGVuYWJsZWQuCisgICAgaWYgKGNsaWVudCkg
eworICAgICAgICBhdXRvIHB1cnBvc2UgPSAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJs
ZSkgPyBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCA6IFJlbmRlcmluZ1B1cnBv
c2U6OlNuYXBzaG90OworICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3JlYXRlSW1hZ2VC
dWZmZXIoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcHVycG9zZSwgMSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAg
ICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICB9CiAKLVJlZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQoteworICAgIC8vIENyZWF0
ZSBzaGFyZWFibGUgQ29uY3JldGVJbWFnZUJ1ZmZlci4KICAgICBpZiAob3B0aW9ucyAmIEltYWdl
T3B0aW9uc1NoYXJlYWJsZSkgewotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgICAgICBp
ZiAoIWJpdG1hcCkKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCAxLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBz
aG90LCB7IH0pOworICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICB9Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKKworICAgIC8v
IENyZWF0ZSBsb2NhbCBDb25jcmV0ZUltYWdlQnVmZmVyLgorICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwgMSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCkpOworfQorCitSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoY29u
c3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRvIGJhY2tlbmQgPSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRs
ZSkpOworICAgIGlmICghYmFja2VuZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgIAorICAg
IGF1dG8gYnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+OjpjcmVhdGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSk7CisgICAg
aWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJJbWFn
ZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAotUmVmPFdlYkltYWdlPiBX
ZWJJbWFnZTo6Y3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwKQorUmVmPFdlYklt
YWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShiaXRtYXApKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW1hZ2UoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYklt
YWdlOjpXZWJJbWFnZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKLSAgICA6IG1fYml0
bWFwKFdURk1vdmUoYml0bWFwKSkKK1dlYkltYWdlOjpXZWJJbWFnZShSZWY8SW1hZ2VCdWZmZXI+
JiYgYnVmZmVyKQorICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQogCi1XZWJJ
bWFnZTo6fldlYkltYWdlKCkKK0ludFNpemUgV2ViSW1hZ2U6OnNpemUoKSBjb25zdAogeworICAg
IHJldHVybiBtX2J1ZmZlci0+YmFja2VuZFNpemUoKTsKIH0KIAotY29uc3QgSW50U2l6ZSYgV2Vi
SW1hZ2U6OnNpemUoKSBjb25zdAorY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJz
JiBXZWJJbWFnZTo6cGFyYW1ldGVycygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYml0bWFwLT5z
aXplKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5wYXJhbWV0ZXJzKCk7Cit9CisKK0dyYXBoaWNz
Q29udGV4dCYgV2ViSW1hZ2U6OmNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZl
ci0+Y29udGV4dCgpOworfQorCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFdlYkltYWdlOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKK30KKworUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gV2ViSW1hZ2U6OmJpdG1hcCgpIGNvbnN0Cit7CisgICAgYXV0byog
YmFja2VuZCA9IG1fYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlmICghYmFj
a2VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdF9jYXN0PEltYWdlQnVm
ZmVyJj4oKm1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisKKyAgICBhdXRv
KiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNo
YXJpbmc+KCpzaGFyaW5nKS5iaXRtYXAoKTsKK30KKworI2lmIFVTRShDQUlSTykKK1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IFdlYkltYWdlOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQoreworICAgIHJl
dHVybiBtX2J1ZmZlci0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7Cit9CisjZW5kaWYKKworU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgV2ViSW1hZ2U6OmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QKK3sKKyAgICBhdXRvKiBiYWNrZW5kID0gbV9idWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgY29uc3RfY2FzdDxJbWFnZUJ1ZmZlciY+KCptX2J1ZmZlci5wdHIo
KSkuZmx1c2hEcmF3aW5nQ29udGV4dCgpOworCisgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQt
PnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICBpZiAoIWlzPEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBiYWNr
ZW5kSGFuZGxlID0gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNo
YXJpbmcpLmNyZWF0ZUJhY2tlbmRIYW5kbGUocHJvdGVjdGlvbik7CisKKyAgICBpZiAoYXV0byBo
YW5kbGUgPSBzdGQ6OmdldF9pZjxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oJmJhY2tlbmRIYW5k
bGUpKQorICAgICAgICByZXR1cm4gV1RGTW92ZSgqaGFuZGxlKTsKKworICAgIHJldHVybiB7IH07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmgKaW5kZXgg
MjJmMzg2ZjlkMjlhNWRmNTc0MzhmYmFiNDc4YmJmODZmZTFjZDEwNS4uOTdlNzliZWYyYTNiYjUz
NmNmNWJjYTg1M2M2ZTAwODA4MDZmMTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEw
ICsyOCwxNSBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VCdWZmZXJCYWNrZW5kLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDaHJvbWVDbGllbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFz
cyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCwyMCArNDUsMjcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6SW1hZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucyk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlv
bnMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBS
ZWY8V2ViSW1hZ2U+IGNyZWF0ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmKTsKLSAgICB+V2ViSW1h
Z2UoKTsKLSAgICAKLSAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3Q7Cisg
ICAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBJbWFnZU9wdGlvbnMsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiYmKTsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgeyBy
ZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWFibGVCaXRtYXAmIGJpdG1h
cCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9CisgICAgV2ViQ29yZTo6SW50U2l6
ZSBzaXplKCkgY29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQoKSBjb25zdDsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpD
b3B5QmFja2luZ1N0b3JlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAoKSBjb25zdDsKKyNpZiBVU0UoQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisjZW5kaWYKKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV2ViSW1hZ2Uo
UmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CisgICAgV2ViSW1hZ2UoUmVmPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmKTsKIAotICAgIFJlZjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJl
ZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1h
cENhaXJvLmNwcAppbmRleCA5N2I1ZTYzZjE1YTgzMWZlNGVlMDVhMWFlYjMyODdjYzBiZDcxOWY5
Li5lOTZkYTkxMzhkMWIyZDg5NmQwOTAwOGEzY2IzYjczNjM3NGEzNjg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC04
MSw2ICs4MSwxMSBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSQogICAgIENhaXJvOjpkcmF3U3Vy
ZmFjZSgqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSwgc3RhdGUuYWxwaGEo
KSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGVyc2lzdGVudENhaXJvU3VyZmFjZSgpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZVN1cmZhY2VGcm9tRGF0YShkYXRhKCksIG1fc2l6ZSk7Cit9CisKIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNl
KCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZVN1cmZhY2VG
cm9tRGF0YShkYXRhKCksIG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCBiZjNkZDA2MDNmNWY3YjI4ZGMxNGExNzI0ZDgwMDMx
YTFlZmFiM2Q5Li4wNDVkZWJiODExZGQzODUzMTc2NzcyNGE0NGY1MTZhOWQ1MDlmMDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2Rl
SW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsg
fSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdl
LCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggZWQ5YTk2MGY1YThkZTZiYmNkZjMwZmU4OWUxYTFmMGM0MTFhOTEzZi4uNDg0MjM5MTY1
YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2NWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQzODAsNyArNDM4MCw3
IEBAIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgd2ViSW1hZ2UtPmJpdG1hcCgpLmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5v
dGlmeT4oY2Fpcm9fc3VyZmFjZV9kZXN0cm95KSk7CisgICAgZ190YXNrX3JldHVybl9wb2ludGVy
KHRhc2suZ2V0KCksIHdlYkltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkpOwog
fQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNo
b3RPcHRpb25zKFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAyMDczOWU1
YWRiMGI3N2FmZWIzMTA1ODFlYjk2ZDdlM2E3ODAyYjcwLi4yYjE4ZTk5Mjc0ZDMyNzhjY2MyMjg2
MTU2MjViMzNlYmM1ZGFhMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAo
Q29jb2FJbWFnZSAqCiAgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwogCiAgICAgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsK
LSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0
bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShyZXN1bHRSZWN0LnNpemUoKSwg
Yml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAz
M2QwOWRmYzI4YmI0NmYyOGRjYTQ2MmMxYTU1NjhkN2M4OGRmYzcxLi5hZmNkNWQ1YjQ3ZmY5YTQ3
M2Q2NzU2NjY3M2M5Mzk1NzhhYTE1NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTY5MDAsMTQgKzY5MDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hD
b3UKICAgICBtX2ZpbmRDbGllbnQtPmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0aGlzLCBzdHJpbmcs
IG1hdGNoQ291bnQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5k
TWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwg
dWludDMyX3QgbWF0Y2hJbmRleCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZp
bmRNYXRjaChjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0
Y2hJbmRleCkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNv
bnRlbnRJbWFnZUhhbmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApIHsKKyAgICBhdXRvIGltYWdlID0g
V2ViSW1hZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGNvbnRlbnRJbWFnZUhhbmRsZSkp
OworICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VG
b3JNYXRjaFJlc3VsdCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVs
bCgpKS5wdHIoKSwgbWF0Y2hJbmRleCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0
SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBpbWFnZS5nZXQoKSwgbWF0Y2hJbmRleCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFRleHRJbmRpY2F0b3JE
YXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRfdCBsaWZldGltZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzkzNTM5OTc2M2IwMjVlNDJlZDc0MWQ3YWVhODQzZmE0
ZDNjYTEzZi4uMzBjNTY1YzJmYTc2Y2JiODAzYmNkNTA2MGRiOGFiODNmMThkNTdjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7
CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lk
IGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7Ci0gICAgdm9pZCBkaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudElt
YWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKKyAgICB2b2lkIGRpZEdldEltYWdlRm9y
RmluZE1hdGNoKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYs
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0
Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBoaWRlRmluZEluZGlj
YXRvcigpOwogICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUyNzZkM2Uy
Zjc2NDA5ODZjMzhmZWM0OWQzZGM5OWIxYmFlZGFmYTAuLjQ1NTY0ZGI5M2RiODkzMTFlZWI4M2Y4
YjU0ZjMzMDY1ZjkyMmI5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0Miw3ICsyNDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IG1hdGNoUmVjdCwgdWludDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBtYXRj
aEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpCiAgICAgRGlkRmFpbFRvRmluZFN0cmluZyhTdHJp
bmcgc3RyaW5nKQogICAgIERpZEZpbmRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIFZlY3Rv
cjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+IG1hdGNoZXMsIGludDMyX3QgZmlyc3RJbmRleEFm
dGVyU2VsZWN0aW9uKQotICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4
KQorICAgIERpZEdldEltYWdlRm9yRmluZE1hdGNoKHN0cnVjdCBXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgcGFyYW1ldGVycywgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1hdGNoSW5kZXgpCiAKICAgICAj
IFBvcHVwTWVudSBtZXNzYWdlcwogICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIHN0cnVjdCBXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YSBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KaW5kZXggNzIwNzVmYmM4NjJjMzRkMGM4NmI0YWM1MzhlNGM0NjY5
OWNiZWU0Mi4uZGZhNjYzNjc4OGU5OTU5YWEzNDZhOGJmNzU1MTk2NDAxY2M2MjU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
NCwxMSArMjk0LDE1IEBAIC0gKHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2ViS2l0
OjpXZWJJbWFnZSAqKWltYWdlCiAgICAgaWYgKF9pbWFnZVJlcGx5Q2FsbGJhY2tzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gaW1hZ2Ut
PmJpdG1hcCgpLnNpemUoKTsKKyAgICBhdXRvIHNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgIHNp
emUuc2NhbGUoMSAvIF9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byBpbWFnZUNhbGxiYWNrID0gX2ltYWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7
Ci0gICAgaW1hZ2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgp
KTsKKyAgICBpbWFnZUNhbGxiYWNrKGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQo
KSk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLVGV4dEZpbmRlck1hdGNoIGNhbGxiYWNrcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA3YWI2N2EzNDM3YTI4YTE5YmQ2NmU0
NTU3YzNiNDc0NTZjMWUyMTE1Li40OWRhY2Q2M2I1ZWI3ZTAxZmNhMzc1ODA1MzhmZTRkMmViNjdi
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODYxLDcgKzg2MSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5j
cmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFj
a0lELCBoYW5kbGUsIHsgfSksIDApOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLmgKaW5kZXggYmY4YTQ3MDM4NWZjYTc0MGQ0NDM3NTZlYWE3ZjRkN2ZjNzlkMjY1Ni4u
NmVjNTY4ZDA2ZGIyOGVkNDA2MzFlMjc1MDJhNTAwYWQyODdkMTQwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDUgKzQz
LDMgQEAgdXNpbmcgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gc3RkOjp2YXJpYW50PAogPjsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCmluZGV4IDU4MDIy
OGFmODVmNzUzZTU4YmRmNWVmYzFkMDdkMWE2YWYwMzYzZmIuLmNkMmU5ZTNlMTRiOTgxMDY0ZTVi
ODkwM2ViNDlmZDFmZDg5MmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlU2hhcmluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFja2VuZC5oPgogCkBAIC0zNCw3ICszMiw4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcgewogcHVibGlj
OgotICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5k
bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHNldEJhY2tlbmRIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNCYWNrZW5kSGFuZGxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTUyLDUgKzUxLDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihU
b1ZhbHVlVHlwZU5hbWUpIFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggYTExNzA3MjQ5MGU1
YzdhNzk1NGZiYmU3OGY3MGY3OTM2ZWRjMmVkMS4uN2FlMTVhMGZlMDcwYzgzMTBlNTdlZmM4M2Vm
MGJlMzM3NTUxMDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKIAotI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZl
ci5oPgpAQCAtODUsNyArODMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwg
Y29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05Myw3ICs5MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNv
bnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGNv
bnRleHQpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkK
QEAgLTExMSwxMCArMTA5LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVl
PEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShi
aXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJpdG1hcC5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKK0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9y
bUltYWdlQnVmZmVyQmFja2VuZChwYXJhbWV0ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShi
aXRtYXApKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMjYsMTAgKzEy
NCwxMCBAQCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbQogICAgIG1fY29udGV4dC0+YXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihyZXNvbHV0aW9uU2NhbGUoKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24gcHJvdGVjdGlvbikgY29uc3QKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIG1fYml0bWFw
LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBwcm90ZWN0aW9uKTsKICAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKQEAgLTE0Myw2ICsxNDEsMTMg
QEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJv
dygpIGNvbnN0CiAgICAgcmV0dXJuIG1fYml0bWFwLT5ieXRlc1BlclJvdygpOwogfQogCisjaWYg
VVNFKENBSVJPKQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBtX2JpdG1h
cC0+Y3JlYXRlUGVyc2lzdGVudENhaXJvU3VyZmFjZSgpOworfQorI2VuZGlmCisKIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpKTsKQEAgLTE2NCw1ICsxNjks
MyBAQCB2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6cHV0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDIxZGQwZDg3NTBhZGUzMzI2N2QwOGU4ODA3
MWQ1ZDVjZDMzMDg0YmYuLmY1OTgyMjU3YmJhMTgxODk2MTg4M2JmYjIwOGNmOGM1YTI2MmNjNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oPgpAQCAtNDMsNiArNDEsNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRt
YXA7CiBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKKwogcHVibGljOgogICAgIHN0YXRp
YyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbihjb25zdCBQYXJh
bWV0ZXJzJik7CiAgICAgc3RhdGljIFdlYkNvcmU6OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tl
bmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKQEAgLTUyLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OkNyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmPFNoYXJlYWJsZUJp
dG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAK
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAqbV9jb250ZXh0OyB9Ci0gICAgCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6
ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNr
ZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9iaXRtYXAucHRyKCk7
IH0KKyNpZiBVU0UoQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fp
cm9TdXJmYWNlKCkgZmluYWw7CisjZW5kaWYKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWw7CkBAIC02NiwxNiArNjksMTUgQEAgcHVibGlj
OgogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
ZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpdHkmKSB7IH0KKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygp
IGNvbnN0IGZpbmFsOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5k
U2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2b2lkIHJlbGVhc2VHcmFwaGlj
c0NvbnRleHQoKSBmaW5hbCB7IC8qIERvIG5vdGhpbmcuIFRoaXMgaXMgb25seSByZWxldmFudCBm
b3IgSU9TdXJmYWNlIGJhY2tlbmRzICovIH0KIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fYml0bWFwOworICAgIFJlZjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDI1YjVhNDU1ODI1MGVlMDYwNTZj
ODQzYTE3YzEzODE5NjE2OWYzYTcuLjE2ZmE2YjJhMDBhYjkxYzgxODk2YTQ3ZGNmNThhYmM1ZDQ3
MTc0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFi
bGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IGlt
YWdlLnNpemUoKTsKIAotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IGltYWdlLmNvbG9yU3BhY2UoKSB9KTsKKyAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlLnNpemUoKSwgeyBpbWFnZS5j
b2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNl
QmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVhOTkzZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4
YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5YjlhOThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJl
bW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdU
Rk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZl
clJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90
ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJm
ZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3NGFjOTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdk
NTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGUwM2E0MGJmODI0NTkzNzM2
MjU3NmYyZjU4OTQ0NzI0Nzg2ZTNkZDcuLjhlNjJkMDI0MGJkYWRmYmQ1NTJjYTlkYzc0Y2NhNDcw
NjUzNDQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3Vy
ZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0lt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBj
b25zdAogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5j
cmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4
ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgxYzI0ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZh
ZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3Jl
YXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2Qx
MjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1MDllMC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1Njkw
NjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFn
ZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3
aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgpCiAgICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0
aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRyPFdlYktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25v
ZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2ViS2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25z
KSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxX
aWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktp
dDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFsV2lkdGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRp
dmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJu
IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgp
Lm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpOU1plcm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNl
KCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2Uo
KTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5k
ZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNhY2Q3MzY2MTMxYjY3ZjJlZC4uYTRhOGVhMDEzYTVl
MzVmMDZjY2JiZjZmYmM5Y2IwNzk4NjQwMDliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSwxNCArMTcxLDEyIEBAIHN0YXRpYyBSZWZQ
dHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50
UmVjdCYgcGFpbnRpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRl
eHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgYml0bWFwU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShiaXRt
YXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50aW5n
UmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5hcHBseURldmlj
ZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2Nh
bGUoYml0bWFwU2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXBh
aW50aW5nUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFw
c2hvdCBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsK
ICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGln
aHRpbmcpCkBAIC0xOTIsNyArMTkwLDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VG
b3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKIAogICAg
IGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAg
IGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZp
ZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWlu
dGluZ1JlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRp
bmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNz
Q29udGV4dCwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpE
b2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xk
UGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA5NzUyOWZjMWFjMzkyMjkzNWQ5
OTVjMmZjNWNhZDk0YjFiYjY1MmYyLi5hYjZiMjZjOTNkNTNlZWYyZmYxY2I2NTgwYTMzZGE4OGI3
MzYzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzksMjAgKzEzOSwxNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgog
ICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFj
a2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJhY2tpbmdTdG9y
ZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsg
fSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpCisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdl
OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMo
b3B0aW9ucyB8IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSkpOworICAgIGlmICghc25hcHNob3Qp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBi
YWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3ND
b250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGdyYXBoaWNzQ29udGV4dC0+
c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90
LT5jb250ZXh0KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKIAog
ICAgIHBhaW50UmVjdC5tb3ZlKGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueCgpLCBmcmFtZVZpZXct
PmZyYW1lUmVjdCgpLnkoKSk7CiAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtZnJhbWVWaWV3LT5zY3Jv
bGxQb3NpdGlvbigpKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJl
Y3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcGFpbnRSZWN0
LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVo
YXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CkBAIC0xNjUsMTIgKzE2
MiwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CiAK
LSAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CisgICAg
ZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVW
aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCi0gICAgcmV0dXJuIFdlYklt
YWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBz
bmFwc2hvdDsKIH0KIAogU3RyaW5nIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnRleHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCBk
ZjhlNTVkZjFmMGFlODM2MDNmYThkZDNhOTFhMGVmYWQzODVhYjdlLi5iZDI2MGY5M2ZiYmZhYmYw
NmQ2MjZhMDcyN2I3NGRmNjk3ZWI5MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzMsMTMgKzE3MywxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogICAgIEJpdG1hcEltYWdlJiBi
aXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwogICAgIEludFNpemUg
c2l6ZShiaXRtYXBJbWFnZS5zaXplKCkpOwogICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6
Y3JlYXRlKHNpemUsIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCkpOwotCi0gICAgLy8gRklY
TUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCi0gICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYg
KCFncmFwaGljc0NvbnRleHQpCisgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZSwge3sg
fSwgc2l6ZX0pOworICAgIC8vIEZJWE1FOiBuZWVkIHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgor
ICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZShiaXRtYXBJbWFnZSwgeyB7IH0sIHNpemUgfSk7CiAKICAg
ICByZXR1cm4gd2ViSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAwYWZjMDE3MmM5YjNjOGUyNzk2NTg1OTgzYzU1
NWNmYjIyYWVjOWJiLi5iMTU3OWEyMGQ0ZDhmZDIyYjVlODAxODZhYmIxOTkzNTRiMjRkOWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTE5OTIsNyArMTk5Miw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdp
bjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsKICAg
ICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCi0gICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVT
aXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKaW5kZXggMTIwMjYzZDY1
ZDYxZjU5MWU1ZjFmNjdmZDRmZThiZjUzZWZmYzMzMC4uODMxZjE4YjQ2NDBlNTgwYjM3YTQxNTky
NTA1ZmVmYWRhMDBhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5j
cHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVh
YmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICAgICAgaWYg
KCFzbmFwc2hvdEltYWdlKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90UmVjdC5z
aXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdU
Rk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtODMsNyArODMsNyBAQCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlLCBD
cmVhdGVTaAogICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBpbWFnZVNpemUud2lk
dGgoKSA8PSAxIHx8IGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAxKQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGltYWdlU2l6ZSwgeyBXVEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlU2l6ZSwgeyBX
VEZNb3ZlKGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRlckltYWdl
LCBDcmVhdGVTaAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENv
bG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgYXV0byBzaGFyZWRC
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNp
emUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CisgICAgYXV0byBzaGFyZWRC
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdU
Rk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAg
ICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZDMxZjQyNWI4
ZDEzZDg3ZTFiYTRkMTY0NDE0YWMxMjVhNDYzYTYwZi4uMTNkYjg3YmM2ZWE1ZDI1ZmQ2MWVlNjk1
NGUyYmRmNzY5YThiNjkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEu
aCIKICNpbmNsdWRlICJIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yQ2hvb3Nlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4K
QEAgLTk0MSw4ICs5NDMsMTIgQEAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSogV2ViQ2hyb21lQ2xpZW50OjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWMKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KSBjb25zdAogewotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxk
VXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmlu
Z0ZvcihwdXJwb3NlKSkgeworICAgICAgICBpZiAocHVycG9zZSAhPSBSZW5kZXJpbmdQdXJwb3Nl
OjpTaGFyZWFibGVTbmFwc2hvdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIHJldHVybiBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD46OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsIHsgfSk7
CisgICAgfQogCiAgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDVlNWNlZmY3MDFjOWU0YWUxZDhiZTNlNTgxNDBlOGRi
MTQzZmM0NTYuLmViMmE2OGQzNTUwOTZiYTJlMGM3ZjZiYTM5MDczNWFiNDg2ZjNhYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJh
Z0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFw
KGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgaW1h
Z2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8g
Z3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAg
IEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlMWUwZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1Mzc2
ZWY0M2FkNTE0Li5iMTQzNThjMmNjMjk2MDRhNTAyNjUyODFjOGQyMTUyNDZlZDgyMGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIERyYWdJ
bWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252
ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCku
dmlldygpKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNp
emUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAg
IGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1
cE1lbnVXaW4uY3BwCmluZGV4IGVlMDcxM2YwMmE4NzdjMGI3NjQzZDYyOTJlYzU5ODZkZDI0ZDNj
N2MuLjdhMDYzNmQ0ZDQ5M2E5NWUyZDQ0YWRlYmE0YjY1MWMyNzhlMGRlNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2lu
L1dlYlBvcHVwTWVudVdpbi5jcHAKQEAgLTc2LDggKzc2LDggQEAgdm9pZCBXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRl
cywgUGwKICAgICBpbnQgYmFja2luZ1N0b3JlV2lkdGggPSBzdGQ6Om1heChwYWdlQ29vcmRpbmF0
ZXMud2lkdGgoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0TGVmdCgpIC0gbV9wb3B1cENs
aWVudC0+Y2xpZW50SW5zZXRSaWdodCgpLCBwb3B1cFdpZHRoKTsKIAogICAgIEludFNpemUgYmFj
a2luZ1N0b3JlU2l6ZShiYWNraW5nU3RvcmVXaWR0aCwgKGl0ZW1Db3VudCAqIGRhdGEubV9pdGVt
SGVpZ2h0KSk7Ci0gICAgZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKLSAgICBkYXRh
Lm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGRhdGEubV9ub3RTZWxlY3RlZEJhY2tpbmdT
dG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Cisg
ICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
YmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+IG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dCA9IGRhdGEubV9ub3RTZWxlY3Rl
ZEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gc2VsZWN0ZWRCYWNraW5nU3RvcmVDb250ZXh0ID0gZGF0YS5t
X3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCBmOWExMWM2NTI4ODg4YjEzMmM3MjA3YThmM2E1ZGJiYzk1ODNkMjdi
Li44ZDcxYzBhOTVjYThiZjE2ODJkOTE2MjQ0OWZhM2YxYWY1MTk2NDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBJbnRTaXplIGJp
dG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0g
bV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6
ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMWQ2NDNiNmI0Mjg4ZDA4ZTAzOGM0
NjI1ZDA1NDlkZTY4YWYyYWE3Ny4uN2U1ZGRkZWRlYmVhYjgwNjgyNDI5OGRkYTk3ZWZmY2M0MGM3
YzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMzE4LDIwICszMTksMTggQEAgdm9pZCBGaW5kQ29udHJv
bGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBWaXNp
YmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG1fZmluZE1hdGNoZXNbbWF0
Y2hJbmRleF0pOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2VsZWN0aW9uU25hcHNo
b3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFw
c2hvdCgpOworICAgIGF1dG8gc2VsZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqZnJhbWUpLT5jcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpOwogCiAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwogCiAgICAgaWYgKCFzZWxlY3Rp
b25TbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgaGFuZGxlOwotICAgIHNlbGVjdGlvblNuYXBzaG90LT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsK
LQorICAgIGF1dG8gaGFuZGxlID0gc2VsZWN0aW9uU25hcHNob3QtPmNyZWF0ZUhhbmRsZSgpOwog
ICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJbWFnZUZvckZpbmRNYXRjaCho
YW5kbGUsIG1hdGNoSW5kZXgpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goc2VsZWN0aW9uU25hcHNob3QtPnBhcmFt
ZXRlcnMoKSwgaGFuZGxlLCBtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgRmluZENvbnRyb2xsZXI6
OnNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDcxZWQxODgyZmI0MjRkMjFjNjc5
ZDEzYmI3YjUxYjRlYzg0YTE2NWUuLjlhY2VjNjZiZWJkZDViZWQ1MDNmYTM5ZjAxYWE4ZmMxZDQy
ZGFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTg1OSwyNyArODYwLDEzIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNo
aXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkCiB9CiAjZW5kaWYKIAot
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KCkgY29uc3QKK1JlZlB0cjxXZWJJbWFnZT4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNv
cmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQgfSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9KTsKKyAg
ICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2Vi
Q29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQsIFdlYkNvcmU6OlNuYXBzaG90Rmxh
Z3M6OlNoYXJlYWJsZSB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpIH0pOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBzaGFyZWRTbmFwc2hvdCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKHNuYXBzaG90LT5iYWNrZW5kU2l6ZSgpLCB7IH0pOwotICAgIGlmICghc2hhcmVkU25h
cHNob3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBjb25zaWRlciBwcm92aWRpbmcgYSB3YXkgdG8gdXNlIHN1YnBpeGVsIGFudGlhbGlhc2luZyBm
b3IgdGhlIHNuYXBzaG90Ci0gICAgLy8gaWYgd2UncmUgY29tcG9zaXRpbmcgdGhpcyBpbWFnZSBv
bnRvIGEgc29saWQgY29sb3IgKGUuZy4gdGhlIG1vZGVybiBmaW5kIGluZGljYXRvciBzdHlsZSku
Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+cGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoZGV2
aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9hdFBvaW50KCkpOwotCi0gICAgcmV0dXJuIHNo
YXJlZFNuYXBzaG90OworICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90LnJlbGVh
c2VOb25OdWxsKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNmMzYTk0ODZlNDQz
NDJhZmNiNTRkYTc2YTIyY2EzZDAzYzIxNmVjNS4uZDM5ZmIyNWI2YmZhYzM2YWY5YTY3ZmJjNmNl
ZmY0OTFlMDk4ZTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKK2NsYXNzIFdl
YkltYWdlOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IFdl
YnNpdGVQb2xpY2llc0RhdGE7CkBAIC0xODQsNyArMTg1LDcgQEAgcHVibGljOgogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHdlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24sIHZvaWQq
IGNvbnRleHQpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
ZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJJbWFnZT4gY3JlYXRlU2Vs
ZWN0aW9uU25hcHNob3QoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
VHJhbnNhY3Rpb25JRCBmaXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1pdExv
YWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlk
Q29tbWl0TG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBkODkyMmIwOWU1NGFmNTI2MTM2NzI0NWJiMjg2NmE2OGI0ZDRkOTBlLi5kY2Uy
MDg4NWMzZTNmM2VhOWI1YWIyZDFiMzM2NzFlMTc3MWM0NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjYzOSw3ICsyNjM5LDcgQEAgdm9p
ZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0
bWFwU2l6ZSwgdWludDMyX3Qgb3AKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoaW1hZ2UpCi0gICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaGFu
ZGxlID0gaW1hZ2UtPmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CkBAIC0yNzA4LDE0ICsy
NzA4LDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplCiAgICAgfQogfQogCi1zdGF0aWMgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmln
dXJhdGlvbihTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgV2ViUGFnZSYgcGFnZSkKK3N0YXRpYyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc25hcHNob3RDb2xvclNwYWNlKFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zLCBXZWJQYWdlJiBwYWdlKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShDRykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52
aWV3KCkpOworICAgICAgICByZXR1cm4gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIFJlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCkBAIC0yNzI4
LDE0ICsyNzI3LDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0CiAgICAgaWYgKCFmcmFtZVZp
ZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzbmFwc2hvdCA9IFdlYklt
YWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0
aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRpb25zLCAqdGhp
cykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNu
YXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uo
b3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFz
bmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYg
KCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcGFpbnRT
bmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJh
bWVWaWV3LCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBz
bmFwc2hvdC0+Y29udGV4dCgpOworICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFw
U2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsK
IAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KQEAgLTI3NjYsMjcgKzI3NjMsMjYgQEAgUmVmUHRy
PFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25h
cHNob3RPcHRpb25zIG9wdGkKICAgICAgICAgc25hcHNob3RTaXplID0gSW50U2l6ZShzbmFwc2hv
dFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVtSGVpZ2h0KTsKICAgICB9CiAKLSAg
ICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90
T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpLCBzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENv
bmZpZ3VyYXRpb24ob3B0aW9ucywgKnRoaXMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1h
Z2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9w
dGlvbnMpLCBzbmFwc2hvdENvbG9yU3BhY2Uob3B0aW9ucywgKnRoaXMpLCAmbV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNv
bnRleHQoKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2
aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNv
cmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAg
ICAgICAgc2NhbGVGYWN0b3IgLz0gZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgfQogCi0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoLXNuYXBzaG90UmVjdC5sb2NhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQu
c2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNuYXBz
aG90UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIENvbG9yIHNhdmVkQmFja2dyb3VuZENvbG9yID0g
ZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICBmcmFtZVZpZXct
PnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9y
U25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0LCBGcmFtZVZpZXc6OkV4Y2x1
ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJhbWVW
aWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJl
Y3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3Jk
aW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihzYXZlZEJh
Y2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOwpA
QCAtNTY1OSwzNyArNTY1NSwzMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICBB
U1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgogCi0gICAg
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VT
aXplLCB7IH0pOwotICAgICAgICBpZiAoIWJpdG1hcCkgeworICAgICAgICBpbWFnZSA9IFdlYklt
YWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBJbWFnZU9wdGlvbnNTaGFyZWFibGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCAmbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CisgICAgICAg
IGlmICghaW1hZ2UpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH0KLSAgICAgICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwot
ICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KSB7Ci0gICAgICAgICAgICBmbG9hdCBwcmludGlu
Z1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lk
dGgoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUocHJpbnRpbmdTY2FsZSk7
CisKKyAgICAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUu
d2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShw
cmludGluZ1NjYWxlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgIGlmIChSZXRh
aW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0Zy
YW1lKGNvcmVGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcHJpbnRDb250ZXh0
KTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAt
MSkpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKDAsIC1yZWN0
LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBkcmF3UERGRG9jdW1lbnQoZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgcGRmRG9jdW1lbnQuZ2V0KCksIHByaW50SW5mbywgcmVj
dCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7
Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRv
Y3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICBkcmF3UERGRG9jdW1l
bnQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwg
cHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChncmFwaGljc0NvbnRleHQsIHJlY3Qp
OwogICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKLQogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgp
LmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggYmFkNWRlNGYxNTZmNzBmNzM5OWZmNWUyYzI3Yzc5MDFiOTVjNTZlYy4uNjg1YzZm
MGE2NmVmOTVkYTcwMGFjMTk4OGI4NDIyYzgxZTVlYmJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMxMDIsOCArMzEw
Miw4IEBAIHN0YXRpYyB2b2lkIHRleHRJbnRlcmFjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2Vi
UGFnZSYgcGFnZSwgY29uc3QgSFRNTElucHV0RWxlCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBX
ZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUoRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFpbnMgYXQgbW9zdCA2MDBLIHBp
eGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KLSAgICBpZiAoUmVmUHRyPFdlYkltYWdl
PiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFi
bGUsIDYwMCAqIDEwMjQpKQotICAgICAgICByZXR1cm4gJnNuYXBzaG90LT5iaXRtYXAoKTsKKyAg
ICBpZiAoYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShlbGVtZW50LCBTbmFwc2hvdE9wdGlv
bnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQorICAgICAgICByZXR1cm4gc25hcHNob3QtPmJpdG1h
cCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFhNzg5Zjk5ZDg5ZjY3Zjgw
MjE1ZmQxNjYxNTA5Y2UzMzRkYjE4NjEuLmJkNTU4YjI4MmI2NWUxM2U0MjRmYWZkNzI1MjE1ZmM5
NTU1YjA4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTc2LDkgKzU3NiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNldFRv
cE92ZXJoYW5nSW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQogICAgIGlmICghbGF5ZXIpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+Y29weU5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbGF5ZXIt
PnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoMCwgLWltYWdlLT5zaXplKCkuaGVpZ2h0KCkpKTsKLSAgICBsYXllci0+cGxhdGZvcm1MYXll
cigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNv
cHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJp
ZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCkBAIC01OTEsOCAr
NTk1LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSog
aW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
KQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsK
LSAgICBsYXllci0+cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWltYWdl
LT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKKyAgICBsYXllci0+cGxhdGZvcm1M
YXllcigpLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSGVhZGVyQW5kRm9vdGVyTGF5ZXJz
Rm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggM2IwZTAwYWJiMGNlMzIzZDliNmQxYWY3ZDYyMDdh
ODRkM2FmOTFmYi4uMzk1M2U5ZWQ4MzRiOTQ4ZmY5ZTIyZTczMmRhYjA1MjUyMzU1YTZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjIwNSw2ICsyMjA1LDgg
QEAgYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5n
UHVycG9zZSBwdXJwb3NlKQogICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFz
UmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6RE9NOgogICAgIGNhc2UgUmVu
ZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNraW5nOgorICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6
U25hcHNob3Q6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdDoK
ICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZzsKICAgICBjYXNl
IFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmc6CiAgICAgICAgIHJldHVybiBtX3VzZUdQ
VVByb2Nlc3NGb3JNZWRpYTsK
</data>
<flag name="review"
          id="487321"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458484</attachid>
            <date>2022-04-27 18:13:09 -0700</date>
            <delta_ts>2022-04-28 01:22:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239527-20220427181308.patch</filename>
            <type>text/plain</type>
            <size>107333</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4YzVlOTkwN2M3Y2Rl
YjdjMTUzZDNjOGY4MzUzNGZmNTQ5ZmE3ZS4uYTFjNTI2ZjEwNjk3ZjdkODNmY2QwMDk3MDQ4N2Y5
MWU5Y2Y1NjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBXZWJJbWFnZSBiZSBiYWNrZWQgYnkgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUyNworICAgICAgICByZGFyOi8vOTEx
MTM2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEJlZm9y
ZSBlbmFibGluZyBHUFUgUHJvY2VzcyBmb3IgRE9NIHJlbmRlcmluZyB0aGVyZSB3ZXJlIHR3byBt
b2RlcyBmb3IKKyAgICAgICAgcGFnZSBzbmFwc2hvdDogTG9jYWwgYml0bWFwIGFuZCBTaGFyZWFi
bGVCaXRtYXAuIFRoZSBTaGFyZWFibGVCaXRtYXAgaXMKKyAgICAgICAgc2hhcmVkIGJldHdlZW4g
dGhlIFdlYlByb2Nlc3MgYW5kIHRoZSBVSVByb2Nlc3MuIFRoZSBpbWFnZSBpcyBkcmF3biBpbgor
ICAgICAgICBXZWJQcm9jZXNzIGFuZCBpcyBjb25zdW1lZCBieSB0aGUgVUlQcm9jZXNzLgorCisg
ICAgICAgIEFmdGVyIGVuYWJsaW5nIEdQVSBQcm9jZXNzIGZvciBET00gcmVuZGVyaW5nLCBhIG5l
dyBtb2RlIHNob3VsZCBiZSBhZGRlZDoKKyAgICAgICAgUmVtb3RlIFNoYXJlYWJsZUJpdG1hcC4g
SW4gdGhpcyBtb2RlLCB0aGUgZ3JhcGhpY3Mgd2lsbCBiZSByZWNvcmRlZCBpbgorICAgICAgICBX
ZWJQcm9jZXNzLCB0aGUgZHJhd2luZyB3aWxsIGJlIGNvbW1pdHRlZCBpbiBHUFVQcm9jZXNzIGFu
ZCB0aGUgaW1hZ2Ugd2lsbAorICAgICAgICBiZSBjb25zdW1lZCBieSBlaXRoZXIgdGhlIFdlYlBy
b2Nlc3Mgb3IgdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICBUbyBhZGQgdGhpcyBuZXcgbW9kZSwg
dGhlIHNuYXBzaG90IHdpbGwgYmUgZHJhd24gdG8gYW4gSW1hZ2VCdWZmZXIgaW5zdGVhZAorICAg
ICAgICBvZiBhIFNoYXJlYWJsZUJpdG1hcC4gQW5kIFdlYkltYWdlIHdpbGwgYmUgYmFja2VkIGJ5
IGFuIEltYWdlQnVmZmVyIGluc3RlYWQKKyAgICAgICAgb2YgYSBTaGFyZWFibGVCaXRtYXAuCisK
KyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQ2Fpcm9TdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaDoKKwogMjAyMi0wNC0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxu
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gVHJhY2sgaGFuZGxpbmcgZml4ZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMzUyMDZlYWE2ZmJlYzEzNzEyNTkzYTQzMTEzMGZlYzlmOThjNjI4YS4uMmYx
ZDU5YmYwMDVhMTg2MGFiYjkwMGE1NjY2Yzk5NmU1ZTNlZDY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNjggQEAKKzIwMjItMDQtMjcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIFdlYkltYWdlIGJlIGJhY2tlZCBieSBJbWFn
ZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM5NTI3CisgICAgICAgIHJkYXI6Ly85MTExMzYyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgLS0gQWxsb3cgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hh
cmluZyBhbmQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kCisgICAgICAgICAgIHRv
IGNvbXBpbGUgYWx3YXlzLgorCisgICAgICAgIC0tIE1ha2UgV2ViSW1hZ2UgaG9sZCBhbiBJbWFn
ZUJ1ZmZlciBpbnN0ZWFkIG9mIGhhdmluZyBpdCBob2xkIGEgU2hhcmVhYmxlQml0YW1wLgorCisg
ICAgICAgIC0tIFBhc3MgdGhlIENocm9tZUNsaWVudCB0byBXZWJJbWFnZTo6Y3JlYXRlKCkgc28g
aXQgY2FuIGNhbGwgaXRzCisgICAgICAgICAgIGNyZWF0ZUltYWdlQnVmZmVyKCkgd2hpY2ggY3Jl
YXRlcyBSZW1vdGVJbWFnZUJ1ZmZlciBmb3IgR1BVUHJvY2VzcworICAgICAgICAgICBkcmF3aW5n
LgorCisgICAgICAgIC0tIFJlbW92ZSB0aGUgU2hhcmVhYmxlQml0YW1wIGxvY2FsIG1vZGUgd2hl
cmUgaXMgYmFja2VkIGJ5IGEgbG9jYWwgbWVtb3J5CisgICAgICAgICAgIGJ1ZmZlci4gVGhpcyBt
b2RlIHdhcyBhZGRlZCB0byBtYWtlIFdlYkltYWdlIGNhbiBiZSBub24gc2hhcmVhYmxlIGV2ZW4g
CisgICAgICAgICAgIGl0IHdhcyBiYWNrZWQgYnkgU2hhcmVhYmxlQml0YW1wLiBTbyBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSgpCisgICAgICAgICAgIHNob3VsZCBiZSByZW5hbWVk
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKCkuCisKKyAgICAgICAgLS0gUmVwbGFjZSBXZWJJbWFn
ZTo6Yml0bWFwKCk6Om1ha2VDR0ltYWdlQ29weSgpIHdpdGggCisgICAgICAgICAgIFdlYkltYWdl
Ojpjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkKKworICAgICAgICAt
LSBSZXBsYWNlIFdlYkltYWdlOjpiaXRtYXAoKTo6bWFrZUNHSW1hZ2VDb3B5KCkgd2l0aAorICAg
ICAgICAgICBXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkRvbnRDb3B5QmFja2lu
Z1N0b3JlKQorCisgICAgICAgIC0tIFJlcGxhY2UgV2ViSW1hZ2U6OmJpdG1hcCgpOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoKSB3aXRoCisgICAgICAgICAgIFdlYkltYWdlOjpjb250ZXh0KCkKKwor
ICAgICAgICAtLSBBbGxvdyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kIGJ5IGFsbG93aW5nIAorICAgICAgICAgICBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgdG8gYmUgZW5jb2RlZCBhbmQgZGVjb2RlZC4KKworICAgICAgICAtLSBN
YWtlIEltYWdlQnVmZmVyIGJlIGFibGUgdG8gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkuIFRoZSBwb2lu
dGVyIHRvIHRoaXMKKyAgICAgICAgICAgc3VyZmFjZSB3aWxsIGJlIGxlYWtlZC4gQW5kIHRvIG1h
aW50YWluIGEgY29ycmVjdCBsaWZlIGN5Y2xlIGZvciB0aGUgCisgICAgICAgICAgIHN1cmZhY2Ug
ZGF0YSB3aGljaCBpcyBvd25lZCBieSB0aGUgYmFja2VuZCwgdGhlIEltYWdlQnVmZmVyIGl0c2Vs
ZgorICAgICAgICAgICB3aWxsIGJlIHJlZigpIHdoZW4gdGhlIHN1cmZhY2UgUmVmUHRyIGlzIGNy
ZWF0ZWQgYW5kIHdpbGwgYmUgZGVyZWYoKQorICAgICAgICAgICB3aGVuIHRoZSBzdXJmYWNlIHJh
dyBwb2ludGVyIGlzIGRlc3Ryb3llZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmll
ZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3Mvd2MvV0NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldDU2NlbmU6OnVwZGF0ZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpi
aXRtYXBJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tJbWFn
ZS5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZh
Y2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUNH
SW1hZ2UpOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBT
aGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRl
eHRNZW51Q29udGV4dERhdGE6OnNldEltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxl
IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXApOiBEZWxldGVkLgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L1VzZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbWFnZTo6V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpwYXJhbWV0ZXJzIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbWFnZTo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6OmJpdG1hcCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpj
cmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6On5XZWJJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkltYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlOjpiaXRtYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Yml0bWFw
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFw
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVBlcnNp
c3RlbnRDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2ViS2l0V2ViVmlld0RpZFJl
Y2VpdmVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06
CisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
dGFrZVNjcmVlbnNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6Yml0bWFwIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVyZWRJ
bWFnZVdpdGhPcHRpb25zOndpZHRoOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0
Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNv
bnZlcnREcmFnSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51OjpzZXRVcFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwbGF5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgorICAg
ICAgICAoV2ViS2l0OjpzbmFwc2hvdENvbG9yU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0Zvcik6CisKIDIwMjItMDQtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgc2VuZGluZyBhIGZsdXNoIElQQyB0byB0
aGUgR1BVIHByb2Nlc3Mgd2hlbiBkZXN0cm95aW5nIGEgUmVtb3RlSW1hZ2VCdWZmZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggMGI0YjU1NmQ5NzE0ZTBi
YzJhNTZlMDljMGI4Mjk3NzZmZjUwOWU2Ny4uZTA1NWUxMzkxNzMyOGMyOTZmYThkOWNiZThkZjYy
N2VhZDY4NjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgpA
QCAtODEsNyArODEsOCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0
aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGlmICghZnJhbWUu
cGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOworICAgIFJlZiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwor
ICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9u
SW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2Vs
ZWN0aW9uOwogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OkV4
Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpKQpAQCAtMTE0LDkgKzExNSwxMyBAQCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25z
dCBJbnRSZWN0JiBpbWFnZQogICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90
RmxhZ3M6OlBhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBzY2FsZUZhY3Rv
ciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
c2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7Cisg
ICAgYXV0byBwdXJwb3NlID0gb3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpT
aGFyZWFibGUpID8gUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QgOiBSZW5kZXJp
bmdQdXJwb3NlOjpTbmFwc2hvdDsKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSAoZG9jdW1lbnQtPnZp
ZXcoKSAmJiBkb2N1bWVudC0+dmlldygpLT5yb290KCkpID8gZG9jdW1lbnQtPnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworCisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIHB1cnBvc2UsIHNjYWxlRmFjdG9yLCBvcHRp
b25zLmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQsIHsgfSwgeyBob3N0V2luZG93IH0p
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwog
CiAgICAgaWYgKCFjbGlwUmVjdHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3R0aW5nLmgKaW5kZXggZTRiOWQwMDljNzI0MGZiNTg3YjQ5N2ZlMDNmZWYyMmFlM2Jj
OGM3OS4uYmIxYmMyZmZkMDIxNzc3MThhNzdjNTUzNGU2NmJlZDU1MjMyZTY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNs
YXNzIFNuYXBzaG90RmxhZ3MgOiB1aW50OF90IHsKICAgICBQYWludFNlbGVjdGlvbkFuZEJhY2tn
cm91bmRzT25seSA9IDEgPDwgNCwKICAgICBQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24gPSAxIDw8IDUsCiAgICAgUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvciA9IDEgPDwgNiwK
KyAgICBTaGFyZWFibGUgPSAxIDw8IDcsCiB9OwogCiBzdHJ1Y3QgU25hcHNob3RPcHRpb25zIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaAppbmRleCAxY2FjYzhmNjk0NTZkZWMyN2M0MjNmMGFkZGE4MzlmMDVkZTFlY2Y5
Li45ODhkNDA0OTk4YjFjYjY0OWMxYjE4MDY0YjUwMzQxZTA0MDRiNzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2Vu
ZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjcmVhdGlvbkNvbnRleHQpOwogICAgICAgICBpZiAo
IWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5cGUocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICByZXR1cm4g
Y3JlYXRlPEltYWdlQnVmZmVyVHlwZT4ocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSwgc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgpAQCAtNTMsNiArNTMsMTIgQEAgcHVibGljOgogICAgICAgICBhdXRv
IGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwogICAg
ICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZTxJbWFnZUJ1ZmZlclR5cGU+KHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2Vu
ZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIs
IHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlw
ZT4gY3JlYXRlKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKKyAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VCdWZm
ZXJUeXBlKHBhcmFtZXRlcnMsIFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAKQEAgLTI3OCw2ICsyODQsMjYgQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisjaWYgVVNFKENBSVJPKQorICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAg
ICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IAorICAgICAgICBhdXRvIHN1cmZhY2UgPSBiYWNrZW5kLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsK
KworICAgICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgYmVsb3cuCisKKyAgICAgICAg
c3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBkYXRhS2V5OworICAgICAgICBjYWlyb19zdXJm
YWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJmRhdGFLZXksIHRoaXMsIFtdKHZvaWQg
KmJ1ZmZlcikgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlcio+
KGJ1ZmZlciktPmRlcmVmKCk7CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBzdXJmYWNl
OworICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc0luVXNlKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IDRhY2YyMzA4OGE1MzU1ZGM0NTVlZDMzN2NiNDBkNDMzYmYzYWNhMGQuLmNlZmMyMGFjNzIzMjNh
NDM2ODg1ODE0YWNjMGFkZTQxNjI0ZGU3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTU1LDYgKzE1NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYs
IEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0g
MDsKIAorI2lmIFVTRShDQUlSTykKKyAgICB2aXJ0dWFsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiBwcm90
ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMzI1
OGY3MGNhM2U4MGE1ZmM2MTVmZDE0Mjc4ZmE0MDZjMzg2NWE2NC4uZjFmMWRkMTY2MjczYTE5NDc2
MjIzMTdkZWQzMjNiYzBjODBmNGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDExIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lm
IFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CkBAIC05MCw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgICAgICBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2U7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVj
b2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
ckJhY2tlbmQoKTsKQEAgLTEyOCw2ICsxMzYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwg
R0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCisjaWYgVVNFKENBSVJPKQorICAgIHZpcnR1YWwgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
I2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgaXNJblVzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAjaWYgSEFWRShJT1NVUkZBQ0UpCkBAIC0xODMsNiArMTk1LDQ1IEBA
IHByb3RlY3RlZDoKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGxvZ2ljYWxT
aXplOworICAgIGVuY29kZXIgPDwgcmVzb2x1dGlvblNjYWxlOworICAgIGVuY29kZXIgPDwgY29s
b3JTcGFjZTsKKyAgICBlbmNvZGVyIDw8IHBpeGVsRm9ybWF0OworICAgIGVuY29kZXIgPDwgcHVy
cG9zZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IGxvZ2ljYWxTaXplOworICAgIGRlY29kZXIgPj4gbG9naWNhbFNpemU7CisgICAgaWYgKCFs
b2dpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IHJlc29sdXRpb25TY2FsZTsKKyAgICBkZWNvZGVyID4+IHJlc29sdXRpb25T
Y2FsZTsKKyAgICBpZiAoIXJlc29sdXRpb25TY2FsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsRm9y
bWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAgIGlmICgh
cGl4ZWxGb3JtYXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1B1cnBvc2U+IHB1cnBvc2U7CisgICAgZGVjb2RlciA+PiBwdXJwb3Nl
OworICAgIGlmICghcHVycG9zZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHJldHVybiB7IHsgKmxvZ2ljYWxTaXplLCAqcmVzb2x1dGlvblNjYWxlLCAqY29sb3JTcGFjZSwg
KnBpeGVsRm9ybWF0LCAqcHVycG9zZSB9IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggYTIxNmIwZWQxNWY3M2U2MzgxNmNjY2YwZTY2ZTZhZDBh
OTA5MWQyMC4uNGJiZDE3OTQ3MjUzYTE5MGEyZTc1NzU4OTMzNTI5ZTc3MzQ4OTY3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2
ICszMiw4IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3QgewogICAgIENh
bnZhcywKICAgICBET00sCiAgICAgTGF5ZXJCYWNraW5nLAorICAgIFNuYXBzaG90LAorICAgIFNo
YXJlYWJsZVNuYXBzaG90LAogICAgIE1lZGlhUGFpbnRpbmcKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGVhMDQ5YTk5NTMyMTdjNjNi
YmU3ZDQxM2NkYTdkYWE5NzI2MjIwZjEuLjY5Y2I3ODU4OGRkZGRmYWExNzRlMWU5M2M0YmU4ODdk
MzE5M2M3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtODksNiArODksMTEgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBSZWZQ
dHIgeyBtX3N1cmZhY2UuZ2V0KCkgfTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25z
dAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiNmI1NmQ4NjZiZGYwY2U3MzZjN2Nm
ZTBiMTNhYWI1NWEyNmQ5OGNkLi45OWJiYzVmMjRmNmQzMGFlNjBmZDI2ZGFmNDYwYTY3MWQxNmFh
MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAt
NDQsNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAorICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpIG92ZXJyaWRlOworCiAgICAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJG
b3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMTI1
OTk4ZmY1NWNkZTAyM2RkODcyOTNlMmVhYjI0ZmQ2ODRkN2RmYS4uZDVmYTE1M2FjMmFiNWZlMzIz
NDdhZDQyMzg3N2UxNTMzYzA3ZDJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0
bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsK
ICAgICAgICAgYXV0byByZXN1bHRTaXplID0gcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzID8gYmFja2VuZFNpemUgOiBpbWFnZUJ1ZmZlci0+dHJ1bmNhdGVkTG9n
aWNhbFNpemUoKTsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShyZXN1bHRTaXplLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7Cisg
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocmVzdWx0U2l6ZSwg
eyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldEZpbHRlcmVkSW1hZ2VGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZQogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZVNpemUpLCB7IGltYWdl
QnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZVNpemUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNw
YWNlKCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCmluZGV4
IDdlMjI1ODIyNDhiNzI1NmRmZTk1MjVlZGY3OWIzOTAxYjFhYWVkZTYuLjdhMTY2N2Y3YTEyM2Iz
ODY1OTgyMjk4OGNjYzgxMTNhYTBkNTVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3Mvd2MvV0NTY2VuZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGQ6Om9w
dGlvbmFsPFVwZGF0ZUluZm8+IFdDU2NlbmU6OnVwZGF0ZShXQ1VwYXRlSW5mbyYmIHVwZGF0ZSkK
IAogICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gcmVzdWx0OwogICAgIGlmIChtX3VzZXNP
ZmZzY3JlZW5SZW5kZXJpbmcpIHsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZSh3aW5kb3dTaXplLCB7IH0pOworICAgICAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHdpbmRvd1NpemUsIHsgfSk7CiAgICAgICAgIGds
UmVhZFBpeGVscygwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCks
IEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBiaXRtYXAtPmRhdGEoKSk7CiAgICAgICAg
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYgKGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGYyMTA5NmFhYWNkMGQ5ZjdjMDA2ZTk4ZjczMTFhNDc5MmYwNGM3YTMuLmQxNTA4ZDUyZjA5N2Nj
NjEyNGY5YzEyOTk5ZGU3MGY3MWExMTM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpiaXRtYXBJbWFnZUZvckN1cnJlbnRUaW1lCiAgICAgICAg
IHJldHVybiB7IH07CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7Ci0gICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUs
IHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgcGxheWVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tJbWFnZS5jcHAKaW5kZXggMzFiNmRhZWI4MzhmY2EzY2JlNjViZTNiNzA5NjkxOWY1YzAy
MDBhNy4uMTE2M2FmM2JiODg0Yzc5YWI0MGQzZDM4NmM1Y2RjZWNmNTAxODFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgV0tUeXBlSUQg
V0tJbWFnZUdldFR5cGVJRCh2b2lkKQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGUoV0tTaXpl
IHNpemUsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgYXV0byB3ZWJJbWFnZSA9IFdl
YktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShXZWJLaXQ6OnRvSW50U2l6ZShzaXplKSwgV2ViS2l0Ojp0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2Vi
SW1hZ2U6OmNyZWF0ZShXZWJLaXQ6OnRvSW50U2l6ZShzaXplKSwgV2ViS2l0Ojp0b0ltYWdlT3B0
aW9ucyhvcHRpb25zKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCBjOGNjNWFh
OGZjYjk0ODIwYmRkZDc5NTY1MzFmMTZmMjE0Mjg2N2NkLi42Mjk0YzZjZWM2YTFmZDhiMGUwMGVl
MDU0MzllYjRiOGY4NzhkNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKQEAgLTM2LDE2ICszNiwxNiBAQAogY2Fpcm9fc3VyZmFj
ZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAg
ICAgLy8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdl
IGp1c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpbWFn
ZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVm
KCk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFdlYkNv
cmU6OkludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZh
Y2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1dG8g
d2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRv
SW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYklt
YWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBhdXRvIHdlYkltYWdl
ID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0
aW9ucyhvcHRpb25zKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwor
ICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5jb250ZXh0KCk7CiAKLSAgICBj
YWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Cisg
ICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7
CiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKICAgICBj
YWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgY2Fpcm9f
cmVjdGFuZ2xlKGNyLCAwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGYy
ZDMzMzQ3OGMyYWRiOWEzMTU2MGFmZTJjMGM4MDI0MTM0MGM1YWUuLjc3MTg2ZmNmMzcxNWQ1ZGY2
OGI1ZjkwYjZkZWRmN2E1MzVlN2Q2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSwxMiBAQCBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVD
R0ltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiAgICAgaWYgKCF3ZWJJbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0lt
YWdlQ29weSgpLmxlYWtSZWYoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gd2ViSW1hZ2UtPmNv
cHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1h
Z2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMpCkBAIC01MSwxNiArNTYsMTQgQEAgV0tJbWFnZVJlZiBXS0ltYWdl
Q3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0
aW9ucykKICAgICAKICAgICBhdXRvIG5hdGl2ZUltYWdlID0gV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OmNyZWF0ZShpbWFnZVJlZik7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUgPSBuYXRp
dmVJbWFnZS0+c2l6ZSgpOwotICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBh
dXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2ViS2l0
Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFw
KCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHdlYklt
YWdlLT5jb250ZXh0KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpG
bG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwotICAgIAotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKCpu
YXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKKworICAgIGdyYXBoaWNzQ29udGV4
dC5jbGVhclJlY3QocmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
bmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdl
YkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXggMDQwMzYyMDAwZjVmMzVkNGNiNTY3MmY1YzdmNzZh
YWExODIxNzYwNS4uZmU5MTVkMTc4NzAxYzk0YjdmNGU2Y2NlNWI2ZjViNTgzYjE5ZDk4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0
RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIHZvaWQgQ29udGV4dE1lbnVD
b250ZXh0RGF0YTo6c2V0SW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogewogICAgIC8vIEZJ
WE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdHJhdGVneSBmb3IgU2hhcmVhYmxlQml0bWFw
LgotICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgeyB9KTsKKyAgICBtX2NvbnRyb2xsZWRJbWFnZSA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIHsgfSk7CiAg
ICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0YWEz
ZTVkODkyYTg4M2QwN2M4Zjg1MzgzNjk4MDlkYTcwYmZmYzljLi5iMzIzNzhkNzE1NjZmZWMzNjU5
MDJlMWJlZjk4ZjQ5ODNiMjZlZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXIKIHsK
IH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUo
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0
Q0YoV0tDR0NvbW1hbmRzQ29udGV4dENvcHlFbmNvZGVkRGF0YShtX2NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpKSk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMmVhNDM2OTgyNWI3NzJlODEwZDIwMDUwMzgyZWU4MDNl
Y2NlODBjOS4uZjQ1ZGZlMzRkMTE3ZDE0YzE2YzJhMDAzN2EyMmJmMTYwY2U4NjJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IGZpbmFsOwogICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsK
LSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0
IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxl
KFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE5PVEU6IFRoZXNlIGFsbCBBU1NFUlRfTk9U
X1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJ
bWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9y
ZSkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApp
bmRleCAyN2U4MjBlMjNjZjg4YTFiZjU4YWY5OGZjNWMwZmMyYTg1ZGVmODMzLi5lNGRlYWQ1Zjg5
MzhjZTE2YzY4Y2NjMGUyZDIwOWNmNTNkODAyNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTksMjAgKzk5LDYgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24K
IH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQotewotICAgIHZh
bGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKLSAgICBhdXRvIG51bUJ5dGVzID0g
bnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRpb24pOwotICAgIGlmIChudW1CeXRlcy5o
YXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgdm9pZCogZGF0
YSA9IDA7Ci0gICAgZGF0YSA9IFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6dHJ5TWFsbG9jKG51bUJ5
dGVzKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGNvbmZpZ3VyYXRpb24sIGRhdGEp
KTsKLX0KLQotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KQogewogICAgIHZhbGlkYXRlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKICAgICBhdXRv
IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGNvbmZpZ3VyYXRpb24pOwpAQCAtMTIz
LDEzICsxMDksMTEgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ28KICAgICBpZiAoIXNoYXJlZE1l
bW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRNZW1vcnkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9u
LCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOwogfQogCi1SZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUmVmPFNoYXJlZE1l
bW9yeT4mJiBzaGFyZWRNZW1vcnkpCiB7Ci0gICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7Ci0KICAg
ICB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgYXV0byBudW1CeXRl
cyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBjb25maWd1cmF0aW9uKTsKICAgICBpZiAobnVtQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtMTM5LDcgKzEyMyw3IEBAIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZp
Z3VyYXRpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBjb25maWd1cmF0aW9uLCBzaGFyZWRN
ZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBj
b25maWd1cmF0aW9uLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKIH0KIAogUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpAQCAtMTQ4LDEzICsxMzIsMTEg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3Qg
SGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW8KICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhh
bmRsZS5tX2NvbmZpZ3VyYXRpb24sIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgcmV0dXJu
IGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9jb25maWd1cmF0aW9uLCBzaGFyZWRNZW1v
cnkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVI
YW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9u
KSBjb25zdAogewotICAgIEFTU0VSVChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwotCiAgICAg
aWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVj
dGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9zaXpl
OwpAQCAtMTYyLDM0ICsxNDQsMTYgQEAgYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRs
ZShIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCB2b2lkKiBkYXRhKQotICAg
IDogbV9zaXplKHNpemUpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKLSAg
ICAsIG1fZGF0YShkYXRhKQotewotfQotCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1h
cChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxl
Qml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwg
UmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAg
ICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQotICAgICwgbV9zaGFyZWRNZW1vcnko
c2hhcmVkTWVtb3J5KQotICAgICwgbV9kYXRhKG51bGxwdHIpCisgICAgLCBtX3NoYXJlZE1lbW9y
eShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6flNoYXJl
YWJsZUJpdG1hcCgpCi17Ci0gICAgaWYgKCFpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAg
ICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZShtX2RhdGEpOwotfQotCiB2b2lkKiBTaGFy
ZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAogewotICAgIGlmIChpc0JhY2tlZEJ5U2hhcmVkTWVt
b3J5KCkpCi0gICAgICAgIHJldHVybiBtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpOwotCi0gICAgQVNT
RVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YTsKKyAgICByZXR1cm4gbV9zaGFyZWRNZW1v
cnktPmRhdGEoKTsKIH0KIAogQ2hlY2tlZFVpbnQzMiBTaGFyZWFibGVCaXRtYXA6Om51bUJ5dGVz
Rm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKaW5kZXggNGEwNzQwMDE3MzVkZjg2NGY0ZjRiZTFmOWU3NjU1MjQwM2VjM2Y1NC4uOTZh
MWM3ODJmMTU4ZTRhZGM5MTI1ODgwNDM5MWMyZTdhZWRmMjIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxNCArNzksMTEgQEAgcHVibGljOgogICAgIHN0
YXRpYyBDaGVja2VkVWludDMyIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUs
IGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKICAgICBzdGF0aWMgQ2hlY2tlZFVpbnQzMiBjYWxjdWxh
dGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKIAotICAgIC8vIENyZWF0ZSBh
IHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b25maWd1cmF0aW9uKTsKLQogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgd2hvc2Ug
YmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJlZCB3aXRoIGFub3RoZXIgcHJvY2Vzcy4KLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsK
IAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJlYWR5IGV4aXN0
aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRy
PFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZjxTaGFyZWRNZW1v
cnk+JiYpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGEgaGFuZGxl
LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxl
JiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkV3JpdGUpOwpAQCAtOTQsMTEgKzkxLDEyIEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBo
YW5kbGUuCiAgICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpIGNvbnN0OwogCi0g
ICAgflNoYXJlYWJsZUJpdG1hcCgpOwotCiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRz
KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBz
aXplKCkpOyB9CiAKKyAgICB2b2lkKiBkYXRhKCkgY29uc3Q7CisgICAgc2l6ZV90IGJ5dGVzUGVy
Um93KCkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9zaXplLCBtX2NvbmZp
Z3VyYXRpb24pOyB9CisKICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2Fu
IGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
IApAQCAtMTA2LDggKzEwNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlKTsKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZSk7CiAKLSAgICBi
b29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1lbW9y
eTsgfQotCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgYml0bWFwIGltYWdlIHRoYXQgZGlyZWN0bHkg
cmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBz
YWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJs
ZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY3JlYXRl
SW1hZ2UoKTsKQEAgLTEyNCwxNCArMTIwLDE0IEBAIHB1YmxpYzoKICNlbGlmIFVTRShDQUlSTykK
ICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5j
ZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1
c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFw
IHdvbid0IGNoYW5nZS4KKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVQZXJzaXN0
ZW50Q2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fp
cm9TdXJmYWNlKCk7CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRm
b3JtSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25m
aWd1cmF0aW9uLCB2b2lkKik7Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgU2hhcmVh
YmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWY8U2hh
cmVkTWVtb3J5PiYmKTsKIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZikgY29uc3Q7CkBAIC0xNDMsMTEgKzEzOSw2
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5
cGVsZXNzQml0bWFwKTsKICNlbmRpZgogCi1wdWJsaWM6Ci0gICAgdm9pZCogZGF0YSgpIGNvbnN0
OwotICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVz
UGVyUm93KG1fc2l6ZSwgbV9jb25maWd1cmF0aW9uKTsgfQotICAgIAotcHJpdmF0ZToKICAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXpl
LCBtX2NvbmZpZ3VyYXRpb24pOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKQEAg
LTE1NywxMSArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVsZWFzZUJpdG1hcENvbnRl
eHREYXRhQ2FsbGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgLy8gSWYgdGhlIHNoYXJlYWJs
ZSBiaXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBz
aGFyZWQgbWVtb3J5IG9iamVjdC4KLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1l
bW9yeTsKLQotICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBmYXN0
TWFsbG9jZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgZGF0YS4KLSAgICB2b2lkKiBtX2Rh
dGEgeyBudWxscHRyIH07CisgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAppbmRl
eCBlMTk0MDczNzI4Njg1MmQwMjNhYTlhYTE5MTRhY2QwMGQzMjYxYTc1Li5iMWU5MWY0NjhjMzAw
MGRlNmY3NGJkN2YxMjU3N2NhMTEzNjFhNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIxMSw5ICsyMTEsOCBAQCB2b2lkIFVzZXJEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KQogICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5
cGU6OkltYWdlOiB7CiAgICAgICAgIGF1dG8mIGltYWdlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
SW1hZ2UmPihvYmplY3QpOwogCi0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKLSAgICAgICAgQVNTRVJUKGltYWdlLmJpdG1hcCgpLmlzQmFja2VkQnlTaGFyZWRNZW1vcnko
KSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgp
IHx8ICFpbWFnZS5iaXRtYXAoKS5jcmVhdGVIYW5kbGUoaGFuZGxlKSkgeworICAgICAgICBhdXRv
IGhhbmRsZSA9IGltYWdlLmNyZWF0ZUhhbmRsZSgpOworICAgICAgICBpZiAoaGFuZGxlLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0
ZWQgYml0bWFwIG9yIGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjEsNiArMjIwLDcgQEAgdm9pZCBVc2VyRGF0
YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQVBJOjpPYmplY3QmIG9iamVj
dCkKIAogICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5kaWNhdGVzIGEgYml0bWFwIHdhcyBhbGxv
Y2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KICAgICAgICAgZW5jb2RlciA8PCB0cnVlOworICAgICAg
ICBlbmNvZGVyIDw8IGltYWdlLnBhcmFtZXRlcnMoKTsKICAgICAgICAgZW5jb2RlciA8PCBoYW5k
bGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM5MCwxNSArMzkwLDE2IEBAIGJvb2wgVXNl
ckRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxBUEk6Ok9iamVjdD4m
IHJlc3VsdCkKICAgICAgICAgaWYgKCFkaWRFbmNvZGUpCiAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgICAgIGRlY29kZXIg
Pj4gcGFyYW1ldGVyczsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlKTsKLSAgICAgICAgaWYgKCFiaXRtYXApCisgICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXN1bHQgPSBXZWJJbWFn
ZTo6Y3JlYXRlKCpwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGY3NDhiZGYzNzM2MTgwODNlYWRjOTViZjhhNmJiMzJiNjM3YjBiYWQuLjZhYTBl
Yzg0ZmE2MTQxZWU5ODVjY2NlYTIzMTQ0OTc2ZGYxMDk2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxNyw3ICsxMDE3LDcgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgeyB9KTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAgICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDJl
ZmUyNjA3Mjc3YTRiOGFkZjJmODA3NzA3ZmQ3NzMxZWQyMmU1NzQuLmI3NDhhYWIwMDBjYjJhM2Vm
MDdlZmM2MWRmZmZjM2Y1ZWM3MDg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcyLDYgKzg3Miw4IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZT4gewogICAgICAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsCiAgICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U6OkRPTSwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6TGF5ZXJCYWNr
aW5nLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdCwKKyAgICAg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNob3QsCiAgICAgICAg
IFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcKICAgICA+OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkltYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkltYWdlLmNwcAppbmRleCA5OWM5NTNjZmMyMjgyZTdhZTdlMzViMzVkYjBj
MWU0MTg1MjJjMDU4Li44NTdmNmY3MmMyNDhiZjBkNjk1ZjAwYTgxMjBlNTRlZjZlMWEzN2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSW1hZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQ1ICsyNiwxMTcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWVDbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaD4KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFdlYkltYWdlPiBX
ZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25z
KQorUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUs
IEltYWdlT3B0aW9ucyBvcHRpb25zLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIENocm9tZUNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBXZWJJbWFnZTo6Y3Jl
YXRlKHNpemUsIG9wdGlvbnMsIHsgfSk7Ci19CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBh
dXRvIHB1cnBvc2UgPSAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJsZSkgPyBSZW5kZXJp
bmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCA6IFJlbmRlcmluZ1B1cnBvc2U6OlNuYXBzaG90
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IGNsaWVudC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcHVycG9zZSwgMSwgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
biBXZWJJbWFnZTo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CiAKLVJl
ZlB0cjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplLCBJbWFnZU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uJiBiaXRtYXBDb25maWd1cmF0aW9uKQotewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VP
cHRpb25zU2hhcmVhYmxlKSB7Ci0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIGlm
ICghYml0bWFwKQorICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRlKHNpemUsIDEsIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVyaW5nUHVycG9zZTo6U2hhcmVhYmxlU25hcHNo
b3QsIHsgfSk7CisgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQorCisgICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlNu
YXBzaG90LCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0
ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK1JlZlB0cjxXZWJJbWFnZT4gV2ViSW1h
Z2U6OmNyZWF0ZShjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYgaGFuZGxlKQoreworICAgIGF1dG8gYmFja2Vu
ZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMs
IFdURk1vdmUoaGFuZGxlKSk7CisgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgCisgICAgYXV0byBidWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJh
Y2tlbmQpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1S
ZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRt
YXApCitSZWY8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJpdG1h
cCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbWFnZShXVEZNb3ZlKGJ1ZmZlcikp
KTsKIH0KIAotV2ViSW1hZ2U6OldlYkltYWdlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFw
KQotICAgIDogbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQorV2ViSW1hZ2U6OldlYkltYWdlKFJl
ZjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
CiB7CiB9CiAKLVdlYkltYWdlOjp+V2ViSW1hZ2UoKQorSW50U2l6ZSBXZWJJbWFnZTo6c2l6ZSgp
IGNvbnN0CiB7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwogfQogCi1jb25z
dCBJbnRTaXplJiBXZWJJbWFnZTo6c2l6ZSgpIGNvbnN0Citjb25zdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmIFdlYkltYWdlOjpwYXJhbWV0ZXJzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9iaXRtYXAtPnNpemUoKTsKKyAgICByZXR1cm4gbV9idWZmZXItPnBhcmFtZXRlcnMoKTsK
K30KKworR3JhcGhpY3NDb250ZXh0JiBXZWJJbWFnZTo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fYnVmZmVyLT5jb250ZXh0KCk7Cit9CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4gV2Vi
SW1hZ2U6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXItPmNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3Ip
OworfQorCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJJbWFnZTo6Yml0bWFwKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBiYWNrZW5kID0gbV9idWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7
CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0
X2Nhc3Q8SW1hZ2VCdWZmZXImPigqbV9idWZmZXIucHRyKCkpLmZsdXNoRHJhd2luZ0NvbnRleHQo
KTsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7Cisg
ICAgaWYgKCFpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOworfQorCisjaWYgVVNFKENB
SVJPKQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gV2ViSW1hZ2U6OmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKK30KKyNl
bmRpZgorCitTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBXZWJJbWFnZTo6Y3JlYXRlSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKSBjb25zdAoreworICAgIGF1dG8qIGJh
Y2tlbmQgPSBtX2J1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tl
bmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjb25zdF9jYXN0PEltYWdlQnVmZmVyJj4o
Km1fYnVmZmVyLnB0cigpKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisKKyAgICBhdXRvKiBzaGFy
aW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmICghaXM8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGJhY2tlbmRIYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZShwcm90ZWN0aW9uKTsKKwor
ICAgIGlmIChhdXRvIGhhbmRsZSA9IHN0ZDo6Z2V0X2lmPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
PigmYmFja2VuZEhhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpoYW5kbGUpOworCisg
ICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SW1hZ2UuaAppbmRleCAyMmYzODZmOWQyOWE1ZGY1NzQzOGZiYWI0NzhiYmY4NmZlMWNkMTA1Li41
Yjc5MTA2ZWU5ZDMyNDczNjA0OGYxNDZjMTFiZmU4ZjUyM2I4MjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2
ZUltYWdlOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDIwICs0NSwyNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW1hZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpJbWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7
Ci0gICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFyZWFibGVCaXRtYXA+JiYp
OwotICAgIH5XZWJJbWFnZSgpOwotICAgIAotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIEltYWdlT3B0aW9ucywgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlJiwgV2ViQ29yZTo6Q2hyb21lQ2xpZW50KiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkltYWdlPiBjcmVhdGUoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKIAotICAg
IFNoYXJlYWJsZUJpdG1hcCYgYml0bWFwKCkgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KLSAg
ICBjb25zdCBTaGFyZWFibGVCaXRtYXAmIGJpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0bWFw
LmdldCgpOyB9CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29u
c3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKKyAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAoKSBjb25zdDsKKyNpZiBVU0UoQ0FJUk8p
CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisjZW5k
aWYKKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNyZWF0ZUhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgV2ViSW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7Cisg
ICAgV2ViSW1hZ2UoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKIAotICAgIFJlZjxTaGFy
ZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCA5N2I1ZTYzZjE1
YTgzMWZlNGVlMDVhMWFlYjMyODdjYzBiZDcxOWY5Li5lOTZkYTkxMzhkMWIyZDg5NmQwOTAwOGEz
Y2IzYjczNjM3NGEzNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9T
aGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC04MSw2ICs4MSwxMSBAQCB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rv
ciwgY29uc3QgSQogICAgIENhaXJvOjpkcmF3U3VyZmFjZSgqY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHN0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoKSwgc3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
UGVyc2lzdGVudENhaXJvU3VyZmFjZSgpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN1cmZhY2VGcm9t
RGF0YShkYXRhKCksIG1fc2l6ZSk7Cit9CisKIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBpbWFnZSA9IGNyZWF0ZVN1cmZhY2VGcm9tRGF0YShkYXRhKCksIG1fc2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCBi
ZjNkZDA2MDNmNWY3YjI4ZGMxNGExNzI0ZDgwMDMxYTFlZmFiM2Q5Li4wNDVkZWJiODExZGQzODUz
MTc2NzcyNGE0NGY1MTZhOWQ1MDlmMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgSW1h
Z2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgeyB9KTsK
KyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShJbnRTaXplKGltYWdlLnNpemUoKSksIHsgfSk7CiAgICAgYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZWQ5YTk2MGY1YThkZTZiYmNkZjMw
ZmU4OWUxYTFmMGM0MTFhOTEzZi4uNDg0MjM5MTY1YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2
NWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKQEAgLTQzODAsNyArNDM4MCw3IEBAIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJl
Y2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lE
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFz
ay5nZXQoKSwgd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYo
KSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oY2Fpcm9fc3VyZmFjZV9kZXN0cm95
KSk7CisgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIHdlYkltYWdlLT5jcmVh
dGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3Rp
Znk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKFdlYktpdFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQppbmRleCAyMDczOWU1YWRiMGI3N2FmZWIzMTA1ODFlYjk2ZDdlM2E3
ODAyYjcwLi4yYjE4ZTk5Mjc0ZDMyNzhjY2MyMjg2MTU2MjViMzNlYmM1ZGFhMTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpA
QCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqCiAgICAgcmVzdWx0UmVj
dC5zZXRMb2NhdGlvbih7IH0pOwogCiAgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1h
cENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzM2QwOWRmYzI4YmI0NmYyOGRjYTQ2MmMxYTU1
NjhkN2M4OGRmYzcxLi5hZmNkNWQ1YjQ3ZmY5YTQ3M2Q2NzU2NjY3M2M5Mzk1NzhhYTE1NDlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY5MDAsMTQgKzY5
MDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3UKICAgICBtX2ZpbmRDbGllbnQtPmRpZENv
dW50U3RyaW5nTWF0Y2hlcyh0aGlzLCBzdHJpbmcsIG1hdGNoQ291bnQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNv
bnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnRlbnRJbWFnZUhhbmRsZSk7Ci0gICAgaWYg
KCFiaXRtYXApIHsKKyAgICBhdXRvIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBXVEZNb3ZlKGNvbnRlbnRJbWFnZUhhbmRsZSkpOworICAgIGlmICghaW1hZ2UpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9m
aW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSwgbWF0Y2hJbmRleCk7Cisg
ICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdCh0aGlzLCBp
bWFnZS5nZXQoKSwgbWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0
SW5kaWNhdG9yKGNvbnN0IFRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRf
dCBsaWZldGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzkz
NTM5OTc2M2IwMjVlNDJlZDc0MWQ3YWVhODQzZmE0ZDNjYTEzZi4uMzBjNTY1YzJmYTc2Y2JiODAz
YmNkNTA2MGRiOGFiODNmMThkNTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEltYWdlRm9y
RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2go
aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3Qg
bWF0Y2hJbmRleCk7Ci0gICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaElu
ZGV4KTsKKyAgICB2b2lkIGRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0IFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYsIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGNv
bnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmlu
ZFVJKCk7CiAgICAgdm9pZCBoaWRlRmluZEluZGljYXRvcigpOwogICAgIHZvaWQgY291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUyNzZkM2UyZjc2NDA5ODZjMzhmZWM0OWQzZGM5OWIxYmFl
ZGFmYTAuLjQ1NTY0ZGI5M2RiODkzMTFlZWI4M2Y4YjU0ZjMzMDY1ZjkyMmI5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0
Miw3ICsyNDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZEZpbmRTdHJp
bmcoU3RyaW5nIHN0cmluZywgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1hdGNoUmVjdCwgdWlu
dDMyX3QgbWF0Y2hDb3VudCwgaW50MzJfdCBtYXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQp
CiAgICAgRGlkRmFpbFRvRmluZFN0cmluZyhTdHJpbmcgc3RyaW5nKQogICAgIERpZEZpbmRTdHJp
bmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+
IG1hdGNoZXMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKQotICAgIERpZEdldElt
YWdlRm9yRmluZE1hdGNoKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgY29udGVudElt
YWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KQorICAgIERpZEdldEltYWdlRm9yRmluZE1h
dGNoKHN0cnVjdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgcGFyYW1l
dGVycywgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUs
IHVpbnQzMl90IG1hdGNoSW5kZXgpCiAKICAgICAjIFBvcHVwTWVudSBtZXNzYWdlcwogICAgIFNo
b3dQb3B1cE1lbnUoV2ViQ29yZTo6SW50UmVjdCByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9u
LCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5k
ZXgsIHN0cnVjdCBXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSBkYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNzIw
NzVmYmM4NjJjMzRkMGM4NmI0YWM1MzhlNGM0NjY5OWNiZWU0Mi4uZGZhNjYzNjc4OGU5OTU5YWEz
NDZhOGJmNzU1MTk2NDAxY2M2MjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5NCwxMSArMjk0LDE1IEBAIC0gKHZvaWQpZGlk
R2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2ViS2l0OjpXZWJJbWFnZSAqKWltYWdlCiAgICAgaWYg
KF9pbWFnZVJlcGx5Q2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V2ViQ29yZTo6SW50U2l6ZSBzaXplID0gaW1hZ2UtPmJpdG1hcCgpLnNpemUoKTsKKyAgICBhdXRv
IHNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgIHNpemUuc2NhbGUoMSAvIF9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlO
YXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbWFnZUNhbGxiYWNrID0gX2lt
YWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgaW1hZ2VDYWxsYmFjayhhZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJ
bWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKKyAgICBpbWFnZUNhbGxiYWNrKGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdL
VGV4dEZpbmRlck1hdGNoIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cAppbmRleCA3YWI2N2EzNDM3YTI4YTE5YmQ2NmU0NTU3YzNiNDc0NTZjMWUyMTE1Li40OWRhY2Q2
M2I1ZWI3ZTAxZmNhMzc1ODA1MzhmZTRkMmViNjdiMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcApAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpbWFnZS0+Yml0bWFw
KCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CisgICAgICAgIGhhbmRsZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKaW5kZXggYmY4YTQ3MDM4NWZj
YTc0MGQ0NDM3NTZlYWE3ZjRkN2ZjNzlkMjY1Ni4uNmVjNTY4ZDA2ZGIyOGVkNDA2MzFlMjc1MDJh
NTAwYWQyODdkMTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAj
aW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDUgKzQzLDMgQEAgdXNpbmcgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlID0gc3RkOjp2YXJpYW50PAogPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlU2hhcmluZy5oCmluZGV4IDU4MDIyOGFmODVmNzUzZTU4YmRmNWVmYzFkMDdkMWE2
YWYwMzYzZmIuLmNkMmU5ZTNlMTRiOTgxMDY0ZTViODkwM2ViNDlmZDFmZDg5MmY2ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVy
QmFja2VuZC5oPgogCkBAIC0zNCw3ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIDogcHVibGljIFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZFNoYXJpbmcgewogcHVibGljOgotICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tlbmRIYW5k
bGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNC
YWNrZW5kSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUyLDUgKzUxLDMgQEAg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRV9CVUZG
RVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
ZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkpCi0KLSNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAKaW5kZXggYTExNzA3MjQ5MGU1YzdhNzk1NGZiYmU3OGY3MGY3OTM2ZWRjMmVk
MS4uN2FlMTVhMGZlMDcwYzgzMTBlNTdlZmM4M2VmMGJlMzM3NTUxMDdiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaCIKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlci5oPgpAQCAtODUsNyArODMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhYwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7
CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNrZW5kU2l6ZSwg
Y29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC05Myw3ICs5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4ocGFyYW1ldGVy
cywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KHBhcmFtZXRlcnMsIGJpdG1h
cC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGNvbnRleHQpKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKQEAgLTExMSwxMCArMTA5LDEwIEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFjCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4ocGFyYW1ldGVycywgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+
KHBhcmFtZXRlcnMsIGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGNvbnRleHQpKTsK
IH0KIAotSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
JiYgY29udGV4dCkKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJl
ZjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiYmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChwYXJhbWV0
ZXJzKQogICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQogICAgICwgbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCkBAIC0xMjYsMTAgKzEyNCwxMCBAQCBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQ
YXJhbQogICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihyZXNvbHV0aW9uU2Nh
bGUoKSk7CiB9CiAKLUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQmFj
a2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikgY29uc3QKIHsK
ICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgbV9iaXRtYXAtPmNyZWF0
ZUhhbmRsZShoYW5kbGUpOworICAgIG1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBwcm90
ZWN0aW9uKTsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFu
ZGxlKSk7CiB9CiAKQEAgLTE0Myw2ICsxNDEsMTMgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIG1fYml0
bWFwLT5ieXRlc1BlclJvdygpOwogfQogCisjaWYgVVNFKENBSVJPKQorUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVDYWlyb1N1
cmZhY2UoKQoreworICAgIHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlUGVyc2lzdGVudENhaXJvU3Vy
ZmFjZSgpOworfQorI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKIHsKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxh
dGZvcm1JbWFnZSgpKTsKQEAgLTE2NCw1ICsxNjksMyBAQCB2b2lkIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVs
QgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmlu
ZGV4IDIxZGQwZDg3NTBhZGUzMzI2N2QwOGU4ODA3MWQ1ZDVjZDMzMDg0YmYuLmY1OTgyMjU3YmJh
MTgxODk2MTg4M2JmYjIwOGNmOGM1YTI2MmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgIkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgpAQCAtNDMs
NiArNDEsNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1
ZmZlckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKTsKKwogcHVibGljOgogICAgIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIFdlYkNv
cmU6OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsK
QEAgLTUyLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkNyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKLSAg
ICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+JiYpOworICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9jb250ZXh0OyB9Ci0gICAgCiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisK
KyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9iaXRtYXAucHRyKCk7IH0KKyNpZiBVU0UoQ0FJUk8pCisgICAgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCkgZmluYWw7CisjZW5kaWYK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBm
aW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNr
aW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2Vy
dmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmlu
YWw7CkBAIC02NiwxNiArNjksMTUgQEAgcHVibGljOgogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRPd25lcnNo
aXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKSB7IH0KKwogcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZpbmFsOwogCiAgICAgSW1hZ2VC
dWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRo
aXM7IH0KICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSBmaW5hbCB7IC8qIERvIG5v
dGhpbmcuIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgSU9TdXJmYWNlIGJhY2tlbmRzICovIH0K
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIFJlZjxTaGFyZWFi
bGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCmluZGV4IDI1YjVhNDU1ODI1MGVlMDYwNTZjODQzYTE3YzEzODE5NjE2OWYzYTcuLjE2ZmE2
YjJhMDBhYjkxYzgxODk2YTQ3ZGNmNThhYmM1ZDQ3MTc0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0
aXYKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKIAotICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2Uuc2l6ZSgpLCB7IGlt
YWdlLmNvbG9yU3BhY2UoKSB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGltYWdlLnNpemUoKSwgeyBpbWFnZS5jb2xvclNwYWNlKCkgfSk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNDAxMWNhOGVh
OTkzZjNlZmE0N2ZiZThiZTY2NWM3OTlhMjc5Zjk4YS4uZWFlNmY3OTVlZDNmOTI0NjQyYzRkODQ5
YjlhOThhOWE3Njk3NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZShTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMDk0MWJmZGE3ZWUwNThjOThmMDM1MjJkM2FlNzNjOTU3
NGFjOTkyOC4uMjBkOGM2MGUxMTM1NmU4YjJlMDdkNTg5YjBkMzk2ZjJmMjQxMjQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgZmluYWw7Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
QmFja2VuZEhhbmRsZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuY3BwCmluZGV4IGUwM2E0MGJmODI0NTkzNzM2MjU3NmYyZjU4OTQ0NzI0Nzg2ZTNkZDcuLjhl
NjJkMDI0MGJkYWRmYmQ1NTJjYTlkYzc0Y2NhNDcwNjUzNDQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5k
bGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQuaAppbmRleCBiZGJjZDk4ZjM3ZWE5NDk4ZDA3NGFmODY3MDg3NGI4MTgx
YzI0ODg4Li5iMTQ0MjZlN2Y0MmQ3ZGE1MDViZmZhZmFmMTRhMTczYWYyMTBkNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5Jik7CiAKLSAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZp
bmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbWFnZUJ1ZmZlckJhY2tlbmRT
aGFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUubW0KaW5kZXggMjgxZDg2N2QxMjY0NjJlZTZhMWJkNmUyNzJmYzIwYjI2YmQ1
MDllMC4uMDIxZDcwZmYzYTAzYjQ2ZDdlZDc1NjkwNjM1NGMwZmFiNWM3MmI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02OSwxNCArNjksMTggQEAgLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
czooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW0KICAgICBpZiAod2lkdGgp
CiAgICAgICAgIG9wdGlvbmFsV2lkdGggPSB3aWR0aC5mbG9hdFZhbHVlOwogCi0gICAgUmVmUHRy
PFdlYktpdDo6V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2UoV2Vi
S2l0Ojp0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVPdmVyZmxvdywgb3B0aW9uYWxXaWR0aCk7CisgICAgYXV0byBpbWFnZSA9IF9u
b2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKFdlYktpdDo6dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9u
cyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3csIG9wdGlvbmFs
V2lkdGgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpEb250Q29weUJh
Y2tpbmdTdG9yZSk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KwogI2lmIFVTRShBUFBLSVQpCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpO
U1plcm9TaXplXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
IHNpemU6TlNaZXJvU2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBhZG9w
dE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtl
Q0dJbWFnZSgpLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggNzVlZjdjMmY1YzIyZjYwODExYjgwNzNh
Y2Q3MzY2MTMxYjY3ZjJlZC4uMmRjNThkZWQxNzM1ODI1NGYwN2E0YmEyODZmY2QzYTgwYzQzYWY1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE2NywxOCArMTY3LDE2IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChG
cmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgaWYgKGJpdG1h
cFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc25h
cHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1h
Z2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0
ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+
Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRl
eHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9
IHNuYXBzaG90LT5jb250ZXh0KCk7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2NhbGUoYml0bWFwU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJh
bnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNs
ZWFyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpKTsKKyAgICBncmFwaGljc0Nv
bnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsKKyAgICBncmFwaGljc0NvbnRl
eHQudHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRpb24oKSk7CiAKICAgICBGcmFtZVZpZXc6
OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24gPSBGcmFtZVZpZXc6Oklu
Y2x1ZGVTZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRl
U2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQpAQCAtMTkyLDcgKzE5MCw3IEBAIHN0YXRpYyBSZWZQdHI8
V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVj
dCYgcGFpbnRpCiAKICAgICBhdXRvIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50
QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlv
cik7Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgcGFpbnRpbmdSZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3
OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JT
bmFwc2hvdChncmFwaGljc0NvbnRleHQsIHBhaW50aW5nUmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rp
b24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAgICAgZnJhbWVWaWV3LT5zZXRQ
YWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggOTc1
MjlmYzFhYzM5MjI5MzVkOTk1YzJmYzVjYWQ5NGIxYmI2NTJmMi4uZDJiYmFmMThiNzMwZjM2Yzhk
ZDI3MmFmYTM0MmJiMjk2NzNjNzAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM5LDIwICsxMzksMTcgQEAgUmVmUHRyPFdl
YkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90
T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBwYWludFJlY3Qu
c2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAg
YXV0byBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNr
aW5nU3RvcmVTaXplLCB7IH0pOwotICAgIGlmICghYmFja2luZ1N0b3JlKQorICAgIGF1dG8gc25h
cHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUsIHNuYXBzaG90T3B0aW9u
c1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMgfCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJhY2tpbmdTdG9y
ZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShzY2Fs
ZUZhY3Rvcik7CisgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmNvbnRleHQo
KTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOwogCiAgICAgcGFpbnRS
ZWN0Lm1vdmUoZnJhbWVWaWV3LT5mcmFtZVJlY3QoKS54KCksIGZyYW1lVmlldy0+ZnJhbWVSZWN0
KCkueSgpKTsKICAgICBwYWludFJlY3QubW92ZUJ5KC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9u
KCkpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlv
bigpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24o
KSk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZy
YW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBw
YWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvcjsKQEAgLTE2NSwxMiArMTYyLDEyIEBAIFJl
ZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShT
bmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBh
aW50QmVoYXZpb3IpOwogICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKIAotICAgIGZyYW1l
Vmlldy0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0KTsKKyAgICBmcmFtZVZpZXct
PnBhaW50KGdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0KTsKICAgICBmcmFtZVZpZXctPnNldFBh
aW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CiAKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0
ZShiYWNraW5nU3RvcmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIHNuYXBzaG90Owog
fQogCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6dGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGRmOGU1NWRmMWYw
YWU4MzYwM2ZhOGRkM2E5MWEwZWZhZDM4NWFiN2UuLjdjNTFjZWFmN2ExNjM2MDkzYzdiMzQwYzgy
Yjk3Y2ZlZDY1NDE1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE3MiwxNCArMTcyLDEzIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0OjppbWFnZSgpIGNvbnN0CiAKICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1h
Z2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKICAgICBJbnRTaXplIHNpemUoYml0
bWFwSW1hZ2Uuc2l6ZSgpKTsKLSAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShz
aXplLCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDApKTsKLQotICAgIC8vIEZJWE1FOiBuZWVk
IHRvIGhhbmRsZSBFWElGIHJvdGF0aW9uLgotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2Vi
SW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0KQorICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHNpemUsIHN0
YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKKyAgICBpZiAoIXdlYkltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGJpdG1hcEltYWdlLCB7eyB9LCBzaXplfSk7CisgICAg
Ly8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIEVYSUYgcm90YXRpb24uCisgICAgYXV0byYgZ3JhcGhp
Y3NDb250ZXh0ID0gd2ViSW1hZ2UtPmNvbnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlKGJpdG1hcEltYWdlLCB7IHsgfSwgc2l6ZSB9KTsKIAogICAgIHJldHVybiB3ZWJJbWFn
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCmluZGV4IDBhZmMwMTcyYzliM2M4ZTI3OTY1ODU5ODNjNTU1Y2ZiMjJhZWM5YmIuLmIx
NTc5YTIwZDRkOGZkMjJiNWU4MDE4NmFiYjE5OTM1NGIyNGQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTk5Miw3ICsx
OTkyLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAg
ICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNp
emUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplLCB7
IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRv
IGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hh
cmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAppbmRleCAxMjAyNjNkNjVkNjFmNTkxZTVmMWY2N2Zk
NGZlOGJmNTNlZmZjMzMwLi44MzFmMThiNDY0MGU1ODBiMzdhNDE1OTI1MDVmZWZhZGEwMGE5Y2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hh
cmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcApAQCAtNTksNyArNTks
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVy
SW1hZ2UmIHJlbmRlckltYWdlLCBDcmVhdGVTaAogICAgICAgICBpZiAoIXNuYXBzaG90SW1hZ2Up
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3RSZWN0LnNpemUoKSwgeyBXVEZNb3Zl
KGNvbG9yU3BhY2VGb3JCaXRtYXApIH0pOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90UmVjdC5zaXplKCksIHsgV1RGTW92ZShjb2xvclNwYWNl
Rm9yQml0bWFwKSB9KTsKICAgICAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNo
YXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAgICAg
IGlmIChpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDEgfHwgaW1h
Z2VTaXplLmhlaWdodCgpIDw9IDEpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXpl
LCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CisgICAgICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VTaXplLCB7IFdURk1vdmUoY29sb3JTcGFj
ZUZvckJpdG1hcCkgfSk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0
ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIENyZWF0ZVNoCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtu
b3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIHsgV1RGTW92ZShj
b2xvclNwYWNlRm9yQml0bWFwKSB9KTsKKyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoYml0bWFwU2l6ZSksIHsgV1RGTW92ZShjb2xvclNwYWNl
Rm9yQml0bWFwKSB9KTsKICAgICBpZiAoIXNoYXJlZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkMzFmNDI1YjhkMTNkODdlMWJhNGQxNjQ0
MTRhYzEyNWE0NjNhNjBmLi4xM2RiODdiYzZlYTVkMjVmZDYxZWU2OTU0ZTJiZGY3NjlhOGI2OTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZp
bmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIkhh
bmdEZXRlY3Rpb25EaXNhYmxlci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIk5hdmln
YXRpb25BY3Rpb25EYXRhLmgiCkBAIC02Nyw2ICs2OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNo
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50UnVsZUxp
c3RSZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgpAQCAtOTQxLDggKzk0Mywx
MiBAQCBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXZWJDaHJvbWVDbGll
bnQ6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhYwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5n
UHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IocHVycG9zZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKSB7
CisgICAgICAgIGlmIChwdXJwb3NlICE9IFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBz
aG90KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENvbmNy
ZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPjo6Y3JlYXRl
KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBS
ZW5kZXJpbmdQdXJwb3NlOjpTaGFyZWFibGVTbmFwc2hvdCwgeyB9KTsKKyAgICB9CiAKICAgICBy
ZXR1cm4gbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKaW5kZXggNWU1Y2VmZjcwMWM5ZTRhZTFkOGJlM2U1ODE0MGU4ZGIxNDNmYzQ1Ni4uZWIyYTY4
ZDM1NTA5NmJhMmUwYzdmNmJhMzkwNzM1YWI0ODZmM2FhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdD
bGllbnRHdGsuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzdXJmYWNlKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNz
Q29udGV4dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCmluZGV4IGUxZTBlNjExMmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQuLmIxNDM1
OGMyY2MyOTYwNGE1MDI2NTI4MWM4ZDIxNTI0NmVkODIwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFnZVJl
ZjsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VUb0Jp
dG1hcChEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkK
IHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNp
emUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOworICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSwgeyBzY3JlZW5Db2xv
clNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKaW5k
ZXggZWUwNzEzZjAyYTg3N2MwYjc2NDNkNjI5MmVjNTk4NmRkMjRkM2M3Yy4uN2EwNjM2ZDRkNDkz
YTk1ZTJkNDRhZGViYTRiNjUxYzI3OGUwZGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2lu
LmNwcApAQCAtNzYsOCArNzYsOCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURh
dGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogICAgIGludCBi
YWNraW5nU3RvcmVXaWR0aCA9IHN0ZDo6bWF4KHBhZ2VDb29yZGluYXRlcy53aWR0aCgpIC0gbV9w
b3B1cENsaWVudC0+Y2xpZW50SW5zZXRMZWZ0KCkgLSBtX3BvcHVwQ2xpZW50LT5jbGllbnRJbnNl
dFJpZ2h0KCksIHBvcHVwV2lkdGgpOwogCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplKGJh
Y2tpbmdTdG9yZVdpZHRoLCAoaXRlbUNvdW50ICogZGF0YS5tX2l0ZW1IZWlnaHQpKTsKLSAgICBk
YXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwotICAgIGRhdGEubV9zZWxlY3RlZEJhY2tp
bmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNp
emUsIHsgfSk7CisgICAgZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBkYXRhLm1fc2VsZWN0
ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShiYWNraW5nU3RvcmVTaXpl
LCB7IH0pOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbm90U2VsZWN0
ZWRCYWNraW5nU3RvcmVDb250ZXh0ID0gZGF0YS5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiBzZWxlY3RlZEJhY2tpbmdTdG9yZUNvbnRleHQgPSBkYXRhLm1fc2VsZWN0ZWRCYWNraW5n
U3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4
IGY5YTExYzY1Mjg4ODhiMTMyYzcyMDdhOGYzYTVkYmJjOTU4M2QyN2IuLjhkNzFjMGE5NWNhOGJm
MTY4MmQ5MTYyNDQ5ZmEzZjFhZjUxOTY0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTgy
MCw3ICs4MjAsNyBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGxh
eShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5k
cy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNj
YWxlRmFjdG9yKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAppbmRleCAxZDY0M2I2YjQyODhkMDhlMDM4YzQ2MjVkMDU0OWRlNjhhZjJh
YTc3Li43ZTVkZGRlZGViZWFiODA2ODI0Mjk4ZGRhOTdlZmZjYzQwYzdjNjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
Lmg+CkBAIC0zMTgsMjAgKzMxOSwxOCBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZv
ckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIFZpc2libGVTZWxlY3Rpb24gb2xk
U2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzZWxlY3Rpb25TbmFwc2hvdCA9IFdlYkZyYW1lOjpm
cm9tQ29yZUZyYW1lKCpmcmFtZSktPmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCk7CisgICAgYXV0
byBzZWxlY3Rpb25TbmFwc2hvdCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSktPmNy
ZWF0ZVNlbGVjdGlvblNuYXBzaG90KCk7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7CiAKICAgICBpZiAoIXNlbGVjdGlvblNuYXBzaG90KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAg
c2VsZWN0aW9uU25hcHNob3QtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwotCisgICAgYXV0byBoYW5k
bGUgPSBzZWxlY3Rpb25TbmFwc2hvdC0+Y3JlYXRlSGFuZGxlKCk7CiAgICAgaWYgKGhhbmRsZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEdldEltYWdlRm9yRmluZE1hdGNoKGhhbmRsZSwgbWF0Y2hJbmRl
eCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRHZXRJ
bWFnZUZvckZpbmRNYXRjaChzZWxlY3Rpb25TbmFwc2hvdC0+cGFyYW1ldGVycygpLCBoYW5kbGUs
IG1hdGNoSW5kZXgpKTsKIH0KIAogdm9pZCBGaW5kQ29udHJvbGxlcjo6c2VsZWN0RmluZE1hdGNo
KHVpbnQzMl90IG1hdGNoSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggNzFlZDE4ODJmYjQyNGQyMWM2NzlkMTNiYjdiNTFiNGVjODRh
MTY1ZS4uOWFjZWM2NmJlYmRkNWJlZDUwM2ZhMzlmMDFhYThmYzFkNDJkYWMyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtODU5LDI3ICs4NjAsMTMg
QEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmls
dGVyRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAorUmVmUHRy
PFdlYkltYWdlPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewot
ICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIHsgeyBX
ZWJDb3JlOjpTbmFwc2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4dCB9LCBQaXhlbEZvcm1hdDo6QkdS
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0pOworICAgIGF1dG8gc25hcHNob3Qg
PSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIHsgeyBXZWJDb3JlOjpTbmFwc2hvdEZs
YWdzOjpGb3JjZUJsYWNrVGV4dCwgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6U2hhcmVhYmxlIH0s
IFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CiAg
ICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNo
YXJlZFNuYXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3Qt
PmJhY2tlbmRTaXplKCksIHsgfSk7Ci0gICAgaWYgKCFzaGFyZWRTbmFwc2hvdCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHByb3Zp
ZGluZyBhIHdheSB0byB1c2Ugc3VicGl4ZWwgYW50aWFsaWFzaW5nIGZvciB0aGUgc25hcHNob3QK
LSAgICAvLyBpZiB3ZSdyZSBjb21wb3NpdGluZyB0aGlzIGltYWdlIG9udG8gYSBzb2xpZCBjb2xv
ciAoZS5nLiB0aGUgbW9kZXJuIGZpbmQgaW5kaWNhdG9yIHN0eWxlKS4KLSAgICBhdXRvIGdyYXBo
aWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAg
ICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNjYWxl
RmFjdG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShz
bmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7Ci0KLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3Q7Cisg
ICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3QucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA2YzNhOTQ4NmU0NDM0MmFmY2I1NGRhNzZhMjJj
YTNkMDNjMjE2ZWM1Li5kMzlmYjI1YjZiZmFjMzZhZjlhNjdmYmM2Y2VmZjQ5MWUwOThlNzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw2
ICs2Myw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOworY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBX
ZWJQYWdlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0
YTsKQEAgLTE4NCw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAjZW5k
aWYKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgp
IGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlvbklEIGZp
cnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4OTIy
YjA5ZTU0YWY1MjYxMzY3MjQ1YmIyODY2YTY4YjRkNGQ5MGUuLmRjZTIwODg1YzNlM2YzZWE5YjVh
YjJkMWIzMzY3MWUxNzcxYzQ0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjM5LDcgKzI2MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnRha2VT
bmFwc2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJf
dCBvcAogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChpbWFn
ZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBoYW5kbGUgPSBpbWFnZS0+Y3Jl
YXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KQEAgLTI3MDgsMTQgKzI3MDgsMTMgQEAgdm9pZCBX
ZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIGJpdG1hcFNpemUKICAgICB9CiB9CiAKLXN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb24gc25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKFNuYXBzaG90
T3B0aW9ucyBvcHRpb25zLCBXZWJQYWdlJiBwYWdlKQorc3RhdGljIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBzbmFwc2hvdENvbG9yU3BhY2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIFdlYlBhZ2Um
IHBhZ2UpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b247CiAjaWYgVVNFKENHKQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2Ny
ZWVuQ29sb3JTcGFjZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVu
Q29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAg
IHJldHVybiBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpKTsKICNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdl
OjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRt
YXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKQEAgLTI3MjgsMTQgKzI3MjcsMTIgQEAg
UmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRt
YXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSwgc25hcHNob3RP
cHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKG9wdGlvbnMsICp0aGlzKSk7CisgICAgYXV0byBz
bmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9J
bWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyks
ICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5i
aXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBwYWludFNuYXBzaG90QXRTaXplKHJl
Y3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsICpncmFwaGlj
c0NvbnRleHQpOworICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5jb250ZXh0
KCk7CisgICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAq
Y29yZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0NvbnRleHQpOwogCiAgICAgcmV0dXJuIHNu
YXBzaG90OwogfQpAQCAtMjc2NiwyNyArMjc2MywyNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBh
Z2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0
aQogICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICog
c2NhbGVGYWN0b3IsIG1heGltdW1IZWlnaHQpOwogICAgIH0KIAotICAgIGF1dG8gc25hcHNob3Qg
PSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9w
dGlvbnMob3B0aW9ucyksIHNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbihvcHRp
b25zLCAqdGhpcykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBz
aG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucyksIHNuYXBzaG90
Q29sb3JTcGFjZShvcHRpb25zLCAqdGhpcyksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsK
ICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Y29udGV4dCgpOwogCiAgICAg
aWYgKCEob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3Rvcikp
IHsKICAgICAgICAgZG91YmxlIGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxl
RmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBzY2FsZUZhY3Rv
ciAvPSBkZXZpY2VTY2FsZUZhY3RvcjsKICAgICB9CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnNj
YWxlKHNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNo
b3RSZWN0LmxvY2F0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShzY2FsZUZhY3Rv
cik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9u
KCkpOwogCiAgICAgQ29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKTsKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygm
bm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhp
Y3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJh
bWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpF
eGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAg
ZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsK
ICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CkBAIC01NjU5LDM3ICs1NjU1
LDMzIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgICAgIEFTU0VSVChjb3JlRnJhbWUt
PmRvY3VtZW50KCktPnByaW50aW5nKCkpOwogI2VuZGlmCiAKLSAgICAgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7Ci0gICAg
ICAgIGlmICghYml0bWFwKSB7CisgICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFn
ZVNpemUsIEltYWdlT3B0aW9uc1NoYXJlYWJsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksICZtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgewog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgIGlmIChncmFw
aGljc0NvbnRleHQpIHsKLSAgICAgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oaW1hZ2VTaXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShwcmludGluZ1NjYWxlKTsKKworICAgICAgICBhdXRv
JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOworICAgICAgICBmbG9hdCBwcmlu
dGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qu
d2lkdGgoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHByaW50aW5nU2NhbGUpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVu
dD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkg
ewotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wcmludENvbnRleHQpOwotICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwotICAg
ICAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKLSAgICAgICAgICAg
IH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9wcmludENv
bnRleHQtPnNwb29sUmVjdCgqZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1
bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgeworICAgICAgICAgICAgQVNTRVJUKCFt
X3ByaW50Q29udGV4dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRT
aXplKDEsIC0xKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1y
ZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3Qp
OworICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBtX3ByaW50
Q29udGV4dC0+c3Bvb2xSZWN0KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KLQot
ICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIH0KICNlbmRpZgogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwot
CiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGhhbmRs
ZSA9IGltYWdlLT5jcmVhdGVIYW5kbGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiYWQ1ZGU0
ZjE1NmY3MGY3Mzk5ZmY1ZTJjMjdjNzkwMWI5NWM1NmVjLi42ODVjNmYwYTY2ZWY5NWRhNzAwYWMx
OTg4Yjg0MjJjODFlNWViYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzEwMiw4ICszMTAyLDggQEAgc3RhdGljIHZv
aWQgdGV4dEludGVyYWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25z
dCBIVE1MSW5wdXRFbGUKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2U6OnNoYXJlYWJs
ZUJpdG1hcFNuYXBzaG90Rm9yTm9kZShFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSBpbWFnZSBjb250YWlucyBhdCBtb3N0IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0
IGlzIG5vdCB0b28gYmlnLgotICAgIGlmIChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25h
cHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkp
Ci0gICAgICAgIHJldHVybiAmc25hcHNob3QtPmJpdG1hcCgpOworICAgIGlmIChhdXRvIHNuYXBz
aG90ID0gc25hcHNob3ROb2RlKGVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAw
ICogMTAyNCkpCisgICAgICAgIHJldHVybiBzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMWE3ODlmOTlkODlmNjdmODAyMTVmZDE2NjE1MDljZTMz
NGRiMTg2MS4uYmQ1NThiMjgyYjY1ZTEzZTQyNGZhZmQ3MjUyMTVmYzk1NTViMDg1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NzYsOSArNTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZShX
ZWJJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+
c2l6ZSgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNp
emUoKS5oZWlnaHQoKSkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAo
X19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAg
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21P
dmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKQEAgLTU5MSw4ICs1OTUsMTIgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFdlYkltYWdlKiBpbWFnZSkKICAgICBpZiAo
IWxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
PmNvcHlOYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VD
R0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMg
PSAoX19icmlkZ2UgaWQpbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjp1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXllcnNGb3JEZXZpY2VTY2FsZUNo
YW5nZShmbG9hdCBzY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCAzYjBlMDBhYmIwY2UzMjNkOWI2ZDFhZjdkNjIwN2E4NGQzYWY5MWZiLi4zOTUz
ZTllZDgzNGI5NDhmZjllMjJlNzMyZGFiMDUyNTIzNTVhNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjA1LDYgKzIyMDUsOCBAQCBib29sIFdlYlByb2Nl
c3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2Up
CiAgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmc7CiAgICAg
Y2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpET006CiAgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpM
YXllckJhY2tpbmc6CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpTbmFwc2hvdDoKKyAgICBj
YXNlIFJlbmRlcmluZ1B1cnBvc2U6OlNoYXJlYWJsZVNuYXBzaG90OgogICAgICAgICByZXR1cm4g
bV91c2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nOwogICAgIGNhc2UgUmVuZGVyaW5nUHVycG9z
ZTo6TWVkaWFQYWludGluZzoKICAgICAgICAgcmV0dXJuIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlh
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>