<?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>171977</bug_id>
          
          <creation_ts>2017-05-11 09:44:13 -0700</creation_ts>
          <short_desc>Stop using PassRefPtr in platform/graphics</short_desc>
          <delta_ts>2017-05-11 19:58:05 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307292</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 09:44:13 -0700</bug_when>
    <thetext>Stop using PassRefPtr in platform/graphics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307397</commentid>
    <comment_count>1</comment_count>
      <attachid>309753</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 12:37:50 -0700</bug_when>
    <thetext>Created attachment 309753
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307399</commentid>
    <comment_count>2</comment_count>
      <attachid>309755</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 12:53:33 -0700</bug_when>
    <thetext>Created attachment 309755
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307402</commentid>
    <comment_count>3</comment_count>
      <attachid>309757</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:01:35 -0700</bug_when>
    <thetext>Created attachment 309757
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307410</commentid>
    <comment_count>4</comment_count>
      <attachid>309760</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:12:14 -0700</bug_when>
    <thetext>Created attachment 309760
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307414</commentid>
    <comment_count>5</comment_count>
      <attachid>309762</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:25:40 -0700</bug_when>
    <thetext>Created attachment 309762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307421</commentid>
    <comment_count>6</comment_count>
      <attachid>309765</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:31:55 -0700</bug_when>
    <thetext>Created attachment 309765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307432</commentid>
    <comment_count>7</comment_count>
      <attachid>309771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:47:32 -0700</bug_when>
    <thetext>Created attachment 309771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307443</commentid>
    <comment_count>8</comment_count>
      <attachid>309777</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 13:59:47 -0700</bug_when>
    <thetext>Created attachment 309777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307493</commentid>
    <comment_count>9</comment_count>
      <attachid>309791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 14:57:49 -0700</bug_when>
    <thetext>Created attachment 309791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307496</commentid>
    <comment_count>10</comment_count>
      <attachid>309777</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 15:04:22 -0700</bug_when>
    <thetext>Comment on attachment 309777
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:182
&gt;          ASSERT_NOT_REACHED();
&gt; -        return nullptr;
&gt; +        return *static_cast&lt;FilterOperation*&gt;(nullptr);

This looks gross.  It should return a RefPtr or RELEASE_ASSERT_NOT_REACHED().  We shouldn&apos;t have to check a valid Ref for a nullptr.

&gt; Source/WebCore/rendering/RenderLayer.cpp:3717
&gt;      if (renderer().document().deviceScaleFactor() &gt;= 2) {
&gt; -        static NeverDestroyed&lt;Image*&gt; resizeCornerImageHiRes(Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef());
&gt; +        static NeverDestroyed&lt;Image*&gt; resizeCornerImageHiRes(&amp;Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef());

Don&apos;t we have 3x resources now?  Maybe we should update this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307497</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 15:06:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Comment on attachment 309777 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309777&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:182
&gt; &gt;          ASSERT_NOT_REACHED();
&gt; &gt; -        return nullptr;
&gt; &gt; +        return *static_cast&lt;FilterOperation*&gt;(nullptr);
&gt; 
&gt; This looks gross.  It should return a RefPtr or
&gt; RELEASE_ASSERT_NOT_REACHED().  We shouldn&apos;t have to check a valid Ref for a
&gt; nullptr.

Sure, I do not mind making it a release assertion. It is going to crash on the next line anyway.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:3717
&gt; &gt;      if (renderer().document().deviceScaleFactor() &gt;= 2) {
&gt; &gt; -        static NeverDestroyed&lt;Image*&gt; resizeCornerImageHiRes(Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef());
&gt; &gt; +        static NeverDestroyed&lt;Image*&gt; resizeCornerImageHiRes(&amp;Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef());
&gt; 
&gt; Don&apos;t we have 3x resources now?  Maybe we should update this.

Seems out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307498</commentid>
    <comment_count>12</comment_count>
      <attachid>309793</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 15:07:26 -0700</bug_when>
    <thetext>Created attachment 309793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307508</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 15:29:56 -0700</bug_when>
    <thetext>&gt; &gt; Don&apos;t we have 3x resources now?  Maybe we should update this.
&gt; 
&gt; Seems out of scope.

Definitely out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307512</commentid>
    <comment_count>14</comment_count>
      <attachid>309793</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-11 15:31:17 -0700</bug_when>
    <thetext>Comment on attachment 309793
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:182
&gt; +        return *static_cast&lt;FilterOperation*&gt;(nullptr);

I would prefer dereferencing this.  Dereferencing nullptr feels really bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307521</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 15:38:08 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; Comment on attachment 309793 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309793&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:182
&gt; &gt; +        return *static_cast&lt;FilterOperation*&gt;(nullptr);
&gt; 
&gt; I would prefer dereferencing this.  Dereferencing nullptr feels really bad.

If I return |this|, then I would need to const_cast it. Note that dereferencing nullptr is the pattern used here already:
Ref&lt;Node&gt; ShadowRoot::cloneNodeInternal(Document&amp;, CloningOperation)
{
    RELEASE_ASSERT_NOT_REACHED();
    return *static_cast&lt;Node*&gt;(nullptr); // ShadowRoots should never be cloned.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307579</commentid>
    <comment_count>16</comment_count>
      <attachid>309793</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-11 16:38:18 -0700</bug_when>
    <thetext>Comment on attachment 309793
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:182
&gt;&gt;&gt; +        return *static_cast&lt;FilterOperation*&gt;(nullptr);
&gt;&gt; 
&gt;&gt; I would prefer dereferencing this.  Dereferencing nullptr feels really bad.
&gt; 
&gt; If I return |this|, then I would need to const_cast it. Note that dereferencing nullptr is the pattern used here already:
&gt; Ref&lt;Node&gt; ShadowRoot::cloneNodeInternal(Document&amp;, CloningOperation)
&gt; {
&gt;     RELEASE_ASSERT_NOT_REACHED();
&gt;     return *static_cast&lt;Node*&gt;(nullptr); // ShadowRoots should never be cloned.
&gt; }

Yeah, I think returning casted nullptr is fine.
clang would be eliminating this code anyway due to reachability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307583</commentid>
    <comment_count>17</comment_count>
      <attachid>309793</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 16:40:19 -0700</bug_when>
    <thetext>Comment on attachment 309793
Patch

Clearing flags on attachment: 309793

Committed r216702: &lt;http://trac.webkit.org/changeset/216702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307584</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 16:40:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307716</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-05-11 19:58:05 -0700</bug_when>
    <thetext>Committed r216722: &lt;http://trac.webkit.org/changeset/216722&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309753</attachid>
            <date>2017-05-11 12:37:50 -0700</date>
            <delta_ts>2017-05-11 12:53:33 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>171977_PassRefPtr_graphics_wip.patch</filename>
            <type>text/plain</type>
            <size>139861</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZm
Li5mOTBmN2Q5NTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBJbWFnZSogQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgYXV0byog
Y2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVlLCBjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFnZSB8fCAh
Y2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAg
ICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBmcm9tSW1hZ2UgPSBj
YWNoZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKICAgICBhdXRvKiB0
b0ltYWdlID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpOwogCiAg
ICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgbV9n
ZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21JbWFn
ZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShy
ZW5kZXJlciksIHNpemUpOwogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDE1YzNjYWY4Njlj
Li43MzU2Y2U1ODRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcApAQCAtMTIwLDE3ICsxMjAsMTcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZh
dWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAg
IC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0
MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgogICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIGF1dG8g
aW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2VS
ZWN0KGltYWdlUmVjdCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRlclJlZ2lvbihpbWFn
ZVJlY3QpOwogICAgIGlmICghZmlsdGVyUmVuZGVyZXItPmJ1aWxkKCpyZW5kZXJlciwgbV9maWx0
ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogICAgIGZpbHRl
clJlbmRlcmVyLT5hcHBseSgpOwogCiAgICAgcmV0dXJuIGZpbHRlclJlbmRlcmVyLT5vdXRwdXQo
KS0+Y29weUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiMGFkZjA1ZDFlZC4uNzliODA4NjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWEuLmVjMTBjZDVmZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBp
bWFnCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVy
bCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRl
eCAzY2M3NzBjNzY4MC4uM2QwNTI2NGZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9hZGVk
IHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgpIHx8
IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1fZnJvbUlt
YWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigpID09ICZJ
bWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1ZDRhOS4u
ZDQ3NzFhOTY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGIyMGJjMTIw
OTBhLi5jNDcwNzQ2NDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTUwNyw3ICs1MDcsNiBAQCBwdWJsaWM6CiAgICAg
SERDIGhkYygpIGNvbnN0OwogI2lmIFBMQVRGT1JNKFdJTikKICNpZiBVU0UoV0lOR0RJKQotICAg
IHZvaWQgc2V0Qml0bWFwKFBhc3NSZWZQdHI8U2hhcmVkQml0bWFwPik7CiAgICAgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBBZmZpbmVUcmFuc2Zv
cm0mIGFmZmluZVRyYW5zZm9ybSgpOwogICAgIHZvaWQgcmVzZXRBZmZpbmVUcmFuc2Zvcm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA1M2EyMmFh
Njg0MS4uZTg1M2JmZWJlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsKIH0KIAotSW1h
Z2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2UoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxsSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVsbEltYWdlOwor
ICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApp
bmRleCBkZjlmMDQyNmY2ZS4uNzA2NDMwM2IyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMu
aCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAt
NzksOCArNzgsNyBAQCBjbGFzcyBJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2U+IGxvYWRQ
bGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4LDcgKzk2LDcg
QEAgcHVibGljOgogICAgIC8vIHRoZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBmcm9t
IGl0cyBvd24gc2VjdXJpdHkgb3JpZ2luLgogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJ
bWFnZSYgbnVsbEltYWdlKCk7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBzaXpl
KCkuaXNFbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZShjb25z
dCBGbG9hdFNpemUmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAppbmRleCA2NDliNjg2N2Q0MC4uNTUwM2Q3YTE3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEy
NTEsNyArMTI1MSw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKQorUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVyKCkK
IHsKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggNTQ2NmUyMjJkMDcuLjQ3MmQ3NTY5YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1MjgsNyBAQCBwdWJsaWM6
CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7CisgICAgUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFj
a1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHAKaW5kZXggYTlhY2NjMjg0NjguLjI1MWUwNzY2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVmUHRy
PEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBhdHRl
cm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKHRpbGVJ
bWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhdHRl
cm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CiAKLVBhdHRlcm46
OlBhdHRlcm4oUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBl
YXRZKQotICAgIDogbV90aWxlSW1hZ2UoaW1hZ2UpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxJbWFn
ZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCisgICAgOiBtX3RpbGVJbWFn
ZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcmVwZWF0WChyZXBlYXRYKQogICAgICwgbV9yZXBl
YXRZKHJlcGVhdFkpCiB7Ci0gICAgQVNTRVJUKG1fdGlsZUltYWdlKTsKIH0KIAogUGF0dGVybjo6
flBhdHRlcm4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmlu
ZGV4IDI1NmZhMmQ1ZmI0Li40ODM4NmZhZGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0ZXJu
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9vbCBy
ZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJl
ZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICAgICB+
UGF0dGVybigpOwogCi0gICAgSW1hZ2UqIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGls
ZUltYWdlLmdldCgpOyB9CisgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLmdldCgpOyB9CiAKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCkBAIC03
Niw5ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVybiBt
X3JlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+LCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8SW1hZ2U+JiYsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKIAotICAgIFJlZlB0cjxJbWFnZT4gbV90aWxlSW1h
Z2U7CisgICAgUmVmPEltYWdlPiBtX3RpbGVJbWFnZTsKICAgICBib29sIG1fcmVwZWF0WDsKICAg
ICBib29sIG1fcmVwZWF0WTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VUcmFu
c2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCmluZGV4IDIwYmUzZDE3YWZmLi45NWY2NTUzZWZkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFj
ay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBTaG93aW5nCiAgICAgfTsK
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRlKFBs
YXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgVHJhY2tU
eXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRyYWNr
PiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2luZCBr
aW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFnZSwg
U3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5n
dWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGVPdXRP
ZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1ZUlk
LCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVh
dGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50IHVu
aXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1vZGUs
IGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3VhZ2Us
IHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNEZWZhdWx0KSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0KQEAgLTg3LDE1ICs4Nywx
NSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJ
ZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmF1bHQ7IH0K
IAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVtKCkKKyAg
ICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpCiAgICAgewot
ICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNr
OjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0i
LCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICBy
ZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlv
bk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRp
b25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0
VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1
dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVh
a1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGF1dG9tYXRpYyA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAi
IiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICByZXR1
cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiNDliZDFlMzdmMC4uMmM5
MzUyMDYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+
IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1
ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1JlZjxJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRl
KEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5k
LCBjdWVGb3JtYXQsIGlkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKGtpbmQsIGN1ZUZvcm1hdCwgaWQpKTsKIH0KIAogSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQpAQCAt
NTUsNyArNTUsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoKQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUp
CiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3VlKGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBwcnBDdWVEYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6YWRkRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIGN1ZURhdGEsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gRGF0YSk7CiAgICAgQVNTRVJUKHN0YXJ0
ID49IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CkBAIC02MywxMSArNjMsMTAgQEAgdm9pZCBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QKICAgICBpZiAoIWNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGN1ZURhdGEgPSBwcnBD
dWVEYXRhOwogICAgIG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IHN0YXJ0OwogICAgIGlmIChlbmQu
aXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5kKElu
Y29tcGxldGVNZXRhRGF0YUN1ZSB7IGN1ZURhdGEuZ2V0KCksIHN0YXJ0IH0pOwotICAgIGNsaWVu
dCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGN1ZURhdGEucmVsZWFzZU5vbk51bGwoKSwgdHlw
ZSk7CisgICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5kKEluY29tcGxldGVNZXRhRGF0YUN1
ZSB7IGN1ZURhdGEucHRyKCksIHN0YXJ0IH0pOworICAgIGNsaWVudCgpLT5hZGREYXRhQ3VlKHN0
YXJ0LCBlbmQsIFdURk1vdmUoY3VlRGF0YSksIHR5cGUpOwogfQogCiB2b2lkIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6dXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1l
ZGlhVGltZSYgdGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBmZjQyZmEyZjQ0Zi4uNTJmZDlhNmExN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEluY29tcGxldGVNZXRhRGF0YUN1ZSB7
CiAKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5kLCBDdWVGb3JtYXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOworICAgIHN0YXRpYyBSZWY8SW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoS2luZCwgQ3VlRm9ybWF0LCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKTsKIAogICAgIH5JbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkYoKTsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpIHsgbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0KIAog
I2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKaW5k
ZXggOTU5NmY4Y2EzYzEuLmE3Y2FhNmVjOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJl
ZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRp
bWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0
aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1l
KCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBv
c2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVy
aWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3Vl
KGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0YXR1cyA9IHNlZWtpbmcoKSA/
IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5ZGQuLjc4NjM1NDE0MWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaApAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiAKIGNsYXNz
IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDJiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiwg
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKIAogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7
CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVk1l
ZGlhU2VsZWN0aW9uR3JvdXAqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNz
KTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUoQVZQ
bGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNoYXJhY3RlcmlzdGljcyk7CiAgICAgfk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKCk7CiAK
ICAgICB2b2lkIHNldFNlbGVjdGVkT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCmlu
ZGV4IDhkZWUwOWNlMDg2Li5iMjE1MjYzNzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtNDgsOSArNDgsOSBAQCBTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDPiBNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2Jq
QyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKK1JlZjxNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
b3B0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKGdyb3VwLCBvcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOwogfQogCiBNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKQEAg
LTg1LDkgKzg1LDkgQEAgaW50IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6aW5kZXgoKSBj
b25zdAogICAgIHJldHVybiBbW21fZ3JvdXAtPmF2TWVkaWFTZWxlY3Rpb25Hcm91cCgpIG9wdGlv
bnNdIGluZGV4T2ZPYmplY3Q6bV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKV07CiB9CiAKLVBh
c3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9uR3JvdXAg
Kmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQorUmVmPE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRl
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3Rp
Y3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2Jq
QyhpdGVtLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKSk7CiB9CiAKIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyhBVlBsYXllckl0ZW0gKml0ZW0s
IEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFy
YWN0ZXJpc3RpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRi5oCmluZGV4IDkwYTE4NjE5ZTAyLi4xYTNkZjkxN2NkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKQEAgLTM2LDkg
KzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRj4gY3JlYXRlKEFW
RkluYmFuZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25SZWYg
c2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9ybWF0KQorICAg
IHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRU
cmFja1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlv
biwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVy
LCBzZWxlY3Rpb24sIGZvcm1hdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRihwbGF5ZXIsIHNlbGVjdGlvbiwgZm9ybWF0KSk7CiAgICAg
fQogCiAgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCmlu
ZGV4IDBjOWMzMzI2ODBlLi5jM2EwZTg4ZjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKQEAgLTM4LDkgKzM4
LDkgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiAKIGNsYXNzIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkNGPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YqIHBsYXllciwgQVZDRlBsYXllckl0ZW1UcmFja1JlZiB0cmFjaykKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YqIHBsYXllciwgQVZDRlBsYXllckl0ZW1UcmFja1JlZiB0cmFjaykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWQ0YocGxheWVyLCB0cmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRihwbGF5ZXIsIHRyYWNrKSk7CiAgICAg
fQogCiAgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
MDVmZDAyNmEzNGQuLjI5YzQ3YTA2MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2
UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVu
dCwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAg
QVNTRVJUKGF2UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQs
IGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQs
IEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRk
OGIwODQuLmRhZTA2ZTE5MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiBjbGFzcyBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3RSZWYpOworICAgIHN0YXRpYyBSZWY8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYpOwogICAgIHZpcnR1YWwgfldlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAppbmRl
eCA3MWU3MTJlYjc5Yi4uMGRhMmFkMDZiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3QoQVZDb250ZW50
S2V5UmVxdWVzdCAqKTsKIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4g
Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50
MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVs
ZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNv
ZGUpOwogCiAgICAgYm9vbCBoYXNDb250ZW50S2V5U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudEtleVNlc3Npb247IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5
U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCA1NTEzZjNkZmY1Yi4uYzIyNDM0NzAyNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAg
IFtjb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0K
IAotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50
MzJfdCYgc3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJy
b3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtl
eVJlbGVhc2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4Yzdk
OWI5ZTEzLi5iMGI1M2U4ZGY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTdHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiopOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8
VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJy
b3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uPiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIFJldGFpblB0cjxB
VlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVh
bVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IGU4NTE5ZTI2YTZiLi42
ZWFjNjk4OGUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpyZW1vdmVQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiAg
ICAgICAgIFttX3N0cmVhbVNlc3Npb24gcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpwYXJzZXJdOwog
fQogCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMy
X3QmIHN5c3RlbUNvZGUpCitSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKaW5kZXggODhh
OTIyYTVkNzAuLjE4YTk0YWQzY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6
IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFu
ZFRyYWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24s
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJl
ZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFy
ZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0
aW9uLCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAog
ICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmgKaW5kZXggZjM4NWEzZjJjNmIuLmI4NDE1NGM2OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakM+IGNyZWF0ZShNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwbGF5ZXIsIEFWUGxheWVySXRlbVRyYWNr
ICp0cmFjaykKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBB
VlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKHBsYXllciwgdHJhY2spKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMocGxheWVyLCB0cmFjaykpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmluZGV4IGExNGM0MWUzZWRlLi5iN2Ey
NGI2ODIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIDogcHVibGljIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE91
dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCog
cGxheWVyLCAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogc2VsZWN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFy
ZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYo
cGxheWVyLCBzZWxlY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3V0T2ZC
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5ZXIsIHNlbGVjdGlvbikpOwogICAgIH0KICAgICAK
ICAgICB2b2lkIHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFU
aW1lJikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdkN2Y3NzM2ZTgwLi5mNWUzNzQwNDI5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQuLjRmN2Q0MWQ1YWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC00
MiwxMSArNDIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcj4gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUoTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdCAqYXZSZXF1ZXN0KQorUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqYXZSZXF1
ZXN0KQogewogICAgIEFTU0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VSVChwYXJlbnQpOwotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZS
ZXF1ZXN0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CiB9CiAKIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCmluZGV4IGY5MWRkM2ViYWY0Li42NTExM2IwZDJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmZpbHRlcnNDYW5CZUNv
bXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICNlbmRpZgogfQogCi1Q
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGF1dG8gcmVzdWx0ID0gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShsYXllclR5
cGUsIG93bmVyKTsKQEAgLTM1NiwxMyArMzU2LDEzIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5
CiAgICAgaWYgKHJlc3VsdC0+Y2FuSGF2ZUJhY2tpbmdTdG9yZSgpKQogICAgICAgICByZXN1bHQt
PnNldFdhbnRzRGVlcENvbG9yQmFja2luZ1N0b3JlKHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
cigpKTsKICAgICAKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllcldpbjo6
Y3JlYXRlKGxheWVyVHlwZSwgb3duZXIpOwogI2VuZGlmCiB9CiAgICAgCi1QYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikK
K1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpjcmVhdGUocGxhdGZvcm1MYXllciwgb3duZXIpOwpAQCAtMzcxLDcgKzM3MSw3IEBA
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24o
UGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZSh0eXBlLCBrZXlQYXRoKTsKQEAg
LTExMzEsNyArMTEzMSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgLy8gdGhlIGNy
ZWF0b3Igb2YgdGhlIHJhdyBsYXllciBpcyB1c2luZyBpdCBmb3Igc29tZSBvdGhlciBwdXJwb3Nl
LgogICAgIC8vIEZvciBub3cgd2UgZG9uJ3Qgc3VwcG9ydCBzdWNoIGEgY2FzZS4KICAgICBQbGF0
Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1D
QUxheWVyKHBsYXRmb3JtTGF5ZXIpOwotICAgIG1fY29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5
ZXIgPyAocGxhdGZvcm1DQUxheWVyID8gcGxhdGZvcm1DQUxheWVyIDogY3JlYXRlUGxhdGZvcm1D
QUxheWVyKHBsYXRmb3JtTGF5ZXIsIHRoaXMpKSA6IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xh
eWVyID0gcGxhdGZvcm1MYXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIg
OiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykucHRyKCkpIDogbnVs
bHB0cjsKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZvcm1MYXllciA/IHB1cnBv
c2UgOiBOb0NvbnRlbnRzTGF5ZXI7CiAKICAgICBpZiAobV9jb250ZW50c0NsaXBwaW5nTGF5ZXIg
JiYgbV9jb250ZW50c0xheWVyKQpAQCAtMjY4NSw3ICsyNjg1LDcgQEAgR3JhcGhpY3NMYXllckNB
OjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJDQTo6UmVwbGljYVN0YXRlOjpjbG9uZUlEKCkgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi1QYXNzUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5ZXJSb290
KFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlKQorUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3Jh
cGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0
YXRlKQogewogICAgIC8vIExpbWl0IHJlcGxpY2EgbmVzdGluZywgdG8gYXZvaWQgMl5OIGV4cGxv
c2lvbiBvZiByZXBsaWNhIGxheWVycy4KICAgICBpZiAoIW1fcmVwbGljYXRlZExheWVyIHx8IHJl
cGxpY2FTdGF0ZS5yZXBsaWNhRGVwdGgoKSA9PSBSZXBsaWNhU3RhdGU6Om1heFJlcGxpY2FEZXB0
aCkKQEAgLTI5MDcsNyArMjkwNyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVBbmlt
YXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAgaWYg
KCF2YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91bmNvbWl0dGVkQW5p
bWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0
aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zm
c2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1
ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQpKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMjkzNCw3ICsyOTM0LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWwKICAgICBpZiAoIXZhbGlkTWF0cmljZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24o
Y2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgMCwgdGltZU9mZnNldCkpOworICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBw
ZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwg
YW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0
aW1lT2Zmc2V0KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwMTUsNyArMzAxNSw3IEBA
IGJvb2wgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFsdWVz
T0spOwogCi0gICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVy
dHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0
eSgpLCBhbmltYXRpb25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4LCB0aW1lT2Zm
c2V0KSk7CisgICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVy
dHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwg
dmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3Bl
cnR5SW5kZXgsIHRpbWVPZmZzZXQpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMw
NTQsMjQgKzMwNTQsMjQgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXMKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6
OmNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7Ci0gICAgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxh
dGZvcm1DQUFuaW1hdGlvbjo6QmFzaWMsIGtleVBhdGgpOwotICAgIHNldHVwQW5pbWF0aW9uKGJh
c2ljQW5pbS5nZXQoKSwgYW5pbSwgYWRkaXRpdmUpOworICAgIGF1dG8gYmFzaWNBbmltID0gY3Jl
YXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0
aCk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigpLCBhbmltLCBhZGRpdGl2ZSk7
CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1h
dGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQorUmVmPFBs
YXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRk
aXRpdmUpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGtleWZyYW1lQW5pbSA9
IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5ZnJhbWUs
IGtleVBhdGgpOwotICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbS5nZXQoKSwgYW5pbSwg
YWRkaXRpdmUpOworICAgIGF1dG8ga2V5ZnJhbWVBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1h
dGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFtZSwga2V5UGF0aCk7CisgICAgc2V0dXBB
bmltYXRpb24oa2V5ZnJhbWVBbmltLnB0cigpLCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJu
IGtleWZyYW1lQW5pbTsKIH0KIAotUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlv
biogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQogewogICAgIGF1
dG8gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpTcHJpbmcsIGtleVBhdGgpOwotICAgIHNldHVwQW5pbWF0aW9uKGJhc2ljQW5pbS5nZXQo
KSwgYW5pbSwgYWRkaXRpdmUpOworICAgIHNldHVwQW5pbWF0aW9uKGJhc2ljQW5pbS5wdHIoKSwg
YW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBiYXNpY0FuaW07CiB9CiAKQEAgLTM3NDAsNyAr
Mzc0MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyKQogICAgIHNldExheWVyRGVidWdCb3JkZXIoKmNvbnRl
bnRzTGF5ZXIsIGNvbnRlbnRzTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjb250ZW50c0xheWVyQm9yZGVyV2lkdGgpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9u
ZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291
cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKICAg
ICBpZiAoIXNvdXJjZUxheWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM4NTMsNyAr
Mzg1Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVw
bGljYXMoU2NoZWR1bGVGbHVzaE9yTm90IHNjaGVkdWxlCiAgICAgfQogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBo
aWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVM
ZXZlbCBjbG9uZUxldmVsKQorUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3Rh
dGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewogICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IHByaW1hcnlMYXllcjsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiBzdHJ1Y3R1cmFsTGF5ZXI7CkBAIC0zOTY3LDE2ICszOTY3LDE2IEBAIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NM
YXllciogcmVwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVy
LCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xh
eWVyQ0E6OmNsb25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9u
ZUxldmVsKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG5ld0xheWVyID0gbGF5ZXIt
PmNsb25lKHRoaXMpOworICAgIGF1dG8gbmV3TGF5ZXIgPSBsYXllci0+Y2xvbmUodGhpcyk7CiAK
ICAgICBpZiAoY2xvbmVMZXZlbCA9PSBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKSB7CiAgICAgICAg
IG5ld0xheWVyLT5zZXRPcGFjaXR5KGxheWVyLT5vcGFjaXR5KCkpOwotICAgICAgICBjb3B5QW5p
bWF0aW9ucyhsYXllciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgICAgICBjb3B5QW5pbWF0aW9ucyhs
YXllciwgbmV3TGF5ZXIucHRyKCkpOwogICAgIH0KIAotICAgIHNldExheWVyRGVidWdCb3JkZXIo
Km5ld0xheWVyLCBjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcihpc1Nob3dpbmdEZWJ1Z0JvcmRl
cigpKSwgY2xvbmVMYXllckJvcmRlcldpZHRoKTsKKyAgICBzZXRMYXllckRlYnVnQm9yZGVyKG5l
d0xheWVyLCBjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcihpc1Nob3dpbmdEZWJ1Z0JvcmRlcigp
KSwgY2xvbmVMYXllckJvcmRlcldpZHRoKTsKIAogICAgIHJldHVybiBuZXdMYXllcjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKaW5kZXggYjliMTg0MmZmZWYuLjUxMzlmYWY4MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMjE5
LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVyRGlk
RGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHZp
cnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAgICB2
aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9y
bUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAgICAg
UGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsg
fQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7CkBA
IC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1hdGlv
bnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAKICAg
ICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0gICAg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25z
dCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwotICAg
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24o
Y29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAgUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmlt
YXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0
ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFk
ZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBj
b25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25W
YWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsKICAg
ICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7CiAK
ICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xvbmVM
ZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJz
KEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsK
KyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5
ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAgICBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwg
Q2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1ha2VD
bG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVsKTsK
KyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqLCBD
bG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUo
Q2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAKICAg
ICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5ZXIs
CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBwcml2
YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xlIHBy
b3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9yCiAg
ICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGluZGV4
IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVydHlB
bmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwg
ZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9u
KQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zm
c2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkKICAg
ICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJvcGVy
dHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmgKaW5kZXggY2M4ZDgzZmUyZjMuLmEwMmIzMTU4ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF0Zm9ybUNBQW5p
bWF0aW9uV2luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qg
PSAwOwogICAgIAogICAgIEFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCmluZGV4IGJlNDNhOTk0NmE0Li41
MWVhODMzYzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKQEAg
LTQ4LDE0ICs0OCwxNCBAQCB2b2lkIHNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKENBQW5pbWF0aW9u
ICosIGJvb2wpOwogCiBjbGFzcyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EgZmluYWwgOiBwdWJs
aWMgUGxhdGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsKIAogICAgIHZpcnR1YWwgflBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYSgpOwogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUFu
aW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCmluZGV4IDM1MjZkNjNmZWU2Li41OWFlZTlhNmZl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAtMTQ5LDE0
ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVkaWFUaW1p
bmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NBTWVkaWFU
aW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25MaW5l
YXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6
Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUsIGtleVBh
dGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eo
dHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1h
dGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlvbikpOwog
fQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYShB
bmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5ICsxOTYs
OSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eo
KQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgp
KTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBhdGgo
KSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwogICAg
IGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0Fic3RyYWN0Q0FD
RkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2Ni4uMGFiNThlN2UyY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBQ
bGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5
ZXIoUGxhdGZvcm1DQUxheWVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXllclRyZWVEaWRD
aGFuZ2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05v
dygpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGFlYjE0MGM1Y2EuLjRh
OGY1OTcyN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCBib29sIENBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxl
KCkKICAgICByZXR1cm4gYXZhaWxhYmxlOwogfQogCi1QYXNzUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxDQUNGTGF5ZXJUcmVlSG9z
dD4gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRlZENv
bXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA4LDkg
KzIwOCw5IEBAIFBsYXRmb3JtQ0FMYXllciogQ0FDRkxheWVyVHJlZUhvc3Q6OnJvb3RMYXllcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOwogfQogCi12b2lkIENBQ0ZMYXll
clRyZWVIb3N0OjphZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gbGF5ZXIpCit2b2lkIENBQ0ZMYXllclRyZWVIb3N0OjphZGRQZW5kaW5nQW5pbWF0ZWRM
YXllcihQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKQogewotICAgIG1fcGVuZGluZ0FuaW1hdGVkTGF5
ZXJzLmFkZChsYXllcik7CisgICAgbV9wZW5kaW5nQW5pbWF0ZWRMYXllcnMuYWRkKCZsYXllcik7
CiB9CiAKIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDllNGVkODI1ZWU1Li41
NDI0YjAwNTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTU3LDcgKzU2LDcg
QEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJUcmVlSG9zdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBBYnN0cmFjdENBQ0ZMYXll
clRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQUNGTGF5ZXJUcmVl
SG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3Jl
YXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsKIAogICAgIHN0YXRpYyBi
b29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAgLTEwMyw3ICsxMDIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgLy8gQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJU
cmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCmlu
ZGV4IDI3ZGUyYjVkNTc2Li45MGE4M2YwYTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcApAQCAtMTQyLDE0ICsxNDIsMTQgQEAgc3RhdGljIFJldGFpblB0cjxDQUNGVGlt
aW5nRnVuY3Rpb25SZWY+IHRvQ0FDRlRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW8K
ICAgICByZXR1cm4gQ0FDRlRpbWluZ0Z1bmN0aW9uR2V0RnVuY3Rpb25XaXRoTmFtZShrQ0FDRlRp
bWluZ0Z1bmN0aW9uTGluZWFyKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjcmVhdGUoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFu
aW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldpbih0
eXBlLCBrZXlQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1h
dGlvbldpbih0eXBlLCBrZXlQYXRoKSk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
V2luOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldpbihhbmltYXRpb24pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKGFuaW1hdGlvbikpOwog
fQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKEFuaW1h
dGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQpAQCAtMTc3LDkgKzE3Nyw5IEBA
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OlBsYXRmb3JtQ0FBbmltYXRpb25XaW4oUGxhdGZvcm1B
bmltYXRpb25SZWYgYW5pbWF0aW9uKQogICAgIG1fYW5pbWF0aW9uID0gYW5pbWF0aW9uOwogfQog
Ci1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46
OmNvcHkoKSBjb25zdAorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBh
bmltYXRpb24gPSBjcmVhdGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAgIGF1dG8g
YW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAgICAKICAg
ICBhbmltYXRpb24tPnNldEJlZ2luVGltZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihkdXJhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oCmlu
ZGV4IGVmYzZkYmExNjM0Li4xNjJkNjI2YTY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlv
bldpbi5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ0FBbmltYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJl
Zik7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9u
VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FB
bmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZik7CiAKICAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlv
bldpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUGxhdGZv
cm1BbmltYXRpb25SZWYgcGxhdGZvcm1BbmltYXRpb24oKSBjb25zdDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKaW5kZXggZDM3ZjI0MWFhOGEuLjVlMTQ5ZmQ0YTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3Jt
Q0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBpdCBzbyB3ZSBjYW4gZmlyZSB0
aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCog
aG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAgICBpZiAoaG9zdCkKLSAgICAg
ICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7CisgICAgICAgIGhvc3QtPmFk
ZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJX
aW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tD
QUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAzYWUyLi44MjVhOGQwMTYxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FD
RlZpZXdMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCkBAIC02NiwxMCArNjYsMTAg
QEAgU09GVF9MSU5LKFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMsIFdLQ0FDRlZpZXdTZXRDb250
ZXh0VXNlckRhdGEsIHZvaWQsIF9fY2RlY2wKIFNPRlRfTElOS19PUFRJT05BTChXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0U2hvdWxkSW52ZXJ0Q29sb3JzLCB2b2lkLCBf
Y2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcsIGJvb2wgc2hvdWxkSW52ZXJ0Q29sb3JzKSkKIFNP
RlRfTElOS19PUFRJT05BTChXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0
RDNERGV2aWNlOSwgSURpcmVjdDNERGV2aWNlOSosIF9jZGVjbCwgKFdLQ0FDRlZpZXdSZWYgdmll
dykpCiAKLVBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0PiBXS0NB
Q0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIVdlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnNMaWJyYXJ5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV0tDQUNGVmlld0xheWVyVHJlZUhv
c3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaAppbmRleCBlNGRiMmM0NDgy
OS4uMzdjYTA3MzMxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QgOiBwdWJsaWMgQ0FDRkxheWVyVHJlZUhvc3QgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0PiBjcmVhdGUoKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0PiBjcmVhdGUoKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBjcmVhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA4MWJjN2NlOTZi
YS4uN2U1ZGYwNDRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY2Fpcm9fcGF0dGVy
bl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc3VyZmFjZS5n
ZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAppbmRleCBhMGU3ZmY4NzNiYy4u
ODc2MzQ4MDI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKQEAgLTMxNCwxMCAr
MzE0LDkgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xpcEZvclBhdHRlcm5GaWxsaW5n
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGEKICAgICBjYWlyb19jbGlwX2V4dGVudHMo
bV9jci5nZXQoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAgICBGbG9hdFJlY3QgY2xpcFJlY3Qo
eDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKIAotICAgIEltYWdlKiBwYXR0ZXJuSW1hZ2UgPSBz
dGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgQVNTRVJUKHBhdHRlcm5JbWFnZSk7
CisgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgp
OwogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT5nZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKLSAgICBGbG9hdFJlY3QgcGF0
dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRl
cm5JbWFnZS0+d2lkdGgoKSwgcGF0dGVybkltYWdlLT5oZWlnaHQoKSkpOworICAgIEZsb2F0UmVj
dCBwYXR0ZXJuUmVjdCA9IHBhdHRlcm5UcmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QoMCwgMCwg
cGF0dGVybkltYWdlLndpZHRoKCksIHBhdHRlcm5JbWFnZS5oZWlnaHQoKSkpOwogCiAgICAgYm9v
bCByZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAgICBib29sIHJlcGVh
dFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IGYzYzFh
ZTQ5ZDUzLi45NmViODNjYTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtNDgsOSArNDgsOSBAQCBjbGFz
cyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgUERGRG9jdW1lbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBJ
bWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UERGRG9jdW1lbnRJbWFnZT4g
Y3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIHN0YXRpYyBSZWY8UERGRG9jdW1l
bnRJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQREZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50SW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9
CiAKICAgICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xp
Y3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKaW5kZXggNzE4NjAwOTIwYTkuLjk4ZTY5ZGU4ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogCiBDR1Bh
dHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRp
bGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0
aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9y
bSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlv
bjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3
ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0
aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMK
ICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdl
IHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAg
cmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgp
LT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdD
b25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZM
VF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMg
cmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQg
aW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVm
IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVz
ZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVp
Z2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxsIHJlbGVhc2UgdGhl
IENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRlcm5SZWxlYXNlQ2Fs
bGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZl
SW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUlt
YWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxs
YmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVs
ZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdl
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZm
dXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4Li42YjlhZTllNTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdo
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5jcHAKQEAgLTI3LDE3ICsyNywxNCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXImIGZp
bHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKLSAg
ICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi0g
ICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBz
dXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkKK0ZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZs
b2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdo
dFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBEaWZmdXNlTGlnaHRpbmcsIGxpZ2h0
aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCAwLCAwLCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKQogewogfQog
Ci1SZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLAotICAgIGZsb2F0IHN1cmZhY2VT
Y2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwKLSAg
ICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRT
b3VyY2UpCitSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNl
U2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVEaWZmdXNlTGlnaHRpbmcoZmlsdGVyLCBsaWdo
dGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwga2VybmVsVW5pdExlbmd0
aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNj
YWxlLCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3Ro
WSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVEaWZmdXNlTGlnaHRpbmc6On5GRURp
ZmZ1c2VMaWdodGluZygpCkBAIC0xMDksMTYgKzEwNiwxMSBAQCBib29sIEZFRGlmZnVzZUxpZ2h0
aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFRGlmZnVzZUxpZ2h0aW5nOjps
aWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSYgRkVEaWZmdXNlTGlnaHRpbmc6
OmxpZ2h0U291cmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsK
IH0KIAotdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17ICAgIAotICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdo
dFNvdXJjZTsKLX0KLQogdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6ZHVtcCgpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVz
ZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXggNWZlMmJlOWY0YTUuLjcwMzdjMzMyNTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxp
Z2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5oCkBAIC0zMCw4ICszMCw3IEBAIGNsYXNzIExpZ2h0U291cmNlOwog
CiBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCwgZmxvYXQsCi0gICAgICAgIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IGNyZWF0ZShG
aWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGln
aHRTb3VyY2U+JiYpOwogICAgIHZpcnR1YWwgfkZFRGlmZnVzZUxpZ2h0aW5nKCk7CiAKICAgICBj
b25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwpAQCAtNDksMTUgKzQ4LDE0IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0
S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0
U291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0
U291cmNlPik7CisgICAgY29uc3QgTGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGR1bXAoKSBvdmVycmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNvbnN0IENvbG9yJiwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAg
ICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5jcHAKaW5kZXggMjkyNWIwZWI2NTEuLmZhMGYyOGFmYTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVM
aWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdo
dGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
Ci0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9h
dCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitG
RUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRp
bmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1
bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0
KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBlKGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGln
aHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBtX2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRT
b3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9yKGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1
cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAgLCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNl
Q29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAgYm9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRp
bmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAg
IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0
YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90
aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMgc3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBj
YXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVybnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwg
aGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJhZmJmNDdjNDVlLi4zOTIwMjk4MTdkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHBs
YXRmb3JtQXBwbHlHZW5lcmljV29ya2VyKFBsYXRmb3JtQXBwbHlHZW5lcmljUGFyYW1ldGVycyop
OwogICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtQXBwbHlOZW9uV29ya2VyKEZFTGlnaHRpbmdQYWlu
dGluZ0RhdGFGb3JOZW9uKik7CiAKLSAgICBGRUxpZ2h0aW5nKEZpbHRlciYsIExpZ2h0aW5nVHlw
ZSwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdo
dGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIAogICAgIGJvb2wgZHJhd0xpZ2h0aW5nKFVp
bnQ4Q2xhbXBlZEFycmF5KiwgaW50LCBpbnQpOwogICAgIGlubGluZSB2b2lkIGlubGluZVNldFBp
eGVsKGludCBvZmZzZXQsIExpZ2h0aW5nRGF0YSYsIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEm
LApAQCAtMTA3LDcgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9y
bUFwcGx5TmVvbihMaWdodGluZ0RhdGEmLCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJik7CiAK
ICAgICBMaWdodGluZ1R5cGUgbV9saWdodGluZ1R5cGU7Ci0gICAgUmVmUHRyPExpZ2h0U291cmNl
PiBtX2xpZ2h0U291cmNlOworICAgIFJlZjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKIAog
ICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKICAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAppbmRleCBlMmU4MzRmMjFiZS4uOGMxNDA4MzU0ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVT
cGVjdWxhckxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKQEAgLTI3LDE5ICsyNywxNCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0
aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3Vy
ZmFjZVNjYWxlLAotICAgIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhw
b25lbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLAotICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKLSAgICA6IEZFTGlnaHRp
bmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUs
IDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhY
LCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitGRVNwZWN1bGFyTGlnaHRpbmc6OkZF
U3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29s
b3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3Bl
Y3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5n
KGZpbHRlciwgU3BlY3VsYXJMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAw
LCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKQogewogfQogCi1SZWY8RkVT
cGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRl
ciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsCi0gICAgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1
bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwg
c3VyZmFjZVNjYWxlLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50LAotICAgICAg
ICBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxpZ2h0U291cmNlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVTcGVjdWxhckxpZ2h0aW5nKGZpbHRlciwgbGlnaHRp
bmdDb2xvciwgc3VyZmFjZVNjYWxlLCBzcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50
LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKSk7CiB9CiAKIEZFU3BlY3VsYXJMaWdodGluZzo6fkZFU3BlY3VsYXJMaWdodGluZygpCkBA
IC0xMjQsMTYgKzExOSwxMSBAQCBib29sIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0S2VybmVsVW5p
dExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWNvbnN0IExpZ2h0U291cmNlKiBGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0U291cmNlKCkgY29u
c3QKK2NvbnN0IExpZ2h0U291cmNlJiBGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0U291cmNlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsKIH0KIAotdm9pZCBGRVNw
ZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxp
Z2h0U291cmNlKQotewotICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKLX0KLQogdm9p
ZCBGRVNwZWN1bGFyTGlnaHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmgKaW5kZXggZTA0ZjQ0MzZhYTYuLjlmOTI3ZjI1MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNw
ZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZs
b2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdo
dFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmls
dGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJl
ZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAK
ICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0
IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJv
b2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRy
PExpZ2h0U291cmNlPik7CisgICAgY29uc3QgTGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29u
c3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVycmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBD
b2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdo
dFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMGUyZTFiZjZhYy4uNzg5
MjBlYzUwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZSh0aWxlSW1hZ2VD
b3B5KSwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRp
bGVJbWFnZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0
ZShpbk1heEVmZmVjdExvY2F0aW9uLngoKSAtIG1heEVmZmVjdExvY2F0aW9uLngoKSwgaW5NYXhF
ZmZlY3RMb2NhdGlvbi55KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi55KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCmluZGV4IDJmNzQyY2ExNzlkLi45OGI4NmQwMTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApA
QCAtMjMyLDI0ICsyMzIsMjQgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1
ZmZlcigpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLVBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJF
ZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJ
bnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1f
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCkpOwogICAgIGNvcHlVbm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3Qp
OwotICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRGF0YTsK
IH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11
bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAgc2NhbGVk
U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGltYWdlRGF0YSA9
IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBjb3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0
YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKKyAgICByZXR1
cm4gaW1hZ2VEYXRhOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5
dGVzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5h
dGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IGVhNGVjNzc2ZjUw
Li42ZDMxN2NhYjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFz
SW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVs
dGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsK
KyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRB
cnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0
aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCAwMzVlNDViYjA3YS4uZDc5YjhiMmFm
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTcyLDEyICs3MiwxMiBAQCB2b2lkIFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZChDYWNo
ZWRSZXNvdXJjZUxvYWRlcgogICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQo
Y2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogfQogCi12b2lkIFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0
ZXJFZmZlY3QpCit2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0
KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgZmlsdGVyRWZmZWN0KQogewotICAgIG1fZmlsdGVyRWZm
ZWN0ID0gZmlsdGVyRWZmZWN0OworICAgIG1fZmlsdGVyRWZmZWN0ID0gV1RGTW92ZShmaWx0ZXJF
ZmZlY3QpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
KQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAg
cmV0dXJuIHRoaXM7CkBAIC0xMTMsNyArMTEzLDcgQEAgZG91YmxlIEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1vdW50KCkgY29uc3QKICAgICB9CiB9CiAKLVBh
c3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVz
cywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7
CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1
cm4gdGhpczsKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEJsdXJGaWx0ZXJPcGVyYXRpb246Om9w
ZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcGVyYXRpb24pIGNvbnN0CiAgICAgcmV0
dXJuIG1fc3RkRGV2aWF0aW9uID09IGRvd25jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24+KG9wZXJh
dGlvbikuc3RkRGV2aWF0aW9uKCk7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gQmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewog
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJu
IHRoaXM7CkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3BlcmF0aW9uKSBjb24KICAgICBy
ZXR1cm4gbV9sb2NhdGlvbiA9PSBvdGhlci5tX2xvY2F0aW9uICYmIG1fc3RkRGV2aWF0aW9uID09
IG90aGVyLm1fc3RkRGV2aWF0aW9uICYmIG1fY29sb3IgPT0gb3RoZXIubV9jb2xvcjsKIH0KICAg
ICAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9v
bCBibGVuZFRvUGFzc3Rocm91Z2gpCitSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYg
IWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oCmluZGV4IDRjYWViNDliMGFhLi5lYzczZTU4ZWY2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5oCkBAIC02OCwyMSArNjgsMjEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RmlsdGVy
T3BlcmF0aW9uKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBjbG9uZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNs
b25lKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Ro
cm91Z2gqLyA9IGZhbHNlKQorICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywg
Ym9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NF
UlQoIWJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3Vi
bGUgLypwcm9ncmVzcyovLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCAvKmJsZW5kVG9QYXNzdGhy
b3VnaCovID0gZmFsc2UpCisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBj
b25zdCBMYXlvdXRTaXplJiwgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCiAg
ICAgewogICAgICAgICBBU1NFUlQoYmxlbmRpbmdOZWVkc1JlbmRlcmVyU2l6ZSgpKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIE9wZXJh
dGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTE5LDE0ICsxMTks
MTQgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBEZWZhdWx0RmlsdGVyT3Bl
cmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RGVmYXVsdEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKE9wZXJhdGlvblR5cGUgcmVw
cmVzZW50ZWRUeXBlKQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEZpbHRlck9wZXJhdGlvbj4gY3Jl
YXRlKE9wZXJhdGlvblR5cGUgcmVwcmVzZW50ZWRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uKHJlcHJlc2VudGVkVHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uKHJlcHJl
c2VudGVkVHlwZSkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWZhdWx0
RmlsdGVyT3BlcmF0aW9uKHJlcHJlc2VudGVkVHlwZSgpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKCkpKTsKICAg
ICB9CiAKICAgICBPcGVyYXRpb25UeXBlIHJlcHJlc2VudGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwcmVzZW50ZWRUeXBlOyB9CkBAIC0xNDUsMTQgKzE0NSwxNCBAQCBwcml2YXRlOgogCiBj
bGFzcyBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0
aW9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhc3N0aHJvdWdo
RmlsdGVyT3BlcmF0aW9uKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXNzdGhy
b3VnaEZpbHRlck9wZXJhdGlvbigpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTE2OSwxNyArMTY5LDE3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQorICAgIHN0YXRpYyBSZWY8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbih1cmwsIGZyYWdtZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbih1cmwsIGZyYWdtZW50KSk7CiAgICAgfQogICAgIHZp
cnR1YWwgflJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpOwogCi0gICAgUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0
aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBSZWZlcmVuY2Ug
ZmlsdGVycyBjYW5ub3QgYmUgY2xvbmVkLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Rmls
dGVyT3BlcmF0aW9uKj4obnVsbHB0cik7CiAgICAgfQogCiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBw
dWJsaWM6CiAgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIGNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5n
ZXQoKTsgfQogCiAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVy
biBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0Pik7CisgICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUmVmUHRyPEZp
bHRlckVmZmVjdD4mJik7CiAKIHByaXZhdGU6CiAgICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KTsKQEAgLTIxMywxOSAr
MjEzLDE5IEBAIHByaXZhdGU6CiAvLyBGb3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0
aW9uIGlzIHN0b3JlZCBpbiBtX2Ftb3VudC4KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
PiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBS
ZWY8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQs
IE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91
bnQsIHR5cGUpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xv
bmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCks
IHR5cGUoKSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVybiBt
X2Ftb3VudDsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNz
dGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBi
bGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
MjQ0LDIxICsyNDQsMjEgQEAgcHJpdmF0ZToKIC8vIElOVkVSVCwgQlJJR0hUTkVTUywgQ09OVFJB
U1QgYW5kIE9QQUNJVFkgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb21wb25lbnQgdHJhbnNm
ZXIgZWZmZWN0LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+IGNy
ZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3Vu
dCwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlv
bj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBl
KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAgICAgZG91Ymxl
IGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKICAgICBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IE9QQUNJVFk7IH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoID0gZmFsc2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKQEAgLTI3NiwxNCArMjc2LDE0
IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsdXJGaWx0ZXJPcGVyYXRpb24g
OiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCbHVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlhdGlvbikKKyAgICBz
dGF0aWMgUmVmPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9u
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0aW9u
KFdURk1vdmUoc3RkRGV2aWF0aW9uKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
bHVyRmlsdGVyT3BlcmF0aW9uKFdURk1vdmUoc3RkRGV2aWF0aW9uKSkpOwogICAgIH0KIAotICAg
IFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
UmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZERldmlhdGlvbigp
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3Rk
RGV2aWF0aW9uKCkpKTsKICAgICB9CiAKICAgICBjb25zdCBMZW5ndGgmIHN0ZERldmlhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9CkBAIC0yOTEsNyArMjkxLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91
Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwNywx
NCArMzA3LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBjb25zdCBDb2xvciYgY29sb3Ip
CisgICAgc3RhdGljIFJlZjxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBjb25zdCBDb2xvciYgY29sb3Ip
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2aWF0
aW9uLCBjb2xvcikpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEcm9wU2hh
ZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uKCksIHN0ZERldmlhdGlvbigpLCBjb2xvcigpKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24o
bG9jYXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKICAgICB9CiAKICAgICBpbnQg
eCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueCgpOyB9CkBAIC0zMjYsNyArMzI2LDcgQEAg
cHVibGljOgogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAppbmRleCBh
YWQxM2YzNGQ2OS4uYWQyMmI0N2IxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQg
Y29udmVydEZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0
IGZvcm1hdCwgdW4KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCitSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
CiAgICAgaW50IG1heFRleHR1cmVTaXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAg
LTEwMiw3ICsxMDIsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRl
eHR1cmVJZCkgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsr
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQo
aSkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQogICAgICAgICB0ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2Fh
NTVmODIxNzEuLjU3YTY4MzI3YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgVGV4dHVyZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsKIHB1YmxpYzoKICAgICB+VGV4dHVyZSgpOwogICAg
IGVudW0gRm9ybWF0IHsgUkdCQTgsIEJHUkE4IH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dHVyZT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgRm9ybWF0LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOworICAgIHN0YXRpYyBSZWZQdHI8VGV4dHVyZT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiwgRm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgYmluZFRpbGUo
aW50IHRpbGUpOwogICAgIHZvaWQgbG9hZCh2b2lkKiBwaXhlbHMpOwogICAgIHZvaWQgdXBkYXRl
U3ViUmVjdCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggYmQxOGU1YzU4YzUuLjQ3MmFhN2RkZGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYs
OSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXli
aW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxh
eWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5k
ZXgsIHBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNj
b25uZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDFlY2QzMzRiYTBm
Li5kM2UwNGY2YjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+
CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAt
MzgsMTMgKzM4LDEzIEBAIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDog
cHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUq
IHNhbXBsZSkKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2Uo
R3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW1hZ2VHU3RyZWFtZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZUdTdHJlYW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1h
Z2VHU3RyZWFtZXIoKTsKIAotICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgp
CisgICAgICAgIEJpdG1hcEltYWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChtX2ltYWdlKTsKICAgICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGU5NDJhMmM1ZmMwLi40ZDRkYjRlZGY5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApA
QCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShLaW5kIGtpbmQsIEN1ZUZvcm1hdCBjdWVGb3Jt
YXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShLaW5kIGtpbmQs
IEN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20p
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcihraW5kLCBjdWVGb3JtYXQsIGlkKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihr
aW5kLCBjdWVGb3JtYXQsIGlkKSk7CiAgICAgfQogCiAgICAgfkluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcigpIHsgfQpAQCAtNTIsMTAgKzUyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgY2xpZW50KCktPmFkZERhdGFDdWUoc3RhcnQsIGVuZCwgZGF0YSwgbGVuZ3RoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGFkZEdlbmVyaWNDdWUoUGFzc1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4g
ZGF0YSkKKyAgICB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmIGRhdGEpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gR2VuZXJpYyk7Ci0gICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKCpkYXRhKTsKKyAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWND
dWUoZGF0YSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggY2MzYTZmMGU5ZmMuLjZhOTA3NDRlNTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmgKQEAgLTQwLDkgKzQwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7
CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBS
ZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGluZGV4LCBw
YWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYjM1NjAzOGNk
YjcuLjc5YzE1MWJhNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50
cnkKIHsKICAgICBBU1NFUlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBj
dWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAg
IGdzdF90b2NfZW50cnlfZ2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3Ap
OwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFz
ZSgpKTsKKyAgICBtX2NoYXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZv
ciAoR0xpc3QqIGkgPSBnc3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkg
PSBpLT5uZXh0KQogICAgICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nh
c3Q8R3N0VG9jRW50cnkqPihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IGJhNDZhNjliMjEyLi41ZWE3NmUzZmVhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM2LDkgKzM2LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBm
aW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxh
eWJpbiwgaW5kZXgsIHBhZCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFLmNwcAppbmRleCA2NjNjODI1ZTVkZS4uZWJiNTAyZjI5YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0x
ODMsMTIgKzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVz
aChBdG9taWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXli
YWNrUGlwZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNh
bXBsZSkKK3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUo
UmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZh
dGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAg
ICBtX3BsYXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShzYW1w
bGUpOwogfQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdTdHJl
YW1lck1TRTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1T
RS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxLi5kYTc5OGNmYjc3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0UuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBlbmQoUmVmUHRy
PFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5z
aWduZWQpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZShSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcj4pOwogICAgIHZvaWQgZmx1c2goQXRvbWljU3RyaW5nKTsKLSAg
ICB2b2lkIGVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgdm9pZCBjbGVhclBsYXll
clByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA5MjA5NWI2MTA2Ny4uZTYyY2Q1NmE4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNp
bmNsdWRlICJXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQ
aXBlbGluZS5jcHAKaW5kZXggYjkxOWU1NTMwNTIuLjhhMmZmNDNhY2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlw
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFBsYXli
YWNrUGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9ERUJVRygi
dHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0K
IAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBs
ZT4gbWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVm
PE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRo
cmVhZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6ZW5x
dWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdzdEVsZW1l
bnQqIGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5xdWV1ZWRU
aW1lID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVkaWFTYW1w
bGUqIHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVkaWFTYW1w
bGUuZ2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2Fz
dDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBpZiAoc2Ft
cGxlLT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1wbGUoKSkp
IHsKICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+c2FtcGxl
KCk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKGdz
dFNhbXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmluZGV4IDA4
ZjBlNjBkMzMzLi5kYTQ5OGQ5ZmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5l
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgLy8gRnJvbSBTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLgogICAgIHZvaWQgZmx1c2goQXRvbWljU3RyaW5nKTsKLSAgICB2b2lk
IGVucXVldWVTYW1wbGUoUmVmUHRyPE1lZGlhU2FtcGxlPik7CisgICAgdm9pZCBlbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJik7CiAKICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpOwog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1h
Z2VHdGsuY3BwCmluZGV4IDQ5Y2NjOTExOGY0Li41NzViM2E1ZWY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCkBAIC0zNiwxNyAr
MzYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkKK3N0YXRpYyBS
ZWY8SW1hZ2U+IGxvYWRJbWFnZUZyb21HUmVzb3VyY2UoY29uc3QgY2hhciogaWNvbk5hbWUpCiB7
Ci0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gaWNvbiA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBHVW5pcXVlUHRyPGNo
YXI+IHBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvb3JnL3dlYmtpdGd0ay9yZXNvdXJjZXMvaW1hZ2Vz
LyVzIiwgaWNvbk5hbWUpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGFkb3B0R1JlZihn
X3Jlc291cmNlc19sb29rdXBfZGF0YShwYXRoLmdldCgpLCBHX1JFU09VUkNFX0xPT0tVUF9GTEFH
U19OT05FLCBudWxscHRyKSk7CiAgICAgQVNTRVJUKGRhdGEpOwogICAgIGljb24tPnNldERhdGEo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBnX2J5dGVzX2dldF9zaXplKGRh
dGEuZ2V0KCkpKSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAgIHJldHVy
biBpY29uOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3N0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAg
ICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBsZW5ndGg7CkBAIC02
MCwyMSArNjAsMjEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgp
CiB7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkTWlzc2luZ0ltYWdlSWNvbkZy
b21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIFJlZjxJbWFnZT4gbG9hZE1pc3NpbmdJ
bWFnZUljb25Gcm9tVGhlbWUoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWNvblNpemUg
PSBnX3N0cl9oYXNfc3VmZml4KG5hbWUsICJAMngiKSA/IDMyIDogMTY7Ci0gICAgUmVmUHRyPEJp
dG1hcEltYWdlPiBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGF1dG8gaWNvbiA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBHVW5pcXVlUHRyPEd0a0ljb25JbmZvPiBpY29u
SW5mbyhndGtfaWNvbl90aGVtZV9sb29rdXBfaWNvbihndGtfaWNvbl90aGVtZV9nZXRfZGVmYXVs
dCgpLCBHVEtfU1RPQ0tfTUlTU0lOR19JTUFHRSwgaWNvblNpemUsIEdUS19JQ09OX0xPT0tVUF9O
T19TVkcpKTsKICAgICBpZiAoaWNvbkluZm8pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKGd0a19pY29uX2luZm9fZ2V0X2Zp
bGVuYW1lKGljb25JbmZvLmdldCgpKSk7Ci0gICAgICAgIGljb24tPnNldERhdGEoYnVmZmVyLnJl
bGVhc2UoKSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBpY29uLnJlbGVhc2UoKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3RrX2ljb25faW5mb19nZXRf
ZmlsZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKKyAgICAgICAgaWNvbi0+c2V0RGF0YShXVEZNb3Zl
KGJ1ZmZlciksIHRydWUpOworICAgICAgICByZXR1cm4gaWNvbjsKICAgICB9CiAKICAgICByZXR1
cm4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShuYW1lKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCitSZWY8SW1hZ2U+
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJl
dHVybiBnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJtaXNzaW5nSW1hZ2UiKSA/IGxvYWRNaXNzaW5n
SW1hZ2VJY29uRnJvbVRoZW1lKG5hbWUpIDogbG9hZEltYWdlRnJvbUdSZXNvdXJjZShuYW1lKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0hhcmZCdXp6RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6ekZhY2UuY3BwCmluZGV4IGYwM2NhY2U4ZWQ5Li44M2ZmMjdlYTUyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgaGJfdGFnX3QgSGFy
ZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdrJywgJ2UnLCAncicsICduJyk7CiAKIGNsYXNz
IEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RmFjZUNhY2hlRW50cnk+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2Zh
Y2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZhY2VDYWNoZUVudHJ5PiBjcmVhdGUoaGJfZmFj
ZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGZhY2UpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZhY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkpOwogICAgIH0KICAgICB+RmFjZUNhY2hlRW50
cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5kZXggNjMxNzlmZTgxNWUuLjU5Y2VlOWMzZjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9I
YXJmQnV6ekZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6ekZhY2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPGhiLmg+CiAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBoYl90YWdfdCB2cnQyVGFnOwogICAgIHN0YXRpYyBjb25zdCBoYl90YWdfdCBrZXJuVGFnOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SGFyZkJ1enpGYWNlPiBjcmVhdGUoRm9udFBsYXRmb3Jt
RGF0YSogcGxhdGZvcm1EYXRhLCB1aW50NjRfdCB1bmlxdWVJRCkKKyAgICBzdGF0aWMgUmVmPEhh
cmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0
X3QgdW5pcXVlSUQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhhcmZCdXp6
RmFjZShwbGF0Zm9ybURhdGEsIHVuaXF1ZUlEKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEhhcmZCdXp6RmFjZShwbGF0Zm9ybURhdGEsIHVuaXF1ZUlEKSk7CiAgICAgfQogICAgIH5I
YXJmQnV6ekZhY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ltYWdlTWFjLm1tCmluZGV4IGY1ZmE2OTdjOTY4Li5lMWNmZTNmYmQ4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNTYs
NyArNTYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkKICAg
ICBtX3RpZmZSZXAgPSBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKK1JlZjxJbWFnZT4gSW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgTlNCdW5kbGUgKmJ1
bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZUJ1bmRsZUZpbmRlciBjbGFz
c11dOwogICAgIE5TU3RyaW5nICppbWFnZVBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpb
TlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bmFtZV0gb2ZUeXBlOkAicG5nIl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggOTdkNzU0ZDAyYTQuLmRjMzRiYmIzNmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVN
YXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBzdGF0aWMgUmVmPE9wZW5UeXBlTWF0aERhdGE+IGNy
ZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnQpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0YShmb250KSk7CiAgICAgfQogICAgIH5PcGVuVHlw
ZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDMyNDU2MzhhOGVmLi5kYzU5MzFlZGZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODQsNyArODQsNyBA
QCBwdWJsaWM6CiAgICAgaW5saW5lIGludCBudW1iZXJPZkJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
c2l6ZSgpLndpZHRoKCkgKiBzaXplKCkuaGVpZ2h0KCkgKiBicHAoKSA+PiAzOyB9CiAgICAgaW5s
aW5lIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiAhKG1fZmxhZ3MgJiBTdXBwb3J0c0Fs
cGhhKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5Rmls
dGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIHsgcmV0dXJuIHRo
aXM7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4
dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBJbnRTaXplIG1fY29udGVudFNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
Y3BwCmluZGV4IDU4OTA2MDIyNDFmLi5mYzk0OTYzZjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGdldFBhc3Nlc1Jl
cXVpcmVkRm9yRmlsdGVyKEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5
RmlsdGVycyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQorUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRleCBjNGE4MDIyNGE4Ny4uM2E0ZDgwNDcz
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTU5LDE2ICs1OSwxNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYg
dGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1
bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1hdCA9IEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBib29sIGlzQmFja2VkQnlPcGVuR0woKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYp
IG92ZXJyaWRlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVy
ZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBzdHJ1Y3Qg
RmlsdGVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKICAg
ICAgICAgdW5zaWduZWQgcGFzczsKICAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbnRl
bnRUZXh0dXJlOwogCi0gICAgICAgIEZpbHRlckluZm8oUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGYgPSAwLCB1bnNpZ25lZCBwID0gMCwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ID0g
MCkKLSAgICAgICAgICAgIDogZmlsdGVyKGYpCisgICAgICAgIEZpbHRlckluZm8oUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4mJiBmID0gbnVsbHB0ciwgdW5zaWduZWQgcCA9IDAsIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiYmIHQgPSBudWxscHRyKQorICAgICAgICAgICAgOiBmaWx0ZXIoV1RGTW92ZShm
KSkKICAgICAgICAgICAgICwgcGFzcyhwKQotICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZSh0
KQorICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZShXVEZNb3ZlKHQpKQogICAgICAgICAgICAg
eyB9CiAgICAgfTsKICAgICBjb25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggNzhhMDI0NmY3ZjUuLmEwMjZmNGM1MDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBt
X2xheWVyLnNldEZpbHRlcnMoZmlsdGVycygpKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBC
YWNraW5nU3RvcmVDaGFuZ2UpCi0gICAgICAgIG1fbGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgbV9sYXllci5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3Rv
cmUuY29weVJlZigpKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBEZWJ1Z1Zpc3VhbHNDaGFu
Z2UpCiAgICAgICAgIG1fbGF5ZXIuc2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCksIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dpbmdSZXBh
aW50Q291bnRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzMwNDdmNDkwNS4uMWY5ZTY4
MjdkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMyLDExICszMiwxMSBAQCBUZXh0dXJlTWFw
cGVyOjpUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCiBUZXh0dXJlTWFwcGVyOjp+VGV4dHVy
ZU1hcHBlcigpID0gZGVmYXVsdDsKIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJl
TWFwcGVyOjphY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IEJpdG1hcFRleHR1cmU6OkZsYWdzIGZsYWdzKQorUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1
cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29u
c3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCiB7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1
cmU+IHNlbGVjdGVkVGV4dHVyZSA9IG1fdGV4dHVyZVBvb2wtPmFjcXVpcmVUZXh0dXJlKHNpemUs
IGZsYWdzKTsKICAgICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUsIGZsYWdzKTsKLSAgICBy
ZXR1cm4gc2VsZWN0ZWRUZXh0dXJlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2VsZWN0ZWRUZXh0
dXJlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6
Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDcyMzNkMGRjY2Q1Li42NzMwZDhlN2JkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPEJpdG1hcFRleHR1cmU+IGNy
ZWF0ZVRleHR1cmUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWlu
dEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CkBAIC04
Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJl
OjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIHZpcnR1YWwgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYs
IGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzID0gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBo
YSk7CiAKICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHApIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0gcDsgfQogICAgIHZvaWQgc2V0V3JhcE1v
ZGUoV3JhcE1vZGUgbSkgeyBtX3dyYXBNb2RlID0gbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApp
bmRleCA3NDY0ZDA0N2UzNS4uOThkYzg0NWYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBJ
bnRSZWN0IFRleHR1cmVNYXBwZXJHTDo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIGNsaXBTdGFj
aygpLmN1cnJlbnQoKS5zY2lzc29yQm94OwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgpCitSZWY8Qml0bWFwVGV4dHVyZT4gVGV4
dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gQml0bWFwVGV4dHVy
ZUdMOjpjcmVhdGUoKm1fY29udGV4dDNEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBhY2M3
OGU4Yzg1MS4uZTdjODBlOTI2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZW5kQ2xpcCgpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xp
cEJvdW5kcygpIG92ZXJyaWRlOwogICAgIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBJbnRTaXplKDIwMDAsIDIwMDApOyB9Ci0gICAgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgb3ZlcnJpZGU7CisgICAgUmVmPEJpdG1hcFRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsKICAgICBpbmxpbmUgR3JhcGhpY3NDb250
ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0M0QuZ2V0
KCk7IH0KIAogICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJj
ZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUqIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24mLCBpbnQgcGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4
IGQzOWNmZmNiYjc4Li43OWI4OTU0NjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
QEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1h
cHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2htZW50KTsKICAgICBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKQEAgLTM3NiwxNiArMzc2LDE2IEBA
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9T
dXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwCiAgICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5hcHBs
eU1hc2sob3B0aW9ucyk7CiAgICAgc3VyZmFjZSA9IHN1cmZhY2UtPmFwcGx5RmlsdGVycyhvcHRp
b25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMpOwogICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICByZXR1cm4gc3VyZmFjZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbW1pdFN1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFj
aXR5KQorc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3Vy
ZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRh
cmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRUcmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zm
c2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICB0YXJnZXRUcmFuc2Zv
cm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFj
aXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoc3VyZmFjZSwgcmVj
dCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQwNSw3ICs0MDUsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcAogICAgIH0KIAogICAgIGlmIChyZXBsaWNhU3VyZmFj
ZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAgICAgICBjb21taXRTdXJmYWNlKG9wdGlv
bnMsIHJlcGxpY2FTdXJmYWNlLCByZWN0LCAxKTsKKyAgICAgICAgY29tbWl0U3VyZmFjZShvcHRp
b25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwogICAgICAgICByZXBsaWNhU3VyZmFjZSA9
IG51bGxwdHI7CiAgICAgfQogCkBAIC02MzcsOSArNjM3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9WaWV3cG9ydCkKICAgICBtX2Zp
eGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSkKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3Rv
cmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYgYmFja2luZ1N0b3JlKQogewot
ICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOworICAgIG1fYmFja2luZ1N0b3JlID0g
V1RGTW92ZShiYWNraW5nU3RvcmUpOwogfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6ZGVz
Y2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCmluZGV4IDNiMWMxNmIwYjEzLi5iZWQxZjZjZDY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFuaW1h
dGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZpeGVk
VG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAgdm9pZCBzeW5j
QW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1h
dGlvbnMoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBw
YWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9p
ZCBwYWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYpOwotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3VyZmFjZShjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOworICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYp
OwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDg1MTRhNGY3MzZhLi40MjM4YzVkOGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBUZXh0dXJl
TWFwcGVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMg
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKTsgfQorICAgIHN0YXRpYyBS
ZWY8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KICAgICB2aXJ0dWFs
IH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKSB7IH0KIAogICAgIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGY4OTcxNDg5
YWZkLi5hMjY2MmVmMGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAgICAgICAgICAgICByZWxl
YXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIAogICAgICAgICBpZiAoIW1fY29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcpIHsKLSAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcgPSBt
X2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChtX2NvbXBvc2l0ZWRJbWFn
ZS5nZXQoKSk7CisgICAgICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nID0gbV9jb29y
ZGluYXRvci0+Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKm1fY29tcG9zaXRlZEltYWdlKTsK
ICAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmctPmFkZEhvc3QodGhpcyk7CiAg
ICAgICAgICAgICBtX2xheWVyU3RhdGUuaW1hZ2VJRCA9IG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmctPmlkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjI1MTExZGJlNS4uYjc3NGUwMDVmYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJ
bWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciop
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENv
b3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBmNTI5NDc1NWEyMy4u
NTYwYzJlMTY3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtNTcsMTQgKzU3LDE0IEBAIENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRD4oaW1hZ2UpOwogfQogCi1QYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBD
b29yZGluYXRlZEltYWdlQmFja2luZzo6Y3JlYXRlKENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZSkKK1JlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgUmVmPEltYWdlPiYmIGltYWdlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoY2xpZW50
LCBpbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nKGNsaWVudCwgV1RGTW92ZShpbWFnZSkpKTsKIH0KIAotQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPElt
YWdlPiBpbWFnZSkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1faW1hZ2UoaW1hZ2Up
CitDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50
JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKKyAgICA6IG1fY2xpZW50KCZjbGllbnQpCisg
ICAgLCBtX2ltYWdlKFdURk1vdmUoaW1hZ2UpKQogICAgICwgbV9pZChnZXRDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEKG1faW1hZ2UuZ2V0KCkpKQogICAgICwgbV9jbGVhckNvbnRlbnRzVGltZXIo
KnRoaXMsICZDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y2xlYXJDb250ZW50c1RpbWVyRmlyZWQp
CiAgICAgLCBtX2lzRGlydHkoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEltYWdlQmFja2luZy5oCmluZGV4IGI4NjAzYzY4ZTYzLi40YzY5ZTU4MjY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VC
YWNraW5nVmlzaWJsZSgpID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGllbnQqLCBQYXNzUmVmUHRyPEltYWdlPik7
CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCYs
IFJlZjxJbWFnZT4mJik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoKTsK
IAogICAgIHN0YXRpYyBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGdldENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQoSW1hZ2UqKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50
KiwgUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVu
dCYsIFJlZjxJbWFnZT4mJik7CiAKICAgICB2b2lkIHJlbGVhc2VTdXJmYWNlSWZOZWVkZWQoKTsK
ICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlJZk5lZWRlZChib29sJiBjaGFuZ2VkVG9WaXNpYmxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4u
Y3BwCmluZGV4IDFlNThiZWUwYWYwLi4wZDg4MjBlOWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVz
b3VyY2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxp
ZGF0ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOwotICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgIGltZy0+c2V0
RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4gaW1nLnJlbGVhc2UoKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIobmFtZSk7CisgICAgYXV0
byBpbWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6
Z2V0SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMi4uMTZiNmI1ZGZmODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKQEAgLTkz
LDIwICs5MywxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNy
ZWF0ZVdpbmRvdyhIV05EIHBhcmVudEh3bmQpCiB9CiAKICNpZiBVU0UoQ0EpCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiByb290Q2hpbGQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFJlZjxQbGF0Zm9ybUNBTGF5ZXI+JiYg
cm9vdENoaWxkKQogewotICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hpbGQpCisgICAgaWYg
KG1fcm9vdENoaWxkID09IHJvb3RDaGlsZC5wdHIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fcm9vdENoaWxkKQogICAgICAgICBtX3Jvb3RDaGlsZC0+cmVtb3ZlRnJvbVN1cGVybGF5
ZXIoKTsKIAotICAgIG1fcm9vdENoaWxkID0gcm9vdENoaWxkOwotCi0gICAgaWYgKCFtX3Jvb3RD
aGlsZCkgewotICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBudWxscHRyOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIG1fcm9vdENoaWxkID0gV1RGTW92ZShyb290Q2hpbGQpOwogCiAgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmgKaW5kZXggY2RkMGNhMzA0MTAuLjRhMjBkOWUwYTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogCiAjaWYgVVNFKENBKQogICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdENoaWxk
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDaGlsZC5nZXQoKTsgfQotICAgIHZvaWQgc2V0
Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KTsKKyAgICB2b2lkIHNl
dFJvb3RDaGlsZExheWVyKFJlZjxQbGF0Zm9ybUNBTGF5ZXI+JiYpOwogI2VuZGlmCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0
dGVybkRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
YXR0ZXJuRGlyZWN0MkQuY3BwCmluZGV4IDFiOTIyOWU4NjY1Li45ZGZiNWFlZDU5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5E
aXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRtYXBCcnVzaCogUGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAg
ICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSUQyRDFCaXRtYXBCcnVz
aCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250
ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5hdGl2ZUltYWdlKCZjb250ZXh0
KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRl
cm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFw
QnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJy
dXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNT
RVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmgKaW5kZXggODllNDIxOTNkZWYuLjRjZTM2N2I2ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIFNoYXJlZEdESU9iamVjdF9oCiAjZGVmaW5lIFNoYXJlZEdESU9i
amVjdF9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2Jq
ZWN0Lmg+CiAKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2hhcmVkR0RJT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8
U2hhcmVkR0RJT2JqZWN0PFQ+PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkR0RJT2JqZWN0PiBjcmVhdGUoR0RJT2JqZWN0PFQ+IG9iamVjdCkKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmplY3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEdESU9iamVjdDxUPihXVEZNb3ZlKG9iamVj
dCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkR0RJT2JqZWN0PFQ+KFdU
Rk1vdmUob2JqZWN0KSkpOwogICAgIH0KIAogICAgIFQgZ2V0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDQyNTRl
ZjkwOTdiLi5lNWJmMDRkYjIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTogewog
ICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlT3BlcmF0aW9uID0gZG93bmNhc3Q8UmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgZWZmZWN0ID0g
YnVpbGRSZWZlcmVuY2VGaWx0ZXIocmVuZGVyZXIsICpwcmV2aW91c0VmZmVjdCwgcmVmZXJlbmNl
T3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJlZmVyZW5jZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZl
Y3QoZWZmZWN0KTsKKyAgICAgICAgICAgIHJlZmVyZW5jZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZl
Y3QoZWZmZWN0LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKaW5kZXggYmQxZTU1ZTQwNzUu
LjFhOTRhNTYzMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2VSZXNvdXJj
ZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3VyY2U6
OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAgIHJldHVybiBtX2NhY2hlZEltYWdl
ID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihtX3JlbmRlcmVyKSA6IEltYWdlOjpu
dWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBi
b29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwCmluZGV4IGVhOTM2YTRkYzgyLi4wZmI4MjgwZTE5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgdW5zCiAKICAgICAvLyBC
dWlsZCBwYXR0ZXJuLgogICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EYXRhPigpOwotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRl
KGNvcGllZEltYWdlLCB0cnVlLCB0cnVlKTsKKyAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBh
dHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsK
IAogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRl
eCA3NWYyNGM0ZTI2Ny4uNzQ3ZWEyYjhlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xODgsOCArMTg4LDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIGNvbnN0IENvbG9yJiBjb2xvciA9IHJlbmRlcmVy
LT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExl
bmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
ZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxV
bml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBsaWdodFNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAg
IHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNTU2NWI5MWQxMmIuLjczNDMxNzAzMmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xOTksOCArMTk5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAK
ICAgICBjb25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxp
Z2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3Bl
Y3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVj
dWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5n
dGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNl
U2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVu
aXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmNwcAppbmRleCAzOTlkNmJhZTVhNi4uNDRkMGNiYTgxZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
SW1hZ2UqIFNWR0ltYWdlQ2FjaGU6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBhdXRvKiBpbWFnZSA9IGZpbmRJbWFnZUZvclJlbmRl
cmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51
bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKICAgICBBU1NF
UlQoIWltYWdlLT5zaXplKCkuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gaW1hZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDg1
NzE4NTA4NDEwLi4zNTcyMDcxMTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgOjpTaG93V2luZG93KG1f
ZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCBTV19TSE9XKTsKIAogI2lmIFVTRShDQSkKLSAgICBt
X2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkKTsKKyAgICBt
X2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGlsZExheWVyKCptX3Jvb3RDaGlsZCk7CiAKICAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3Jt
Q0FMYXllcihtX3ZpZGVvRWxlbWVudC0+cGxhdGZvcm1MYXllcigpKTsKICAgICBBU1NFUlQodmlk
ZW9MYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcAppbmRleCBiZGQ5NDE4YjdmMy4uN2MzZmJi
MjczZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQg
c2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5n
IHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJL
SVRfQVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJj
ZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRl
bXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApAQCAtMjI1LDE3ICsyMjUsMTcgQEAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSkKICAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJmc1ZpZGVvUGxheSIp
KQogICAgICAgICBpZHIgPSBJRFJfRlNfVklERU9fUExBWTsKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEhSU1JDIHJlc0luZm8gPSBG
aW5kUmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtFSU5UUkVTT1VSQ0UoaWRyKSwgTCJQTkciKTsKICAg
ICBpZiAoIXJlc0luZm8pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBIQU5ETEUgcmVzID0gTG9hZFJlc291cmNlKGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAg
ICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB2b2lkKiByZXNvdXJjZSA9IExvY2tSZXNvdXJjZShyZXMpOwogICAgIGlmICghcmVzb3Vy
Y2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNp
Z25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3RhbmNlLCByZXNJbmZvKTsKIAogICAgIHJl
dHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3NWEuLjc2MTVmMDkxZGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTM0OSw5ICszNDksOSBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4
dHVyZU1hcHBlckxheWVyKiBsYQogICAgIGlmIChtX2JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5
ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotICAg
IG1fYmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7Ci0gICAgbGF5ZXItPnNl
dEJhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQo
bGF5ZXIsIGJhY2tpbmdTdG9yZS5jb3B5UmVmKCkpOworICAgIGxheWVyLT5zZXRCYWNraW5nU3Rv
cmUoV1RGTW92ZShiYWNraW5nU3RvcmUpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5
ZXIpCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJl
bW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAo
IWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGF5ZXItPnNldEJhY2tpbmdT
dG9yZSgwKTsKKyAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKG51bGxwdHIpOwogfQogCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNp
emUoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggN2FmNjY0OGIwZTEuLjUzZjA1Y2UwMDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtOTY0LDcgKzk2NCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDdXJzb3I+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgQ3Vyc29yJiBjdXJzb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghaXNWYWxpZEltYWdlUHJlc2VudCkgewotICAgICAgICBjdXJzb3IgPSBDdXJz
b3IoSW1hZ2U6Om51bGxJbWFnZSgpLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY3Vyc29yID0gQ3Vy
c29yKCZJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50KCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggZTU1NzJlMTZkNWUuLjgxMWVlZWEyMGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5j
TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0
YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0K
IAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpj
cmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSogaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lm
TmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJl
KGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCYWNraW5n
cy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZpbWFnZV0geworICAgICAgICByZXR1cm4gQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgqdGhpcywgaW1hZ2UpOwogICAgIH0pOwogICAgIHJl
dHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBkMmNhNzg0YjM5MC4u
N2M1NDAxODczMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIC8vIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudAogICAgIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hh
bmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsg
fQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJ
bWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoV2ViQ29yZTo6SW1hZ2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGFjaExheWVyKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIGJvb2wgcGFpbnRU
b1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYs
IFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309755</attachid>
            <date>2017-05-11 12:53:33 -0700</date>
            <delta_ts>2017-05-11 13:01:35 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>171977_PassRefPtr_graphics_wip.patch</filename>
            <type>text/plain</type>
            <size>141890</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZm
Li5mOTBmN2Q5NTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBJbWFnZSogQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgYXV0byog
Y2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVlLCBjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFnZSB8fCAh
Y2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAg
ICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBmcm9tSW1hZ2UgPSBj
YWNoZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKICAgICBhdXRvKiB0
b0ltYWdlID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpOwogCiAg
ICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgbV9n
ZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21JbWFn
ZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShy
ZW5kZXJlciksIHNpemUpOwogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDE1YzNjYWY4Njlj
Li43MzU2Y2U1ODRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcApAQCAtMTIwLDE3ICsxMjAsMTcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZh
dWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAg
IC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0
MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgogICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIGF1dG8g
aW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2VS
ZWN0KGltYWdlUmVjdCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRlclJlZ2lvbihpbWFn
ZVJlY3QpOwogICAgIGlmICghZmlsdGVyUmVuZGVyZXItPmJ1aWxkKCpyZW5kZXJlciwgbV9maWx0
ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogICAgIGZpbHRl
clJlbmRlcmVyLT5hcHBseSgpOwogCiAgICAgcmV0dXJuIGZpbHRlclJlbmRlcmVyLT5vdXRwdXQo
KS0+Y29weUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiMGFkZjA1ZDFlZC4uNzliODA4NjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWEuLmVjMTBjZDVmZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBp
bWFnCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVy
bCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYjE5OGE3YzQ0ZWYuLjdkZGI3NTMyMDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTE1NywxMyArMTE1NywxMSBAQCB2b2lkIFNjcm9s
bFZpZXc6OnBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7Ci0gICAg
aWYgKCFwYW5TY3JvbGxJY29uKQotICAgICAgICByZXR1cm47CisgICAgc3RhdGljIEltYWdlJiBw
YW5TY3JvbGxJY29uID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJwYW5JY29uIikubGVh
a1JlZigpOwogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0gbV9wYW5TY3JvbGxJY29uUG9pbnQ7
CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQb2ludCA9IHBhcmVudCgpLT53aW5k
b3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Ny
b2xsSWNvbiwgaWNvbkdDUG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbElj
b24sIGljb25HQ1BvaW50KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCAzY2M3NzBjNzY4MC4uM2QwNTI2NGZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9h
ZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgp
IHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1fZnJv
bUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1ZDRh
OS4uZDQ3NzFhOTY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlRl
eHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGIyMGJj
MTIwOTBhLi5jNDcwNzQ2NDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTUwNyw3ICs1MDcsNiBAQCBwdWJsaWM6CiAg
ICAgSERDIGhkYygpIGNvbnN0OwogI2lmIFBMQVRGT1JNKFdJTikKICNpZiBVU0UoV0lOR0RJKQot
ICAgIHZvaWQgc2V0Qml0bWFwKFBhc3NSZWZQdHI8U2hhcmVkQml0bWFwPik7CiAgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBBZmZpbmVUcmFu
c2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpOwogICAgIHZvaWQgcmVzZXRBZmZpbmVUcmFuc2Zvcm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA1M2Ey
MmFhNjg0MS4uZTg1M2JmZWJlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsKIH0KIAot
SW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2UoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxsSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVsbEltYWdl
OworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCBkZjlmMDQyNmY2ZS4uNzA2NDMwM2IyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkltYWdlVHlw
ZXMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpA
QCAtNzksOCArNzgsNyBAQCBjbGFzcyBJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2U+IGxv
YWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4LDcgKzk2
LDcgQEAgcHVibGljOgogICAgIC8vIHRoZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBm
cm9tIGl0cyBvd24gc2VjdXJpdHkgb3JpZ2luLgogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBJbWFnZSYgbnVsbEltYWdlKCk7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBz
aXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2NDliNjg2N2Q0MC4uNTUwM2Q3YTE3YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTEyNTEsNyArMTI1MSw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hl
ZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKQorUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVy
KCkKIHsKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRl
cigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNTQ2NmUyMjJkMDcuLjQ3MmQ3NTY5YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1MjgsNyBAQCBwdWJs
aWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7CisgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9U
cmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5jcHAKaW5kZXggYTlhY2NjMjg0NjguLjI1MWUwNzY2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVm
UHRyPEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBh
dHRlcm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKHRp
bGVJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBh
dHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CiAKLVBhdHRl
cm46OlBhdHRlcm4oUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCBy
ZXBlYXRZKQotICAgIDogbV90aWxlSW1hZ2UoaW1hZ2UpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxJ
bWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCisgICAgOiBtX3RpbGVJ
bWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcmVwZWF0WChyZXBlYXRYKQogICAgICwgbV9y
ZXBlYXRZKHJlcGVhdFkpCiB7Ci0gICAgQVNTRVJUKG1fdGlsZUltYWdlKTsKIH0KIAogUGF0dGVy
bjo6flBhdHRlcm4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CmluZGV4IDI1NmZhMmQ1ZmI0Li40ODM4NmZhZGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0
ZXJuIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9v
bCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRl
KFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICAg
ICB+UGF0dGVybigpOwogCi0gICAgSW1hZ2UqIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLmdldCgpOyB9CisgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZUltYWdlLmdldCgpOyB9CiAKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCkBA
IC03Niw5ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVy
biBtX3JlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8SW1hZ2U+JiYs
IGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKIAotICAgIFJlZlB0cjxJbWFnZT4gbV90aWxl
SW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RpbGVJbWFnZTsKICAgICBib29sIG1fcmVwZWF0WDsK
ICAgICBib29sIG1fcmVwZWF0WTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRleHRUcmFjay5oCmluZGV4IDIwYmUzZDE3YWZmLi45NWY2NTUzZWZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRU
cmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBTaG93aW5nCiAgICAg
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRl
KFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgVHJh
Y2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2lu
ZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFn
ZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBs
YW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGVP
dXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1
ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRyYWNrPiBj
cmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50
IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1v
ZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3Vh
Z2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNEZWZhdWx0KSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0KQEAgLTg3LDE1ICs4
NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlx
dWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmF1bHQ7
IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVtKCkK
KyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpCiAgICAg
ewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0
bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJh
Y2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0
ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAg
ICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2Fw
dGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNh
cHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
ImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCku
bGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGF1dG9tYXRpYyA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0i
LCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICBy
ZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiNDliZDFlMzdmMC4u
MmM5MzUyMDYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVB
VkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0
IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1JlZjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3Jl
YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihr
aW5kLCBjdWVGb3JtYXQsIGlkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKGtpbmQsIGN1ZUZvcm1hdCwgaWQpKTsKIH0KIAogSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkYoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQpA
QCAtNTUsNyArNTUsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoKQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBwcnBDdWVEYXRhLCBjb25zdCBTdHJp
bmcmIHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6YWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIGN1ZURhdGEsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gRGF0YSk7CiAgICAgQVNTRVJUKHN0
YXJ0ID49IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CkBAIC02MywxMSArNjMsMTAgQEAgdm9pZCBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QKICAgICBpZiAoIWNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGN1ZURhdGEgPSBw
cnBDdWVEYXRhOwogICAgIG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IHN0YXJ0OwogICAgIGlmIChl
bmQuaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5k
KEluY29tcGxldGVNZXRhRGF0YUN1ZSB7IGN1ZURhdGEuZ2V0KCksIHN0YXJ0IH0pOwotICAgIGNs
aWVudCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGN1ZURhdGEucmVsZWFzZU5vbk51bGwoKSwg
dHlwZSk7CisgICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5kKEluY29tcGxldGVNZXRhRGF0
YUN1ZSB7IGN1ZURhdGEucHRyKCksIHN0YXJ0IH0pOworICAgIGNsaWVudCgpLT5hZGREYXRhQ3Vl
KHN0YXJ0LCBlbmQsIFdURk1vdmUoY3VlRGF0YSksIHR5cGUpOwogfQogCiB2b2lkIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6dXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0
IE1lZGlhVGltZSYgdGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBmZjQyZmEyZjQ0Zi4uNTJmZDlhNmExN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEluY29tcGxldGVNZXRhRGF0YUN1
ZSB7CiAKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5kLCBDdWVGb3JtYXQs
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOworICAgIHN0YXRpYyBSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoS2luZCwgQ3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKTsKIAogICAgIH5JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYoKTsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpIHsgbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVm
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
aW5kZXggOTU5NmY4Y2EzYzEuLmE3Y2FhNmVjOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9y
IHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYi
LCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEt
PnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdl
bmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmlj
Q3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0YXR1cyA9IHNlZWtpbmco
KSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5ZGQuLjc4NjM1NDE0MWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaApA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiAKIGNs
YXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDJiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
JiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKIAogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCk7CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBB
Vk1lZGlhU2VsZWN0aW9uR3JvdXAqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0
aWNzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CiAgICAgfk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKCk7
CiAKICAgICB2b2lkIHNldFNlbGVjdGVkT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2Jq
QyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CmluZGV4IDhkZWUwOWNlMDg2Li4zMGY4MWFkY2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtNDgsOSArNDgsOSBAQCBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDPiBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKK1JlZjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqb3B0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDKGdyb3VwLCBvcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOwogfQogCiBNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikK
QEAgLTg1LDkgKzg1LDkgQEAgaW50IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6aW5kZXgo
KSBjb25zdAogICAgIHJldHVybiBbW21fZ3JvdXAtPmF2TWVkaWFTZWxlY3Rpb25Hcm91cCgpIG9w
dGlvbnNdIGluZGV4T2ZPYmplY3Q6bV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKV07CiB9CiAK
LVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9uR3Jv
dXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQorUmVmPE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3Jl
YXRlKEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJp
c3RpY3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyhpdGVtLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKSk7CiB9CiAKIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyhBVlBsYXllckl0ZW0gKml0
ZW0sIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
aGFyYWN0ZXJpc3RpY3MpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdy
b3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVy
aXMKICAgICBmb3IgKEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIGFkZGVkQVZPcHRpb24gaW4gYWRk
ZWRBVk9wdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgYXV0byBhZGRlZE9wdGlvbiA9IE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKCp0aGlzLCBhZGRlZEFWT3B0aW9uKTsKICAgICAg
ICAgaWYgKGFkZGVkQVZPcHRpb24gPT0gc2VsZWN0ZWRPcHRpb24pCi0gICAgICAgICAgICBtX3Nl
bGVjdGVkT3B0aW9uID0gYWRkZWRPcHRpb24uZ2V0KCk7CisgICAgICAgICAgICBtX3NlbGVjdGVk
T3B0aW9uID0gYWRkZWRPcHRpb24ucHRyKCk7CiAgICAgICAgIG1fb3B0aW9ucy5zZXQoYWRkZWRB
Vk9wdGlvbiwgV1RGTW92ZShhZGRlZE9wdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAppbmRleCA5MGExODYxOWUw
Mi4uMWEzZGY5MTdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAg
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1
ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uLCBmb3JtYXQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVy
LCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMyNjgwZS4uYzNhMGU4OGY0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRj4gY3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJh
Y2tSZWYgdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZDRj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFW
Q0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0YocGxheWVyLCB0cmFjaykpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA1ZmQwMjZhMzRkLi4yOWM0N2EwNjJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDUsMTEgKzQ1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCitSZWY8V2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcj4gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWYgYXZSZXF1ZXN0KQogewogICAgIEFTU0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VS
VChwYXJlbnQpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QpKTsKIH0KIAogV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcjo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0UmVmIGF2UmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGEwZjBkZDhiMDg0Li5kYWUwNmUxOTIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogY2xh
c3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFy
ZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0
YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEyZWI3OWIuLjBkYTJhZDA2Yjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7CiAKIHByb3RlY3RlZDoK
LSAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOworICAgIFJlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKTsKIAogICAgIGJvb2wgaGFzQ29udGVudEtl
eVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRLZXlTZXNzaW9uOyB9CiAgICAgQVZD
b250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXgg
NTUxM2YzZGZmNWIuLmMyMjQzNDcwMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMzA5LDcgKzMwOSw3
IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0
cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICBbY29udGVudEtleVNlc3Npb24oKSByZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAKLVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCitSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
CiB7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRl
ID0gbV9pbml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24uaAppbmRleCBiOGM3ZDliOWUxMy4uYjBiNTNlOGRmNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVh
bVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJf
dCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
OwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFr
UHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Np
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbQppbmRleCBlODUxOWUyNmE2Yi4uNmVhYzY5ODhlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFW
U3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHJlbW92
ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQorUmVmUHRyPFVpbnQ4
QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3Nh
Z2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAg
ICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRlID0gbV9p
bml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IDg4YTkyMmE1ZDcwLi4xOGE5NGFkM2NjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRk9iakM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVG
b3JtYXQgZm9ybWF0KQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9y
bWF0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQyhwbGF5ZXIsIHNlbGVjdGlvbiwgZm9ybWF0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2Vs
ZWN0aW9uLCBmb3JtYXQpKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCmluZGV4IGYzODVhM2YyYzZiLi5iODQx
NTRjNjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAg
ICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaAppbmRleCBhMTRjNDFlM2VkZS4uYjdhMjRiNjgyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTM2LDkg
KzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgT3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBj
cmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRp
b24qIHNlbGVjdGlvbikKKyAgICBzdGF0aWMgUmVmPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkY+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiogc2VsZWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVy
LCBzZWxlY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlS
ZWYsIENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3ZDdm
NzczNmU4MC4uZjVlMzc0MDQyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+LCBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CiAgICAgdmlydHVhbCB+V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDc2MDMwZDIy
YjI0Li40ZjdkNDFkNWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1Jl
ZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0
KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQog
CiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNC4u
NjUxMTNiMGQyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdy
YXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK1JlZjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIHJlc3VsdCA9IFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CkBAIC0zNTYsMTMgKzM1Niwx
MyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheQogICAgIGlmIChyZXN1bHQtPmNhbkhhdmVCYWNr
aW5nU3RvcmUoKSkKICAgICAgICAgcmVzdWx0LT5zZXRXYW50c0RlZXBDb2xvckJhY2tpbmdTdG9y
ZShzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSk7CiAgICAgCi0gICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAg
IHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShsYXllclR5cGUsIG93bmVyKTsKICNl
bmRpZgogfQogICAgIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIs
IG93bmVyKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllcgogI2Vu
ZGlmCiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllciwgQwogICAgIC8vIHRoZSBjcmVhdG9yIG9mIHRoZSByYXcgbGF5ZXIgaXMgdXNp
bmcgaXQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZS4KICAgICAvLyBGb3Igbm93IHdlIGRvbid0IHN1
cHBvcnQgc3VjaCBhIGNhc2UuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyKTsKLSAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRm
b3JtQ0FMYXllciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKSkg
OiBudWxscHRyOworICAgIG1fY29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5ZXIgPyAocGxhdGZv
cm1DQUxheWVyID8gcGxhdGZvcm1DQUxheWVyIDogY3JlYXRlUGxhdGZvcm1DQUxheWVyKHBsYXRm
b3JtTGF5ZXIsIHRoaXMpLnB0cigpKSA6IG51bGxwdHI7CiAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBwdXJwb3NlIDogTm9Db250ZW50c0xheWVyOwogCiAgICAg
aWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyICYmIG1fY29udGVudHNMYXllcikKQEAgLTI2ODUs
NyArMjY4NSw3IEBAIEdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJl
cGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkK
K1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGljYXRlZExheWVy
Um9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKIHsKICAgICAvLyBMaW1pdCByZXBsaWNh
IG5lc3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCiAgICAg
aWYgKCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0g
UmVwbGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCkBAIC0yOTA3LDcgKzI5MDcsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdQogICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlB
bmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgp
LCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOworICAgIG1fdW5jb21pdHRlZEFuaW1h
dGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5v
bk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI5MzQsNyAr
MjkzNCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0
aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgaWYgKCF2YWxpZE1hdHJpY2Vz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFw
cGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2
YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQpKTsKKyAg
ICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNh
QW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMDE1LDcgKzMwMTUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5k
VG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKHZhbHVlc09LKTsKIAotICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCwgdGltZU9mZnNldCkpOworICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVh
c2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4LCB0aW1lT2Zmc2V0KSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDU0LDI0ICszMDU0LDI0IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1Jl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFk
ZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKLSAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZl
KTsKKyAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZv
cm1DQUFuaW1hdGlvbjo6QmFzaWMsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGJhc2lj
QW5pbS5wdHIoKSwgYW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBiYXNpY0FuaW07CiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xh
eWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBs
YXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKLSAgICBzZXR1cEFuaW1hdGlv
bihrZXlmcmFtZUFuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBhdXRvIGtleWZyYW1l
QW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5
ZnJhbWUsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbS5wdHIoKSwg
YW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBrZXlmcmFtZUFuaW07CiB9CiAKLVJlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNwcmluZ0FuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRp
dGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNw
cmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhZGRpdGl2ZSkKIHsKICAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3Jt
Q0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6U3ByaW5nLCBrZXlQYXRoKTsKLSAgICBz
ZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1cm4g
YmFzaWNBbmltOwogfQogCkBAIC0zNzQwLDcgKzM3NDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKICAg
ICBzZXRMYXllckRlYnVnQm9yZGVyKCpjb250ZW50c0xheWVyLCBjb250ZW50c0xheWVyRGVidWdC
b3JkZXJDb2xvcihpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKSwgY29udGVudHNMYXllckJvcmRlcldp
ZHRoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6
ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpzb3VyY2VM
YXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBj
bG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBD
bG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgaWYgKCFzb3VyY2VMYXllcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKFNjaGVkdWxlRmx1c2hPck5vdCBzY2hl
ZHVsZQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGlj
YVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xh
eWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwg
Y2xvbmVMZXZlbCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBwcmltYXJ5TGF5ZXI7
CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOwpAQCAtMzk2Nywx
NiArMzk2NywxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNsb25l
TGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVm
PFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FM
YXllciAqbGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsKKyAgICBhdXRvIG5ld0xh
eWVyID0gbGF5ZXItPmNsb25lKHRoaXMpOwogCiAgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJt
ZWRpYXRlQ2xvbmVMZXZlbCkgewogICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+
b3BhY2l0eSgpKTsKLSAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLmdldCgp
KTsKKyAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLnB0cigpKTsKICAgICB9
CiAKLSAgICBzZXRMYXllckRlYnVnQm9yZGVyKCpuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9y
ZGVyQ29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7
CisgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcihuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9yZGVy
Q29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7CiAK
ICAgICByZXR1cm4gbmV3TGF5ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IGI5YjE4NDJmZmVmLi41MTM5
ZmFmODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIxOSw5ICsyMTksOSBAQCBwcml2YXRlOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKik7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBs
YXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
cik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNy
ZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIpOworICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogcHJpbWFyeUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGhvc3RM
YXllckZvclN1YmxheWVycygpIGNvbnN0OwpAQCAtMjQwLDkgKzI0MCw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpOwogCiAgICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmlt
YXRpb24gKHVzZSBSZXRhaW5QdHI/KQotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgYWRkaXRpdmUpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVh
dGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBh
ZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2
ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkaXRpdmUpOworICAgIFJl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1h
dGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2
ZSk7CiAgICAgCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmltYXRpb24mKTsKQEAg
LTM2NiwxMyArMzY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNo
VHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7CiAgICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsK
ICAgICB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJik7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBsaWNhdGVk
TGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYpOwogCiAgICAgZW51bSBDbG9uZUxldmVsIHsgUm9vdENs
b25lTGV2ZWwsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwgfTsKLSAgICBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwg
UmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRl
JiwgQ2xvbmVMZXZlbCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNs
b25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICosIENsb25lTGV2ZWwpOwotICAgIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVy
ICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY2xv
bmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmluZE9yTWFrZUNsb25lKENsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqLCBM
YXllck1hcCosIENsb25lTGV2ZWwpOwogCiAgICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9u
ZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc3RydWN0dXJhbExheWVyLAogICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgY29udGVudHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xp
cHBpbmdMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzU2hhcGVNYXNrTGF5
ZXIsCkBAIC01NjAsOCArNTYwLDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxl
IHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgogICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Ig
a2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNl
LgogICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKLSAgICAgICAgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotICAgICAgICAg
ICAgOiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKKyAgICAgICAgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbihSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4mJiBjYUFuaW1hdGlvbiwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCwg
aW50IHN1YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKKyAgICAgICAgICAgIDogbV9hbmltYXRp
b24oV1RGTW92ZShjYUFuaW1hdGlvbikpCiAgICAgICAgICAgICAsIG1fbmFtZShhbmltYXRpb25O
YW1lKQogICAgICAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQogICAgICAgICAgICAgLCBt
X2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGNjOGQ4M2ZlMmYzLi5hMDJiMzE1
OGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBl
IGFuaW1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EuaAppbmRleCBiZTQzYTk5NDZhNC4uNTFlYTgzM2MzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCkBAIC00OCwxNCArNDgsMTQgQEAgdm9pZCBzZXRIYXNF
eHBsaWNpdEJlZ2luVGltZShDQUFuaW1hdGlvbiAqLCBib29sKTsKIAogY2xhc3MgUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ0FBbmltYXRpb24gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShB
bmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFu
aW1hdGlvblJlZik7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUo
QW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlv
blJlZik7CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKTsKIAogICAg
IGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1BbmltYXRpb25SZWYgcGxhdGZvcm1BbmltYXRpb24o
KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpp
bmRleCAzNTI2ZDYzZmVlNi4uNjYxY2Q0MTI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0KQEAgLTE0OSwxNCArMTQ5LDE0IEBAIENBTWVkaWFUaW1pbmdGdW5j
dGlvbiogV2ViQ29yZTo6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpCiAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFt
ZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uTGluZWFyXTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25U
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYSh0eXBlLCBrZXlQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUsIGtleVBhdGgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0
ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYg
YW5pbWF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hKGFuaW1hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYShhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCkBAIC0xOTYsOSArMTk2LDkgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
Ojp+UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHkoKSBjb25zdAorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlvbiA9IGNyZWF0
ZShhbmltYXRpb25UeXBlKCksIGtleVBhdGgoKSk7CisgICAgYXV0byBhbmltYXRpb24gPSBjcmVh
dGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOwogICAgIAogICAgIGFuaW1hdGlvbi0+c2V0
QmVnaW5UaW1lKGJlZ2luVGltZSgpKTsKICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0
aW9uKCkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKICAgICBhbmltYXRpb24t
PmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oKnRoaXMpOwogICAgIGFuaW1hdGlvbi0+c2V0VmFsdWVG
dW5jdGlvbih2YWx1ZUZ1bmN0aW9uKCkpOwogCi0gICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUo
ZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPigqYW5pbWF0aW9uKS5wbGF0Zm9ybUFu
aW1hdGlvbigpLCBoYXNFeHBsaWNpdEJlZ2luVGltZShwbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cisg
ICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hPihhbmltYXRpb24uZ2V0KCkpLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0QmVn
aW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKICAgICAKICAgICAvLyBDb3B5IHRoZSBzcGVj
aWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMuCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9
PSBLZXlmcmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
MzlmYzhiMDk4NjYuLjBhYjU4ZTdlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRy
ZWVIb3N0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3Mg
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9y
bUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVu
ZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDRhZWIxNDBjNWNhLi40YThmNTk3MjdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9z
dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWlsYWJs
ZTsKIH0KIAotUGFzc1JlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gQ0FDRkxheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpCitSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0Ojpj
cmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCw5ICsyMDgsOSBAQCBQbGF0Zm9ybUNBTGF5
ZXIqIENBQ0ZMYXllclRyZWVIb3N0Ojpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3Jv
b3RMYXllci5nZXQoKTsKIH0KIAotdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0Fu
aW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQordm9pZCBDQUNG
TGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBs
YXllcikKIHsKLSAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5hZGQobGF5ZXIpOworICAgIG1f
cGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmFkZCgmbGF5ZXIpOwogfQogCiB2b2lkIENBQ0ZMYXllclRy
ZWVIb3N0OjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuaAppbmRleCA5ZTRlZDgyNWVlNS4uNTQyNGIwMDUwNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01Nyw3ICs1Niw3IEBAIGNsYXNzIFRpbGVkQmFja2luZzsK
IAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDQUNGTGF5ZXJU
cmVlSG9zdD4sIHByaXZhdGUgQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkNB
Q0ZMYXllclRyZWVIb3N0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemUoKTsKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1D
QUxheWVyJik7CiAgICAgdmlydHVhbCB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOwogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCAyN2RlMmI1ZDU3Ni4uOTBhODNm
MGE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCAr
MTQyLDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdG
dW5jdGlvbkdldEZ1bmN0aW9uV2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9
CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmlt
YXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkp
OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5p
bWF0aW9uUmVmIGFuaW1hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4oYW5pbWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1DQUFuaW1hdGlvbldpbihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6UGxhdGZvcm1DQUFuaW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCkKQEAgLTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2lu
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikK
ICAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1h
dGlvblR5cGUoKSwga2V5UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmlt
YXRpb25UeXBlKCksIGtleVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRp
bWUoYmVnaW5UaW1lKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNC4uMTYyZDYy
NmE2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaApAQCAtMzgsMTQgKzM4LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1DQUFuaW1hdGlvbldpbiBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRpYyBSZWY8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZv
cm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1DQUFuaW1hdGlvbldpbigp
OwogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25XaW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNv
cHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtQW5pbWF0aW9uUmVmIHBsYXRmb3Jt
QW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4
IGQzN2YyNDFhYThhLi41ZTE0OWZkNGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6YWRkQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aQogICAgIC8vIFRlbGwg
dGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVu
dAogICAgIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QqIGhvc3QgPSBsYXllclRyZWVIb3N0Rm9y
TGF5ZXIodGhpcyk7CiAgICAgaWYgKGhvc3QpCi0gICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmlt
YXRlZExheWVyKHRoaXMpOworICAgICAgICBob3N0LT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcigq
dGhpcyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpyZW1vdmVBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cAppbmRleCAyZjEzNGEwM2FlMi4uODI1YThkMDE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2Nk
ZWNsCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNG
Vmlld1NldFNob3VsZEludmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2
aWV3LCBib29sIHNob3VsZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERl
dmljZTkqLCBfY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FD
RlZpZXdMYXllclRyZWVIb3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1Jl
ZlB0cjxXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpCiB7CiAgICAgaWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZp
ZXdMYXllclRyZWVIb3N0LmgKaW5kZXggZTRkYjJjNDQ4MjkuLjM3Y2EwNzMzMWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0IDogcHVibGljIENBQ0ZM
YXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxXS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlUmVuZGVyZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BhdHRlcm5DYWlyby5jcHAKaW5kZXggODFiYzdjZTk2YmEuLjdlNWRmMDQ0YzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19w
YXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0
aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3Bh
dHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKaW5kZXggYTBlN2ZmODczYmMuLjg3NjM0ODAyNDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0Q2Fpcm86OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhCiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAm
eDIsICZ5Mik7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSk7CiAKLSAgICBJbWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpOwotICAgIEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFn
ZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNw
YWNlVHJhbnNmb3JtKCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5z
Zm9ybS5tYXBSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRl
cm5JbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJu
VHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBw
YXR0ZXJuSW1hZ2UuaGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1My4uOTZlYjgzY2E1ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNz
IFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKKyAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERG
RG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
REZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQZGZJbWFn
ZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDcxODYwMDkyMGE5
Li45OGU2OWRlOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5S
ZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bWF0aW9uKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGVJbWFnZSgpLT5y
ZWN0KCk7CisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1h
dGlvbiAqIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CiAgICAgcGF0dGVyblRyYW5zZm9y
bS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYg
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNl
clNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMs
IHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0
b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYg
KG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAg
ICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGlu
Z0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVz
ZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlv
bnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVy
ZWQuCkBAIC04NSw3ICs4NSw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9h
dCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAg
ICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBk
b25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBw
bGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAg
IENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVh
a1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3Mg
PSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwogICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCAx
YjQzMDNjOTgxOC4uNmI5YWU5ZTU0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBA
IC0yNywxNyArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdo
dGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIs
IERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29u
c3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRT
b3VyY2UpCitGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0
aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUs
IGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5n
dGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5n
PiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0
aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxp
Z2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29u
c3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwg
UmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxl
LCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwg
bGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGlu
ZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBr
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2Up
KSk7CiB9CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5
LDE2ICsxMDYsMTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0
aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0
IExpZ2h0U291cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29u
c3QgTGlnaHRTb3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OnNldExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQoteyAgICAKLSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVE
aWZmdXNlTGlnaHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4
IDVmZTJiZTlmNGE1Li43MDM3YzMzMjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAt
MzAsOCArMzAsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNlTGlnaHRp
bmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1
c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LAot
ICAgICAgICBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0
aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKICAgICB2aXJ0
dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdDsKQEAgLTQ5LDE1ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQga2VybmVs
VW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0
KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNvbnN0IExp
Z2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkgb3ZlcnJp
ZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVEaWZmdXNlTGlnaHRpbmcoRmls
dGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0
U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmlu
ZGV4IDI5MjViMGViNjUxLi5mYTBmMjhhZmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC0zMiwxMiAr
MzIsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0aW5nOjpGRUxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAotICAgIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAg
ICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorRkVMaWdodGluZzo6RkVMaWdodGluZyhG
aWx0ZXImIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2xpZ2h0
aW5nVHlwZShsaWdodGluZ1R5cGUpCi0gICAgLCBtX2xpZ2h0U291cmNlKGxpZ2h0U291cmNlKQor
ICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291cmNlKSkKICAgICAsIG1fbGlnaHRp
bmdDb2xvcihsaWdodGluZ0NvbG9yKQogICAgICwgbV9zdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxl
KQogICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KQpAQCAtMjk0LDkgKzI5
Miw2IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiBw
aXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBMaWdodFNvdXJjZTo6UGFpbnRpbmdE
YXRhIHBhaW50aW5nRGF0YTsKICAgICBMaWdodGluZ0RhdGEgZGF0YTsKIAotICAgIGlmICghbV9s
aWdodFNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gRklYTUU6IGRvIHNv
bWV0aGluZyBpZiB3aWR0aCBvciBoZWlnaHQgKG9yIGJvdGgpIGlzIDEgcGl4ZWwuCiAgICAgLy8g
VGhlIFczIHNwZWMgZG9lcyBub3QgZGVmaW5lIHRoaXMgY2FzZS4gTm93IHRoZSBmaWx0ZXIganVz
dCByZXR1cm5zLgogICAgIGlmICh3aWR0aCA8PSAyIHx8IGhlaWdodCA8PSAyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApp
bmRleCBiYWZiZjQ3YzQ1ZS4uMzkyMDI5ODE3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtl
cihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0
Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0g
ICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJj
ZT4pOworICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwg
aW50KTsKICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGlu
Z0RhdGEmLCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRh
JiwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGln
aHRpbmdUeXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBS
ZWY8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29s
b3I7CiAgICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5j
cHAKaW5kZXggZTJlODM0ZjIxYmUuLjhjMTQwODM1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwCkBAIC0yNywxOSArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1G
RVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKLSAgICBmbG9hdCBz
cGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdo
dGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBz
cGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxp
Z2h0U291cmNlKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
IGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNl
PiYmIGxpZ2h0U291cmNlKQorICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRp
bmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVj
dWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLAotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291
cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3Vs
YXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJD
b25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwKLSAgICAgICAga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFU3BlY3VsYXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwg
c3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCiBGRVNwZWN1bGFy
TGlnaHRpbmc6On5GRVNwZWN1bGFyTGlnaHRpbmcoKQpAQCAtMTI0LDE2ICsxMTksMTEgQEAgYm9v
bCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBMaWdodFNvdXJjZSogRkVT
cGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSYg
RkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
bGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKLXsKLSAgICBtX2xp
Z2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpk
dW1wKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCmluZGV4IGUwNGY0NDM2YWE2Li45
ZjkyN2YyNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCkBAIC0yOCw4ICsyOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGlj
IEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5n
PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsCi0gICAgICAgIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogICAg
IHZpcnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IoKSBjb25zdDsKQEAgLTUwLDE1ICs0OSwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNv
bnN0IExpZ2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkg
b3ZlcnJpZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBG
RVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBGRVNwZWN1
bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAKaW5kZXggYTBlMmUxYmY2YWMuLjc4OTIwZWM1MDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlm
ICghdGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAg
IGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25O
dWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zv
cm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54
KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4
RWZmZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZC4u
OThiODZkMDE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTIzMiwyNCArMjMyLDI0IEBAIElt
YWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkK
K1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2Fs
ZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
ICAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBjb3B5VW5tdWx0
aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1cm4gV1RGTW92ZShp
bWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50
UmVjdCYgcmVjdCkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1By
ZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2Nh
bGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAg
ICAgY29weVByZW11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJl
dHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogaW5s
aW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAppbmRleCBlYTRlYzc3NmY1MC4uNmQzMTdjYWIzMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclJlc3VsdHNS
ZWN1cnNpdmUoKTsKIAogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7Ci0gICAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNV
bm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBj
b3B5VW5tdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bi5jcHAKaW5kZXggMDM1ZTQ1YmIwN2EuLmQ3OWI4YjJhZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYS4uZWM3M2U1OGVmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNjgsMjEgKzY4LDIx
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbHRlck9wZXJhdGlvbigpIHsgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0g
MDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUg
Lypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91
Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFibGVuZGluZ05lZWRzUmVuZGVy
ZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3Qg
TGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQorICAgIHZp
cnR1YWwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wg
LypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJs
ZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KQEAgLTExOSwxNCArMTE5LDE0IEBAIHByb3RlY3RlZDoKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgRGVmYXVsdEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZmF1bHRGaWx0ZXJP
cGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJlc2VudGVkVHlwZSkKKyAgICBzdGF0
aWMgUmVmPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJl
c2VudGVkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZp
bHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNl
bnRlZFR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uKHJlcHJlc2VudGVkVHlwZSgpKSk7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlw
ZSByZXByZXNlbnRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcHJlc2VudGVkVHlwZTsgfQpA
QCAtMTQ1LDE0ICsxNDUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgUGFzc3Rocm91Z2hGaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbigpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNjksMTcgKzE2OSwxNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCkKKyAgICBzdGF0aWMgUmVmPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBmcmFnbWVu
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24odXJsLCBmcmFnbWVudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5SZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24oKTsKIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIGZpbHRlcnMgY2Fubm90IGJlIGNsb25l
ZC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEZpbHRlck9wZXJhdGlvbio+KG51bGxwdHIp
OwogICAgIH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KIAogICAgIEZpbHRlckVm
ZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7
IH0KLSAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwor
ICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYpOwogCiBwcml2
YXRlOgogICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudCk7CkBAIC0yMTMsMTkgKzIxMywxOSBAQCBwcml2YXRlOgogLy8g
Rm9yIEhVRV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQgaW4gbV9hbW91
bnQuCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
IDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQs
IE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CiAgICAgfQogCi0g
ICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24o
YW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAg
ICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFs
c2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKQEAgLTI0NCwyMSArMjQ0LDIxIEBAIHByaXZh
dGU6CiAvLyBJTlZFUlQsIEJSSUdIVE5FU1MsIENPTlRSQVNUIGFuZCBPUEFDSVRZIGFyZSB2YXJp
YXRpb25zIG9uIGEgYmFzaWMgY29tcG9uZW50IHRyYW5zZmVyIGVmZmVjdC4KIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMg
RmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUp
KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50
KCksIHR5cGUoKSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVy
biBtX2Ftb3VudDsgfQogCiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC0yNzYsMTQgKzI3NiwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBCbHVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qmx1ckZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCisgICAgc3RhdGljIFJlZjxCbHVyRmlsdGVyT3Bl
cmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZNb3ZlKHN0ZERldmlhdGlvbikp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZN
b3ZlKHN0ZERldmlhdGlvbikpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Qmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZERldmlhdGlvbigpKSk7CiAgICAgfQog
CiAgICAgY29uc3QgTGVuZ3RoJiBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERl
dmlhdGlvbjsgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92ZXNQ
aXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDcsMTQgKzMwNywxNCBAQCBwcml2YXRlOgog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyBSZWY8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZp
YXRpb24sIGNvbG9yKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2Nh
dGlvbigpLCBzdGREZXZpYXRpb24oKSwgY29sb3IoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uKCksIHN0ZERldmlhdGlv
bigpLCBjb2xvcigpKSk7CiAgICAgfQogCiAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX2xv
Y2F0aW9uLngoKTsgfQpAQCAtMzI2LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVj
dHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92
ZXNQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWFkMTNmMzRkNjkuLmFkMjJiNDdiMWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPFRl
eHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0
IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGludCBtYXhUZXh0dXJlU2l6
ZSA9IDA7CiAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX1NJWkUsICZtYXhUZXh0dXJlU2l6ZSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgUGFzc1Jl
ZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IEZvcm1hdCBmb3JtYXQsIGkKICAgICAgICAgaWYgKCF0ZXh0dXJlSWQpIHsKICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgdGV4
dHVyZUlkcy0+YXQoaSkgPSB0ZXh0dXJlSWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCmluZGV4IDNhYTU1ZjgyMTcxLi41N2E2ODMyN2JkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJl
PiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4LCBC
R1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVm
UHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lkIGxv
YWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBj
b25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGJkMThlNWM1OGM1Li40NzJhYTdkZGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1Ymxp
YyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
PiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRy
PEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiBwYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5k
ZXgsIHBhZCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXIuaAppbmRleCAxZWNkMzM0YmEwZi4uZDNlMDRmNmI3MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1mcmFtZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBJ
bnRTaXplOwogCiBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdl
R1N0cmVhbWVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCisgICAgICAgIHN0YXRp
YyBSZWY8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdlKEdzdFNhbXBsZSogc2FtcGxlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNh
bXBsZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VHU3RyZWFtZXIo
c2FtcGxlKSk7CiAgICAgICAgIH0KICAgICAgICAgfkltYWdlR1N0cmVhbWVyKCk7CiAKLSAgICAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gaW1hZ2UoKQorICAgICAgICBCaXRtYXBJbWFnZSog
aW1hZ2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbWFnZSk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBlOTQyYTJjNWZj
MC4uNGQ0ZGI0ZWRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBj
cmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2lu
ZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOwog
ICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoKSB7
IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5hZGREYXRh
Q3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRHZW5l
cmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBhZGRHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKGN1ZUZv
cm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSgqZGF0
YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGNjM2E2ZjBlOWZjLi42YTkwNzQ0ZTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MCw5ICs0MCw5IEBAIHR5
cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUsIHB1Ymxp
YyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IGNyZWF0ZShnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyKGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGIzNTYwMzhjZGI3Li43OWMxNTFiYTZiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNzcs
NyArMTE3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFi
bGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiB7CiAgICAgQVNTRVJUKGVudHJ5
KTsKIAotICAgIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNy
ZWF0ZSgpOworICAgIGF1dG8gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSgpOwogCiAgICAg
Z2ludDY0IHN0YXJ0ID0gLTEsIHN0b3AgPSAtMTsKICAgICBnc3RfdG9jX2VudHJ5X2dldF9zdGFy
dF9zdG9wX3RpbWVzKGVudHJ5LCAmc3RhcnQsICZzdG9wKTsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NoYXB0
ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlLnJlbGVhc2UoKSk7CisgICAgbV9jaGFwdGVyc1Ry
YWNrLT5hZGRHZW5lcmljQ3VlKGN1ZSk7CiAKICAgICBmb3IgKEdMaXN0KiBpID0gZ3N0X3RvY19l
bnRyeV9nZXRfc3ViX2VudHJpZXMoZW50cnkpOyBpOyBpID0gaS0+bmV4dCkKICAgICAgICAgcHJv
Y2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KHN0YXRpY19jYXN0PEdzdFRvY0VudHJ5Kj4oaS0+ZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBi
YTQ2YTY5YjIxMi4uNWVhNzZlM2ZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdS
ZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoR1Jl
ZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGll
bnRHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAKaW5kZXggNjYzYzgy
NWU1ZGUuLmViYjUwMmYyOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTgzLDEyICsxODMsMTIgQEAgdm9pZCBN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSWQp
CiAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bV9wbGF5YmFja1BpcGVsaW5lLT5mbHVzaCh0cmFj
a0lkKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6ZW5xdWV1ZVNh
bXBsZShQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPiBwcnBTYW1wbGUpCit2b2lkIE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1w
bGUpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fcGxh
eWVyUHJpdmF0ZSkKLSAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlwZWxpbmUt
PmVucXVldWVTYW1wbGUocHJwU2FtcGxlKTsKKyAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3Bs
YXliYWNrUGlwZWxpbmUtPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKIH0KIAogR1JlZlB0cjxXZWJL
aXRNZWRpYVNyYz4gTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OndlYktpdE1lZGlhU3Jj
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJN
U0UuaAppbmRleCBjM2Q0YWM3YmMyMS4uZGE3OThjZmI3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsK
ICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBh
c3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTIwOTViNjEwNjcuLmU2
MmNkNTZhODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IGI5MTll
NTUzMDUyLi44YTJmZjQzYWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICBHU1RfREVCVUcoInRyYWNrSWQ9JXMgZmx1c2hlZCIsIHRy
YWNrSWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQordm9pZCBQ
bGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKQEAgLTUwMyw3ICs1
MDMsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmUHRyPE1lZGlh
U2FtcGxlPiBtZWRpYVNhbXBsZSkKICAgICBHc3RFbGVtZW50KiBhcHBzcmMgPSBzdHJlYW0tPmFw
cHNyYzsKICAgICBNZWRpYVRpbWUgbGFzdEVucXVldWVkVGltZSA9IHN0cmVhbS0+bGFzdEVucXVl
dWVkVGltZTsKIAotICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2Fz
dDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLmdldCgpKTsKKyAgICBHU3RyZWFt
ZXJNZWRpYVNhbXBsZSogc2FtcGxlID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyTWVkaWFTYW1wbGUq
PihtZWRpYVNhbXBsZS5wdHIoKSk7CiAgICAgaWYgKHNhbXBsZS0+c2FtcGxlKCkgJiYgZ3N0X3Nh
bXBsZV9nZXRfYnVmZmVyKHNhbXBsZS0+c2FtcGxlKCkpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0
U2FtcGxlPiBnc3RTYW1wbGUgPSBzYW1wbGUtPnNhbXBsZSgpOwogICAgICAgICBHc3RCdWZmZXIq
IGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihnc3RTYW1wbGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAppbmRleCAwOGYwZTYwZDMzMy4uZGE0OThkOWZiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2
b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxN
ZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYp
OwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkx
MThmNC4uNTc1YjNhNWVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMzYsMTcgKzM2LDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UoY29uc3QgY2hhciogaWNvbk5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkSW1hZ2VGcm9t
R1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQogewotICAgIFJlZlB0cjxCaXRtYXBJbWFn
ZT4gaWNvbiA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfc3RyZHVwX3ByaW50
ZigiL29yZy93ZWJraXRndGsvcmVzb3VyY2VzL2ltYWdlcy8lcyIsIGljb25OYW1lKSk7CiAgICAg
R1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBhZG9wdEdSZWYoZ19yZXNvdXJjZXNfbG9va3VwX2RhdGEo
cGF0aC5nZXQoKSwgR19SRVNPVVJDRV9MT09LVVBfRkxBR1NfTk9ORSwgbnVsbHB0cikpOwogICAg
IEFTU0VSVChkYXRhKTsKICAgICBpY29uLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKSwgZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSksIHRydWUpOwotICAg
IHJldHVybiBpY29uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaWNvbjsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciogZmlsZW5hbWUpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+
IGNvbnRlbnQ7CiAgICAgZ3NpemUgbGVuZ3RoOwpAQCAtNjAsMjEgKzYwLDIxIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gbG9hZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUoY29uc3QgY2hhciogbmFt
ZSkKK3N0YXRpYyBSZWY8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJvbVRoZW1lKGNvbnN0
IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGljb25TaXplID0gZ19zdHJfaGFzX3N1ZmZpeChuYW1l
LCAiQDJ4IikgPyAzMiA6IDE2OwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaWNvbiA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CiAgICAgR1VuaXF1ZVB0cjxHdGtJY29uSW5mbz4gaWNvbkluZm8oZ3RrX2ljb25fdGhlbWVfbG9v
a3VwX2ljb24oZ3RrX2ljb25fdGhlbWVfZ2V0X2RlZmF1bHQoKSwgR1RLX1NUT0NLX01JU1NJTkdf
SU1BR0UsIGljb25TaXplLCBHVEtfSUNPTl9MT09LVVBfTk9fU1ZHKSk7CiAgICAgaWYgKGljb25J
bmZvKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkp
OwotICAgICAgICBpY29uLT5zZXREYXRhKGJ1ZmZlci5yZWxlYXNlKCksIHRydWUpOwotICAgICAg
ICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbG9hZFJlc291
cmNlU2hhcmVkQnVmZmVyKGd0a19pY29uX2luZm9fZ2V0X2ZpbGVuYW1lKGljb25JbmZvLmdldCgp
KSk7CisgICAgICAgIGljb24tPnNldERhdGEoV1RGTW92ZShidWZmZXIpLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgcmV0dXJuIGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UobmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChu
YW1lLCAibWlzc2luZ0ltYWdlIikgPyBsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShuYW1l
KSA6IGxvYWRJbWFnZUZyb21HUmVzb3VyY2UobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApp
bmRleCBmMDNjYWNlOGVkOS4uODNmZjI3ZWE1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApAQCAt
NDgsMTAgKzQ4LDEwIEBAIGNvbnN0IGhiX3RhZ190IEhhcmZCdXp6RmFjZTo6a2VyblRhZyA9IEhC
X1RBRygnaycsICdlJywgJ3InLCAnbicpOwogCiBjbGFzcyBGYWNlQ2FjaGVFbnRyeSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZhY2VDYWNoZUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmFjZUNhY2hlRW50cnk+IGNyZWF0ZShoYl9mYWNlX3QqIGZhY2UpCisgICAgc3RhdGlj
IFJlZjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2ZhY2VfdCogZmFjZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChmYWNlKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWNlQ2FjaGVF
bnRyeShmYWNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZhY2VDYWNoZUVudHJ5
KGZhY2UpKTsKICAgICB9CiAgICAgfkZhY2VDYWNoZUVudHJ5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZS5oCmluZGV4IDYzMTc5ZmU4MTVlLi41OWNlZTljM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5
ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAg
ICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWlu
dDY0X3QgdW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250
UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlx
dWVJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZv
cm1EYXRhLCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBm
NWZhNjk3Yzk2OC4uZTFjZmUzZmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiAgICAgbV90aWZmUmVwID0gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCitSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25z
dCBjaGFyICpuYW1lKQogewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYkNvcmVCdW5kbGVGaW5kZXIgY2xhc3NdXTsKICAgICBOU1N0cmluZyAqaW1h
Z2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4
IDk3ZDc1NGQwMmE0Li5kYzM0YmJiMzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAt
MjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHbHlwaC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Myw5ICs0Myw5
IEBAIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
T3BlblR5cGVNYXRoRGF0YT4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnQpCisg
ICAgc3RhdGljIFJlZjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgZm9udCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlblR5cGVN
YXRoRGF0YShmb250KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wZW5UeXBlTWF0
aERhdGEoZm9udCkpOwogICAgIH0KICAgICB+T3BlblR5cGVNYXRoRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuaAppbmRleCAzMjQ1NjM4YThlZi4uZGM1OTMxZWRmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAt
MzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBp
bnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgp
LmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6
ZSBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZi4u
ZmM5NDk2M2YxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmIFVTRShDQUlSTykKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgpAQCAtMjE0LDcgKzIx
NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRQYXNzZXNSZXF1aXJlZEZvckZpbHRlcihGaWx0ZXJP
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewogICAg
IGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmgKaW5kZXggYzRhODAyMjRhODcuLjNhNGQ4MDQ3MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5o
CkBAIC01OSwxNiArNTksMTYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNOb1N3
aXp6bGUoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQm
IHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9
IDQsIFBsYXRmb3JtM0RPYmplY3QgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CiAgICAgYm9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVy
ZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgc3RydWN0IEZpbHRlckluZm8gewogICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7CiAgICAgICAgIHVuc2lnbmVkIHBhc3M7CiAg
ICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBjb250ZW50VGV4dHVyZTsKIAotICAgICAgICBG
aWx0ZXJJbmZvKFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmID0gMCwgdW5zaWduZWQgcCA9
IDAsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdCA9IDApCi0gICAgICAgICAgICA6IGZpbHRl
cihmKQorICAgICAgICBGaWx0ZXJJbmZvKFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+JiYgZiA9IG51
bGxwdHIsIHVuc2lnbmVkIHAgPSAwLCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0ID0gbnVsbHB0
cikKKyAgICAgICAgICAgIDogZmlsdGVyKFdURk1vdmUoZikpCiAgICAgICAgICAgICAsIHBhc3Mo
cCkKLSAgICAgICAgICAgICwgY29udGVudFRleHR1cmUodCkKKyAgICAgICAgICAgICwgY29udGVu
dFRleHR1cmUoV1RGTW92ZSh0KSkKICAgICAgICAgICAgIHsgfQogICAgIH07CiAgICAgY29uc3Qg
RmlsdGVySW5mbyogZmlsdGVySW5mbygpIGNvbnN0IHsgcmV0dXJuICZtX2ZpbHRlckluZm87IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc4YTAyNDZm
N2Y1Li5hMDI2ZjRjNTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRl
cnMoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1f
bGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNl
dERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCks
IGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggOTczMDQ3ZjQ5MDUuLjFmOWU2ODI3ZGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
Y3BwCkBAIC0zMiwxMSArMzIsMTEgQEAgVGV4dHVyZU1hcHBlcjo6VGV4dHVyZU1hcHBlcigpID0g
ZGVmYXVsdDsKIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAK
LVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVG
cm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBm
bGFncykKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdz
IGZsYWdzKQogewogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzZWxlY3RlZFRleHR1cmUgPSBt
X3RleHR1cmVQb29sLT5hY3F1aXJlVGV4dHVyZShzaXplLCBmbGFncyk7CiAgICAgc2VsZWN0ZWRU
ZXh0dXJlLT5yZXNldChzaXplLCBmbGFncyk7Ci0gICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApp
bmRleCA3MjMzZDBkY2NkNS4uNjczMGQ4ZTdiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5kQ2xpcCgpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyA9IDApIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChj
b25zdCBJbnRTaXplJiwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgPSBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1
aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpG
bGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogCiAgICAgdm9pZCBzZXRQYXR0
ZXJuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwKSB7IG1fcGF0dGVyblRy
YW5zZm9ybSA9IHA7IH0KICAgICB2b2lkIHNldFdyYXBNb2RlKFdyYXBNb2RlIG0pIHsgbV93cmFw
TW9kZSA9IG07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggNzQ2NGQwNDdlMzUuLjk4ZGM4
NDVmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgogCkBAIC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVyR0w6
OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3NvckJv
eDsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0
ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4
dHVyZSgpCiB7CiAgICAgcmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRleHQz
RCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTEuLmU3YzgwZTkyNjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVu
ZENsaXAoKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAg
ICBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6
ZSgyMDAwLCAyMDAwKTsgfQotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4
dHVyZSgpIG92ZXJyaWRlOworICAgIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkg
b3ZlcnJpZGU7CiAgICAgaW5saW5lIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CiAKICAgICB2b2lkIGRyYXdG
aWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0dXJlLCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiwgaW50IHBhc3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBkMzljZmZjYmI3OC4uNzliODk1NDY3
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zKQogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5zZXRNYXNrTW9kZShm
YWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVy
OjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVGcm9t
UG9vbChzaXplLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwgQml0bWFwVGV4dHVyZTo6
RkJPQXR0YWNobWVudCk7CiAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlv
bnMob3B0aW9ucyk7CkBAIC0zNzYsMTYgKzM3NiwxNiBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFw
cAogICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9wdGlvbnMpOwogICAgIHN1
cmZhY2UgPSBzdXJmYWNlLT5hcHBseUZpbHRlcnMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX2N1
cnJlbnRGaWx0ZXJzKTsKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBz
dXJmYWNlOwogfQogCi1zdGF0aWMgdm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFj
ZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKK3N0YXRpYyB2b2lkIGNvbW1p
dFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgQml0bWFw
VGV4dHVyZSYgc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKIHsK
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdl
dCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFy
Z2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9m
ZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJh
bnNmb3JtKTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKnN1cmZhY2Uu
Z2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLmRyYXdUZXh0dXJlKHN1cmZhY2UsIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3Bh
Y2l0eSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3AKICAgICB9CiAKICAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0aW9ucy5vcGFjaXR5ID09
IDEpIHsKLSAgICAgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVj
dCwgMSk7CisgICAgICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKnJlcGxpY2FTdXJmYWNlLCBy
ZWN0LCAxKTsKICAgICAgICAgcmVwbGljYVN1cmZhY2UgPSBudWxscHRyOwogICAgIH0KIApAQCAt
NjM3LDkgKzYzNyw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRvVmlld3Bv
cnQoYm9vbCBmaXhlZFRvVmlld3BvcnQpCiAgICAgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZFRv
Vmlld3BvcnQ7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUpCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFJlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPiYmIGJhY2tpbmdTdG9yZSkKIHsKLSAgICBtX2JhY2tpbmdTdG9yZSA9IGJh
Y2tpbmdTdG9yZTsKKyAgICBtX2JhY2tpbmdTdG9yZSA9IFdURk1vdmUoYmFja2luZ1N0b3JlKTsK
IH0KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5p
bmdBbmltYXRpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAzYjFjMTZi
MGIxMy4uYmVkMWY2Y2Q2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTExNyw3ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IFRleHR1cmVNYXBw
ZXJBbmltYXRpb25zJik7CiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7CiAgICAg
Ym9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsg
fQotICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZT4pOworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFJlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPiYmKTsKIAogICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29s
IGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CkBAIC0xNTcs
NyArMTU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdp
b25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKLSAgICBQYXNzUmVmUHRyPEJp
dG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJ
bnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6
ZSYpOwogICAgIHZvaWQgcGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgcGFpbnRTZWxm
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50U2VsZkFu
ZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA4NTE0YTRmNzM2YS4uNDIz
OGM1ZDhlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlKCkgeyB9CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmODk3MTQ4OWFmZC4uYTI2NjJlZjBiOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5
bmNJbWFnZUJhY2tpbmcoKQogICAgICAgICAgICAgcmVsZWFzZUltYWdlQmFja2luZ0lmTmVlZGVk
KCk7CiAKICAgICAgICAgaWYgKCFtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKSB7Ci0gICAgICAg
ICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nID0gbV9jb29yZGluYXRvci0+Y3JlYXRlSW1h
Z2VCYWNraW5nSWZOZWVkZWQobV9jb21wb3NpdGVkSW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAg
bV9jb29yZGluYXRlZEltYWdlQmFja2luZyA9IG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFj
a2luZ0lmTmVlZGVkKCptX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgICAgICBtX2Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLT5hZGRIb3N0KHRoaXMpOwogICAgICAgICAgICAgbV9sYXllclN0YXRl
LmltYWdlSUQgPSBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5pZCgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
aW5kZXggYmYyNTExMWRiZTUuLmI3NzRlMDA1ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00Niw3ICs0Niw3IEBAIGNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1h
Z2UqKSA9IDA7CisgICAgdmlydHVhbCBSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdz
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZElt
YWdlQmFja2luZy5jcHAKaW5kZXggZjUyOTQ3NTVhMjMuLjU2MGMyZTE2NzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAg
LTU3LDE0ICs1NywxNCBAQCBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKAogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+KGltYWdlKTsKIH0KIAotUGFz
c1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitSZWY8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xp
ZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgaW1hZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEltYWdlQmFja2luZyhjbGllbnQsIFdURk1vdmUoaW1h
Z2UpKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZyhDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCi0gICAgOiBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCYgY2xpZW50LCBSZWY8SW1hZ2U+JiYg
aW1hZ2UpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGlt
YWdlKSkKICAgICAsIG1faWQoZ2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdl
dCgpKSkKICAgICAsIG1fY2xlYXJDb250ZW50c1RpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKQogICAgICwgbV9pc0RpcnR5KGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
aAppbmRleCBiODYwM2M2OGU2My4uNGM2OWU1ODI2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdl
QmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGltYWdlQmFja2luZ1Zpc2libGUoKSA9IDA7CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGUoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIHN0YXRpYyBSZWY8Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGllbnQmLCBSZWY8SW1hZ2U+JiYpOwogICAgIHZp
cnR1YWwgfkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKCk7CiAKICAgICBzdGF0aWMgQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCBnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKEltYWdlKik7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZSgpOwogCiBwcml2YXRlOgot
ICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCosIFBhc3NSZWZQdHI8SW1hZ2U+KTsK
KyAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQmLCBSZWY8SW1hZ2U+JiYpOwogCiAg
ICAgdm9pZCByZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmls
aXR5SWZOZWVkZWQoYm9vbCYgY2hhbmdlZFRvVmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAxZTU4YmVlMGFmMC4u
MGQ4ODIwZTlmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciopOworUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTIg
KzM4LDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewog
fQogCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKK1JlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihuYW1lKTsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGltZyA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICBpbWctPnNldERhdGEoYnVmZmVyLnJlbGVhc2UoKSwg
dHJ1ZSk7Ci0gICAgcmV0dXJuIGltZy5yZWxlYXNlKCk7CisgICAgYXV0byBidWZmZXIgPSBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOworICAgIGF1dG8gaW1nID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOworICAgIGltZy0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlciksIHRydWUpOworICAgIHJl
dHVybiBpbWc7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVAoSEJJVE1BUCBibXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKaW5k
ZXggMGQwOThiZGYzZjIuLjE2YjZiNWRmZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCkBAIC05MywyMCArOTMsMTUgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjcmVhdGVXaW5kb3coSFdORCBwYXJlbnRI
d25kKQogfQogCiAjaWYgVVNFKENBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcm9v
dENoaWxkKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290
Q2hpbGRMYXllcihSZWY8UGxhdGZvcm1DQUxheWVyPiYmIHJvb3RDaGlsZCkKIHsKLSAgICBpZiAo
bV9yb290Q2hpbGQgPT0gcm9vdENoaWxkKQorICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hp
bGQucHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Jvb3RDaGlsZCkKICAgICAg
ICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CiAKLSAgICBtX3Jvb3RDaGls
ZCA9IHJvb3RDaGlsZDsKLQotICAgIGlmICghbV9yb290Q2hpbGQpIHsKLSAgICAgICAgbV9sYXll
clRyZWVIb3N0ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Jvb3RD
aGlsZCA9IFdURk1vdmUocm9vdENoaWxkKTsKIAogICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGNk
ZDBjYTMwNDEwLi40YTIwZDllMGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShD
QSkKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yb290Q2hpbGQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPik7CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihSZWY8UGxh
dGZvcm1DQUxheWVyPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAppbmRl
eCAxYjkyMjllODY2NS4uOWRmYjVhZWQ1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIElEMkQxQml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZv
cm1Db250ZXh0KTsKIAogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5CcnVzaCA9IG51bGxw
dHI7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2go
cGF0dGVybkltYWdlLT5uYXRpdmVJbWFnZSgmY29udGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFBy
b3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEhSRVNVTFQg
aHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKHBhdHRlcm5JbWFnZS5uYXRp
dmVJbWFnZSgmY29udGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZicnVzaFBy
b3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICAg
ICByZXR1cm4gcGF0dGVybkJydXNoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCmluZGV4IDg5ZTQyMTkzZGVmLi40
Y2UzNjdiNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBTaGFy
ZWRHRElPYmplY3RfaAogI2RlZmluZSBTaGFyZWRHRElPYmplY3RfaAogCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCkBAIC0zNCw5ICszNCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNo
YXJlZEdESU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdESU9iamVjdDxUPj4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdE
SU9iamVjdDxUPiBvYmplY3QpCisgICAgc3RhdGljIFJlZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0
ZShHRElPYmplY3Q8VD4gb2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRHRElPYmplY3Q8VD4oV1RGTW92ZShvYmplY3QpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEdESU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKICAgICB9
CiAKICAgICBUIGdldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MjU0ZWY5MDk3Yi4uZTViZjA0ZGIyM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zCiAgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKICAgICAgICAgICAgIGF1dG8mIHJlZmVy
ZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oZmlsdGVy
T3BlcmF0aW9uKTsKICAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKHJl
bmRlcmVyLCAqcHJldmlvdXNFZmZlY3QsIHJlZmVyZW5jZU9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICByZWZlcmVuY2VPcGVyYXRpb24uc2V0RmlsdGVyRWZmZWN0KGVmZmVjdCk7CisgICAgICAgICAg
ICByZWZlcmVuY2VPcGVyYXRpb24uc2V0RmlsdGVyRWZmZWN0KGVmZmVjdC5jb3B5UmVmKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2UuY3BwCmluZGV4IGJkMWU1NWU0MDc1Li4xYTk0YTU2MzBiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKIAog
UmVmUHRyPEltYWdlPiBSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZShjb25zdCBJbnRTaXplJikg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgcmV0dXJu
IG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKG1fcmVuZGVy
ZXIpIDogJkltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZVJlc291cmNl
OjplcnJvck9jY3VycmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlYTkzNmE0ZGM4
Mi4uMGZiODI4MGUxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBQ
YXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIHVucwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KICAgICBhdXRv
IHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBwYXR0
ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1
ZSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1h
Z2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRl
cm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzVmMjRjNGUyNjcuLjc0N2VhMmI4
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcApAQCAtMTg4LDggKzE4OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAK
ICAgICBjb25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxp
Z2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlm
ZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1
c2VDb25zdGFudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5n
dGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgbGlnaHRTb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDU1NjViOTFkMTJiLi43MzQzMTcwMzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk5LDggKzE5OSw3
IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgY29uc3QgQ29sb3ImIGNvbG9y
ID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShm
aWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJFeHBvbmVudCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291
cmNlKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3Rh
bnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0
TGVuZ3RoWSgpLCBsaWdodFNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlZmZlY3QtPmlu
cHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXggMzk5ZDZi
YWU1YTYuLjQ0ZDBjYmE4MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpp
bWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAg
ICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYg
KCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgQVNTRVJUKCFpbWFnZS0+c2l6ZSgpLmlzRW1w
dHkoKSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA4NTcxODUwODQxMC4uMzU3MjA3MTEyY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRl
ckZ1bGxzY3JlZW4oKQogICAgIDo6U2hvd1dpbmRvdyhtX2Z1bGxzY3JlZW5XaW5kb3ctPmh3bmQo
KSwgU1dfU0hPVyk7CiAKICNpZiBVU0UoQ0EpCi0gICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRS
b290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CisgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRS
b290Q2hpbGRMYXllcigqbV9yb290Q2hpbGQpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRl
b0xheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIobV92aWRlb0VsZW1lbnQt
PnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgQVNTRVJUKHZpZGVvTGF5ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dERMTC5jcHAKaW5kZXggYmRkOTQxOGI3ZjMuLjdjM2ZiYjI3M2Y2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dERMTC5jcHAKQEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAog
Ly9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9y
IGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KTsKLVBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVz
b3VyY2UgaWQKQEAgLTIyNSwxNyArMjI1LDE3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgZWxz
ZSBpZiAoIXN0cmNtcChuYW1lLCAiZnNWaWRlb1BsYXkiKSkKICAgICAgICAgaWRyID0gSURSX0ZT
X1ZJREVPX1BMQVk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBIUlNSQyByZXNJbmZvID0gRmluZFJlc291cmNlKGdJbnN0YW5jZSwg
TUFLRUlOVFJFU09VUkNFKGlkciksIEwiUE5HIik7CiAgICAgaWYgKCFyZXNJbmZvKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSEFORExFIHJlcyA9IExv
YWRSZXNvdXJjZShnSW5zdGFuY2UsIHJlc0luZm8pOwogICAgIGlmICghcmVzKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdm9pZCogcmVzb3VyY2UgPSBM
b2NrUmVzb3VyY2UocmVzKTsKICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWduZWQgc2l6ZSA9IFNpemVvZlJlc291
cmNlKGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVzb3VyY2UpLCBzaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDQwMDY1
NTg2NzVhLi43NjE1ZjA5MWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCkBAIC0zNDksOSArMzQ5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEKICAg
ICBpZiAobV9iYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxh
eWVyLCBiYWNraW5nU3RvcmUpOwotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUoKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUuY29w
eVJlZigpKTsKKyAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKFdURk1vdmUoYmFja2luZ1N0b3Jl
KSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3Rv
cmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpAQCAtMzYwLDcgKzM2MCw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRl
ZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXItPnNl
dEJhY2tpbmdTdG9yZShudWxscHRyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDdhZjY2NDhiMGUxLi41M2YwNWNlMDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTk2NCw3ICs5NjQsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEN1cnNv
ciYgY3Vyc29yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWlzVmFsaWRJbWFn
ZVByZXNlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gQ3Vyc29yKEltYWdlOjpudWxsSW1hZ2UoKSwg
SW50UG9pbnQoKSk7CisgICAgICAgIGN1cnNvciA9IEN1cnNvcigmSW1hZ2U6Om51bGxJbWFnZSgp
LCBJbnRQb2ludCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IGU1NTcyZTE2ZDVlLi44MTFlZWVhMjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAgLTIxMSwxMSArMjExLDExIEBA
IHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRM
YXllcklEIGlkLCBDb29yZGluYXRlZEdyCiAgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoaWQsIHN0YXRlKSk7CiB9CiAKLVJlZjxDb29yZGluYXRlZEltYWdl
QmFja2luZz4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoSW1hZ2UqIGltYWdlKQorUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSYgaW1hZ2UpCiB7
Ci0gICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoaW1hZ2UpOwotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pbWFnZUJhY2tpbmdzLmVuc3VyZShpbWFnZUlELCBbdGhpcywgaW1hZ2Vd
IHsKLSAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUodGhpcywg
aW1hZ2UpOworICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCA9IENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKCZpbWFnZSk7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlz
LCAmaW1hZ2VdIHsKKyAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVh
dGUoKnRoaXMsIGltYWdlKTsKICAgICB9KTsKICAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggZDJjYTc4NGIzOTAuLjdjNTQwMTg3MzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC0x
MTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJD
bGllbnQKICAgICBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3Jl
OjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2Vi
Q29yZTo6SW1hZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqKSBvdmVycmlkZTsKICAgICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYg
LyogYXRsYXNJRCAqLywgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1
cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJT
dGF0ZSYpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309757</attachid>
            <date>2017-05-11 13:01:35 -0700</date>
            <delta_ts>2017-05-11 13:12:14 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>171977_PassRefPtr_graphics_wip.patch</filename>
            <type>text/plain</type>
            <size>147928</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZm
Li5mOTBmN2Q5NTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBJbWFnZSogQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgYXV0byog
Y2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVlLCBjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFnZSB8fCAh
Y2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAg
ICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBmcm9tSW1hZ2UgPSBj
YWNoZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKICAgICBhdXRvKiB0
b0ltYWdlID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpOwogCiAg
ICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgbV9n
ZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21JbWFn
ZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShy
ZW5kZXJlciksIHNpemUpOwogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDE1YzNjYWY4Njlj
Li43MzU2Y2U1ODRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcApAQCAtMTIwLDE3ICsxMjAsMTcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZh
dWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAg
IC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0
MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgogICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIGF1dG8g
aW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2VS
ZWN0KGltYWdlUmVjdCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRlclJlZ2lvbihpbWFn
ZVJlY3QpOwogICAgIGlmICghZmlsdGVyUmVuZGVyZXItPmJ1aWxkKCpyZW5kZXJlciwgbV9maWx0
ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogICAgIGZpbHRl
clJlbmRlcmVyLT5hcHBseSgpOwogCiAgICAgcmV0dXJuIGZpbHRlclJlbmRlcmVyLT5vdXRwdXQo
KS0+Y29weUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiMGFkZjA1ZDFlZC4uNzliODA4NjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWEuLmVjMTBjZDVmZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBp
bWFnCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVy
bCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYjE5OGE3YzQ0ZWYuLjdkZGI3NTMyMDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTE1NywxMyArMTE1NywxMSBAQCB2b2lkIFNjcm9s
bFZpZXc6OnBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7Ci0gICAg
aWYgKCFwYW5TY3JvbGxJY29uKQotICAgICAgICByZXR1cm47CisgICAgc3RhdGljIEltYWdlJiBw
YW5TY3JvbGxJY29uID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJwYW5JY29uIikubGVh
a1JlZigpOwogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0gbV9wYW5TY3JvbGxJY29uUG9pbnQ7
CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQb2ludCA9IHBhcmVudCgpLT53aW5k
b3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Ny
b2xsSWNvbiwgaWNvbkdDUG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbElj
b24sIGljb25HQ1BvaW50KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCAzY2M3NzBjNzY4MC4uM2QwNTI2NGZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9h
ZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgp
IHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1fZnJv
bUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1ZDRh
OS4uZDQ3NzFhOTY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlRl
eHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGIyMGJj
MTIwOTBhLi5jNDcwNzQ2NDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTUwNyw3ICs1MDcsNiBAQCBwdWJsaWM6CiAg
ICAgSERDIGhkYygpIGNvbnN0OwogI2lmIFBMQVRGT1JNKFdJTikKICNpZiBVU0UoV0lOR0RJKQot
ICAgIHZvaWQgc2V0Qml0bWFwKFBhc3NSZWZQdHI8U2hhcmVkQml0bWFwPik7CiAgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBBZmZpbmVUcmFu
c2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpOwogICAgIHZvaWQgcmVzZXRBZmZpbmVUcmFuc2Zvcm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA1M2Ey
MmFhNjg0MS4uZTg1M2JmZWJlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsKIH0KIAot
SW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2UoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxsSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVsbEltYWdl
OworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCBkZjlmMDQyNmY2ZS4uNzA2NDMwM2IyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkltYWdlVHlw
ZXMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpA
QCAtNzksOCArNzgsNyBAQCBjbGFzcyBJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2U+IGxv
YWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4LDcgKzk2
LDcgQEAgcHVibGljOgogICAgIC8vIHRoZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBm
cm9tIGl0cyBvd24gc2VjdXJpdHkgb3JpZ2luLgogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBJbWFnZSYgbnVsbEltYWdlKCk7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBz
aXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2NDliNjg2N2Q0MC4uNTUwM2Q3YTE3YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTEyNTEsNyArMTI1MSw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hl
ZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKQorUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVy
KCkKIHsKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRl
cigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNTQ2NmUyMjJkMDcuLjQ3MmQ3NTY5YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1MjgsNyBAQCBwdWJs
aWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7CisgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9U
cmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5jcHAKaW5kZXggYTlhY2NjMjg0NjguLjI1MWUwNzY2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVm
UHRyPEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBh
dHRlcm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKHRp
bGVJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBh
dHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CiAKLVBhdHRl
cm46OlBhdHRlcm4oUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCBy
ZXBlYXRZKQotICAgIDogbV90aWxlSW1hZ2UoaW1hZ2UpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxJ
bWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCisgICAgOiBtX3RpbGVJ
bWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcmVwZWF0WChyZXBlYXRYKQogICAgICwgbV9y
ZXBlYXRZKHJlcGVhdFkpCiB7Ci0gICAgQVNTRVJUKG1fdGlsZUltYWdlKTsKIH0KIAogUGF0dGVy
bjo6flBhdHRlcm4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CmluZGV4IDI1NmZhMmQ1ZmI0Li40ODM4NmZhZGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0
ZXJuIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9v
bCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRl
KFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICAg
ICB+UGF0dGVybigpOwogCi0gICAgSW1hZ2UqIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLmdldCgpOyB9CisgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZUltYWdlLmdldCgpOyB9CiAKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCkBA
IC03Niw5ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVy
biBtX3JlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8SW1hZ2U+JiYs
IGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKIAotICAgIFJlZlB0cjxJbWFnZT4gbV90aWxl
SW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RpbGVJbWFnZTsKICAgICBib29sIG1fcmVwZWF0WDsK
ICAgICBib29sIG1fcmVwZWF0WTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRleHRUcmFjay5oCmluZGV4IDIwYmUzZDE3YWZmLi45NWY2NTUzZWZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRU
cmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBTaG93aW5nCiAgICAg
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRl
KFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgVHJh
Y2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2lu
ZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFn
ZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBs
YW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGVP
dXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1
ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRyYWNrPiBj
cmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50
IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1v
ZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3Vh
Z2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNEZWZhdWx0KSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0KQEAgLTg3LDE1ICs4
NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlx
dWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmF1bHQ7
IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVtKCkK
KyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpCiAgICAg
ewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0
bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJh
Y2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0
ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAg
ICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2Fw
dGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNh
cHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
ImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCku
bGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGF1dG9tYXRpYyA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0i
LCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICBy
ZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiNDliZDFlMzdmMC4u
MmM5MzUyMDYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVB
VkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0
IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1JlZjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3Jl
YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihr
aW5kLCBjdWVGb3JtYXQsIGlkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKGtpbmQsIGN1ZUZvcm1hdCwgaWQpKTsKIH0KIAogSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkYoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQpA
QCAtNTUsNyArNTUsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoKQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBwcnBDdWVEYXRhLCBjb25zdCBTdHJp
bmcmIHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6YWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIGN1ZURhdGEsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gRGF0YSk7CiAgICAgQVNTRVJUKHN0
YXJ0ID49IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CkBAIC02MywxMSArNjMsMTAgQEAgdm9pZCBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QKICAgICBpZiAoIWNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGN1ZURhdGEgPSBw
cnBDdWVEYXRhOwogICAgIG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IHN0YXJ0OwogICAgIGlmIChl
bmQuaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5k
KEluY29tcGxldGVNZXRhRGF0YUN1ZSB7IGN1ZURhdGEuZ2V0KCksIHN0YXJ0IH0pOwotICAgIGNs
aWVudCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGN1ZURhdGEucmVsZWFzZU5vbk51bGwoKSwg
dHlwZSk7CisgICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5kKEluY29tcGxldGVNZXRhRGF0
YUN1ZSB7IGN1ZURhdGEucHRyKCksIHN0YXJ0IH0pOworICAgIGNsaWVudCgpLT5hZGREYXRhQ3Vl
KHN0YXJ0LCBlbmQsIFdURk1vdmUoY3VlRGF0YSksIHR5cGUpOwogfQogCiB2b2lkIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6dXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0
IE1lZGlhVGltZSYgdGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBmZjQyZmEyZjQ0Zi4uNTJmZDlhNmExN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEluY29tcGxldGVNZXRhRGF0YUN1
ZSB7CiAKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5kLCBDdWVGb3JtYXQs
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOworICAgIHN0YXRpYyBSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoS2luZCwgQ3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKTsKIAogICAgIH5JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYoKTsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpIHsgbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVm
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
aW5kZXggOTU5NmY4Y2EzYzEuLmE3Y2FhNmVjOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9y
IHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYi
LCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEt
PnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdl
bmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmlj
Q3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0YXR1cyA9IHNlZWtpbmco
KSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5ZGQuLjc4NjM1NDE0MWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaApA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiAKIGNs
YXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDJiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
JiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKIAogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCk7CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBB
Vk1lZGlhU2VsZWN0aW9uR3JvdXAqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0
aWNzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CiAgICAgfk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKCk7
CiAKICAgICB2b2lkIHNldFNlbGVjdGVkT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2Jq
QyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CmluZGV4IDhkZWUwOWNlMDg2Li4zMGY4MWFkY2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtNDgsOSArNDgsOSBAQCBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDPiBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKK1JlZjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqb3B0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDKGdyb3VwLCBvcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOwogfQogCiBNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikK
QEAgLTg1LDkgKzg1LDkgQEAgaW50IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6aW5kZXgo
KSBjb25zdAogICAgIHJldHVybiBbW21fZ3JvdXAtPmF2TWVkaWFTZWxlY3Rpb25Hcm91cCgpIG9w
dGlvbnNdIGluZGV4T2ZPYmplY3Q6bV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKV07CiB9CiAK
LVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9uR3Jv
dXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQorUmVmPE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3Jl
YXRlKEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJp
c3RpY3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyhpdGVtLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKSk7CiB9CiAKIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyhBVlBsYXllckl0ZW0gKml0
ZW0sIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
aGFyYWN0ZXJpc3RpY3MpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdy
b3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVy
aXMKICAgICBmb3IgKEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIGFkZGVkQVZPcHRpb24gaW4gYWRk
ZWRBVk9wdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgYXV0byBhZGRlZE9wdGlvbiA9IE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKCp0aGlzLCBhZGRlZEFWT3B0aW9uKTsKICAgICAg
ICAgaWYgKGFkZGVkQVZPcHRpb24gPT0gc2VsZWN0ZWRPcHRpb24pCi0gICAgICAgICAgICBtX3Nl
bGVjdGVkT3B0aW9uID0gYWRkZWRPcHRpb24uZ2V0KCk7CisgICAgICAgICAgICBtX3NlbGVjdGVk
T3B0aW9uID0gYWRkZWRPcHRpb24ucHRyKCk7CiAgICAgICAgIG1fb3B0aW9ucy5zZXQoYWRkZWRB
Vk9wdGlvbiwgV1RGTW92ZShhZGRlZE9wdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAppbmRleCA5MGExODYxOWUw
Mi4uMWEzZGY5MTdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAg
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1
ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uLCBmb3JtYXQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVy
LCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMyNjgwZS4uYzNhMGU4OGY0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRj4gY3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJh
Y2tSZWYgdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZDRj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFW
Q0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0YocGxheWVyLCB0cmFjaykpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA1ZmQwMjZhMzRkLi4yOWM0N2EwNjJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDUsMTEgKzQ1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCitSZWY8V2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcj4gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWYgYXZSZXF1ZXN0KQogewogICAgIEFTU0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VS
VChwYXJlbnQpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QpKTsKIH0KIAogV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcjo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0UmVmIGF2UmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGEwZjBkZDhiMDg0Li5kYWUwNmUxOTIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogY2xh
c3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFy
ZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0
YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEyZWI3OWIuLjBkYTJhZDA2Yjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7CiAKIHByb3RlY3RlZDoK
LSAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOworICAgIFJlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKTsKIAogICAgIGJvb2wgaGFzQ29udGVudEtl
eVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRLZXlTZXNzaW9uOyB9CiAgICAgQVZD
b250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXgg
NTUxM2YzZGZmNWIuLmMyMjQzNDcwMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMzA5LDcgKzMwOSw3
IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0
cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICBbY29udGVudEtleVNlc3Npb24oKSByZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAKLVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCitSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
CiB7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRl
ID0gbV9pbml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24uaAppbmRleCBiOGM3ZDliOWUxMy4uYjBiNTNlOGRmNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVh
bVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJf
dCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
OwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFr
UHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Np
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbQppbmRleCBlODUxOWUyNmE2Yi4uNmVhYzY5ODhlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFW
U3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHJlbW92
ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQorUmVmUHRyPFVpbnQ4
QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3Nh
Z2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAg
ICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRlID0gbV9p
bml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IDg4YTkyMmE1ZDcwLi4xOGE5NGFkM2NjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRk9iakM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVG
b3JtYXQgZm9ybWF0KQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9y
bWF0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQyhwbGF5ZXIsIHNlbGVjdGlvbiwgZm9ybWF0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2Vs
ZWN0aW9uLCBmb3JtYXQpKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCmluZGV4IGYzODVhM2YyYzZiLi5iODQx
NTRjNjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAg
ICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaAppbmRleCBhMTRjNDFlM2VkZS4uYjdhMjRiNjgyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTM2LDkg
KzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgT3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBj
cmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRp
b24qIHNlbGVjdGlvbikKKyAgICBzdGF0aWMgUmVmPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkY+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiogc2VsZWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVy
LCBzZWxlY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlS
ZWYsIENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3ZDdm
NzczNmU4MC4uZjVlMzc0MDQyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+LCBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CiAgICAgdmlydHVhbCB+V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDc2MDMwZDIy
YjI0Li40ZjdkNDFkNWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1Jl
ZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0
KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQog
CiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNC4u
NjUxMTNiMGQyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdy
YXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK1JlZjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIHJlc3VsdCA9IFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CkBAIC0zNTYsMTMgKzM1Niwx
MyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheQogICAgIGlmIChyZXN1bHQtPmNhbkhhdmVCYWNr
aW5nU3RvcmUoKSkKICAgICAgICAgcmVzdWx0LT5zZXRXYW50c0RlZXBDb2xvckJhY2tpbmdTdG9y
ZShzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSk7CiAgICAgCi0gICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAg
IHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShsYXllclR5cGUsIG93bmVyKTsKICNl
bmRpZgogfQogICAgIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIs
IG93bmVyKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllcgogI2Vu
ZGlmCiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllciwgQwogICAgIC8vIHRoZSBjcmVhdG9yIG9mIHRoZSByYXcgbGF5ZXIgaXMgdXNp
bmcgaXQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZS4KICAgICAvLyBGb3Igbm93IHdlIGRvbid0IHN1
cHBvcnQgc3VjaCBhIGNhc2UuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyKTsKLSAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRm
b3JtQ0FMYXllciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKSkg
OiBudWxscHRyOworICAgIG1fY29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5ZXIgPyAocGxhdGZv
cm1DQUxheWVyID8gcGxhdGZvcm1DQUxheWVyIDogY3JlYXRlUGxhdGZvcm1DQUxheWVyKHBsYXRm
b3JtTGF5ZXIsIHRoaXMpLnB0cigpKSA6IG51bGxwdHI7CiAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBwdXJwb3NlIDogTm9Db250ZW50c0xheWVyOwogCiAgICAg
aWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyICYmIG1fY29udGVudHNMYXllcikKQEAgLTI2ODUs
NyArMjY4NSw3IEBAIEdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJl
cGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkK
K1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGljYXRlZExheWVy
Um9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKIHsKICAgICAvLyBMaW1pdCByZXBsaWNh
IG5lc3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCiAgICAg
aWYgKCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0g
UmVwbGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCkBAIC0yOTA3LDcgKzI5MDcsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdQogICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlB
bmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgp
LCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOworICAgIG1fdW5jb21pdHRlZEFuaW1h
dGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5v
bk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI5MzQsNyAr
MjkzNCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0
aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgaWYgKCF2YWxpZE1hdHJpY2Vz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFw
cGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2
YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQpKTsKKyAg
ICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNh
QW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMDE1LDcgKzMwMTUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5k
VG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKHZhbHVlc09LKTsKIAotICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCwgdGltZU9mZnNldCkpOworICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVh
c2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4LCB0aW1lT2Zmc2V0KSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDU0LDI0ICszMDU0LDI0IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1Jl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFk
ZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKLSAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZl
KTsKKyAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZv
cm1DQUFuaW1hdGlvbjo6QmFzaWMsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGJhc2lj
QW5pbS5wdHIoKSwgYW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBiYXNpY0FuaW07CiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xh
eWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBs
YXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKLSAgICBzZXR1cEFuaW1hdGlv
bihrZXlmcmFtZUFuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBhdXRvIGtleWZyYW1l
QW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5
ZnJhbWUsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbS5wdHIoKSwg
YW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBrZXlmcmFtZUFuaW07CiB9CiAKLVJlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNwcmluZ0FuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRp
dGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNw
cmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhZGRpdGl2ZSkKIHsKICAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3Jt
Q0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6U3ByaW5nLCBrZXlQYXRoKTsKLSAgICBz
ZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1cm4g
YmFzaWNBbmltOwogfQogCkBAIC0zNzQwLDcgKzM3NDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKICAg
ICBzZXRMYXllckRlYnVnQm9yZGVyKCpjb250ZW50c0xheWVyLCBjb250ZW50c0xheWVyRGVidWdC
b3JkZXJDb2xvcihpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKSwgY29udGVudHNMYXllckJvcmRlcldp
ZHRoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6
ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpzb3VyY2VM
YXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBj
bG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBD
bG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgaWYgKCFzb3VyY2VMYXllcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKFNjaGVkdWxlRmx1c2hPck5vdCBzY2hl
ZHVsZQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGlj
YVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xh
eWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwg
Y2xvbmVMZXZlbCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBwcmltYXJ5TGF5ZXI7
CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOwpAQCAtMzk2Nywx
NiArMzk2NywxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNsb25l
TGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVm
PFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FM
YXllciAqbGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsKKyAgICBhdXRvIG5ld0xh
eWVyID0gbGF5ZXItPmNsb25lKHRoaXMpOwogCiAgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJt
ZWRpYXRlQ2xvbmVMZXZlbCkgewogICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+
b3BhY2l0eSgpKTsKLSAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLmdldCgp
KTsKKyAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLnB0cigpKTsKICAgICB9
CiAKLSAgICBzZXRMYXllckRlYnVnQm9yZGVyKCpuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9y
ZGVyQ29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7
CisgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcihuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9yZGVy
Q29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7CiAK
ICAgICByZXR1cm4gbmV3TGF5ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IGI5YjE4NDJmZmVmLi41MTM5
ZmFmODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIxOSw5ICsyMTksOSBAQCBwcml2YXRlOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKik7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBs
YXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
cik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNy
ZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIpOworICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogcHJpbWFyeUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGhvc3RM
YXllckZvclN1YmxheWVycygpIGNvbnN0OwpAQCAtMjQwLDkgKzI0MCw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpOwogCiAgICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmlt
YXRpb24gKHVzZSBSZXRhaW5QdHI/KQotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgYWRkaXRpdmUpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVh
dGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBh
ZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2
ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkaXRpdmUpOworICAgIFJl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1h
dGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2
ZSk7CiAgICAgCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmltYXRpb24mKTsKQEAg
LTM2NiwxMyArMzY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNo
VHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7CiAgICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsK
ICAgICB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJik7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBsaWNhdGVk
TGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYpOwogCiAgICAgZW51bSBDbG9uZUxldmVsIHsgUm9vdENs
b25lTGV2ZWwsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwgfTsKLSAgICBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwg
UmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRl
JiwgQ2xvbmVMZXZlbCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNs
b25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICosIENsb25lTGV2ZWwpOwotICAgIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVy
ICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY2xv
bmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmluZE9yTWFrZUNsb25lKENsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqLCBM
YXllck1hcCosIENsb25lTGV2ZWwpOwogCiAgICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9u
ZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc3RydWN0dXJhbExheWVyLAogICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgY29udGVudHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xp
cHBpbmdMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzU2hhcGVNYXNrTGF5
ZXIsCkBAIC01NjAsOCArNTYwLDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxl
IHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgogICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Ig
a2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNl
LgogICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKLSAgICAgICAgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotICAgICAgICAg
ICAgOiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKKyAgICAgICAgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbihSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4mJiBjYUFuaW1hdGlvbiwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCwg
aW50IHN1YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKKyAgICAgICAgICAgIDogbV9hbmltYXRp
b24oV1RGTW92ZShjYUFuaW1hdGlvbikpCiAgICAgICAgICAgICAsIG1fbmFtZShhbmltYXRpb25O
YW1lKQogICAgICAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQogICAgICAgICAgICAgLCBt
X2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGNjOGQ4M2ZlMmYzLi5hMDJiMzE1
OGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBl
IGFuaW1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EuaAppbmRleCBiZTQzYTk5NDZhNC4uNTFlYTgzM2MzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCkBAIC00OCwxNCArNDgsMTQgQEAgdm9pZCBzZXRIYXNF
eHBsaWNpdEJlZ2luVGltZShDQUFuaW1hdGlvbiAqLCBib29sKTsKIAogY2xhc3MgUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ0FBbmltYXRpb24gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShB
bmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFu
aW1hdGlvblJlZik7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUo
QW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlv
blJlZik7CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKTsKIAogICAg
IGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1BbmltYXRpb25SZWYgcGxhdGZvcm1BbmltYXRpb24o
KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpp
bmRleCAzNTI2ZDYzZmVlNi4uNjYxY2Q0MTI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0KQEAgLTE0OSwxNCArMTQ5LDE0IEBAIENBTWVkaWFUaW1pbmdGdW5j
dGlvbiogV2ViQ29yZTo6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpCiAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFt
ZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uTGluZWFyXTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25U
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYSh0eXBlLCBrZXlQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUsIGtleVBhdGgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0
ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYg
YW5pbWF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hKGFuaW1hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYShhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCkBAIC0xOTYsOSArMTk2LDkgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
Ojp+UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHkoKSBjb25zdAorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlvbiA9IGNyZWF0
ZShhbmltYXRpb25UeXBlKCksIGtleVBhdGgoKSk7CisgICAgYXV0byBhbmltYXRpb24gPSBjcmVh
dGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOwogICAgIAogICAgIGFuaW1hdGlvbi0+c2V0
QmVnaW5UaW1lKGJlZ2luVGltZSgpKTsKICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0
aW9uKCkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKICAgICBhbmltYXRpb24t
PmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oKnRoaXMpOwogICAgIGFuaW1hdGlvbi0+c2V0VmFsdWVG
dW5jdGlvbih2YWx1ZUZ1bmN0aW9uKCkpOwogCi0gICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUo
ZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPigqYW5pbWF0aW9uKS5wbGF0Zm9ybUFu
aW1hdGlvbigpLCBoYXNFeHBsaWNpdEJlZ2luVGltZShwbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cisg
ICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hPihhbmltYXRpb24uZ2V0KCkpLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0QmVn
aW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKICAgICAKICAgICAvLyBDb3B5IHRoZSBzcGVj
aWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMuCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9
PSBLZXlmcmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
MzlmYzhiMDk4NjYuLjBhYjU4ZTdlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRy
ZWVIb3N0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3Mg
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9y
bUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVu
ZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDRhZWIxNDBjNWNhLi40YThmNTk3MjdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9z
dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWlsYWJs
ZTsKIH0KIAotUGFzc1JlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gQ0FDRkxheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpCitSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0Ojpj
cmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCw5ICsyMDgsOSBAQCBQbGF0Zm9ybUNBTGF5
ZXIqIENBQ0ZMYXllclRyZWVIb3N0Ojpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3Jv
b3RMYXllci5nZXQoKTsKIH0KIAotdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0Fu
aW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQordm9pZCBDQUNG
TGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBs
YXllcikKIHsKLSAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5hZGQobGF5ZXIpOworICAgIG1f
cGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmFkZCgmbGF5ZXIpOwogfQogCiB2b2lkIENBQ0ZMYXllclRy
ZWVIb3N0OjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuaAppbmRleCA5ZTRlZDgyNWVlNS4uNTQyNGIwMDUwNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01Nyw3ICs1Niw3IEBAIGNsYXNzIFRpbGVkQmFja2luZzsK
IAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDQUNGTGF5ZXJU
cmVlSG9zdD4sIHByaXZhdGUgQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkNB
Q0ZMYXllclRyZWVIb3N0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemUoKTsKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1D
QUxheWVyJik7CiAgICAgdmlydHVhbCB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOwogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCAyN2RlMmI1ZDU3Ni4uOTBhODNm
MGE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCAr
MTQyLDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdG
dW5jdGlvbkdldEZ1bmN0aW9uV2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9
CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmlt
YXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkp
OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5p
bWF0aW9uUmVmIGFuaW1hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4oYW5pbWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1DQUFuaW1hdGlvbldpbihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6UGxhdGZvcm1DQUFuaW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCkKQEAgLTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2lu
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikK
ICAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1h
dGlvblR5cGUoKSwga2V5UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmlt
YXRpb25UeXBlKCksIGtleVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRp
bWUoYmVnaW5UaW1lKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNC4uMTYyZDYy
NmE2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaApAQCAtMzgsMTQgKzM4LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1DQUFuaW1hdGlvbldpbiBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRpYyBSZWY8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZv
cm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1DQUFuaW1hdGlvbldpbigp
OwogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25XaW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNv
cHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtQW5pbWF0aW9uUmVmIHBsYXRmb3Jt
QW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4
IGQzN2YyNDFhYThhLi41ZTE0OWZkNGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6YWRkQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aQogICAgIC8vIFRlbGwg
dGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVu
dAogICAgIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QqIGhvc3QgPSBsYXllclRyZWVIb3N0Rm9y
TGF5ZXIodGhpcyk7CiAgICAgaWYgKGhvc3QpCi0gICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmlt
YXRlZExheWVyKHRoaXMpOworICAgICAgICBob3N0LT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcigq
dGhpcyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpyZW1vdmVBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cAppbmRleCAyZjEzNGEwM2FlMi4uODI1YThkMDE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2Nk
ZWNsCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNG
Vmlld1NldFNob3VsZEludmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2
aWV3LCBib29sIHNob3VsZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERl
dmljZTkqLCBfY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FD
RlZpZXdMYXllclRyZWVIb3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1Jl
ZlB0cjxXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpCiB7CiAgICAgaWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZp
ZXdMYXllclRyZWVIb3N0LmgKaW5kZXggZTRkYjJjNDQ4MjkuLjM3Y2EwNzMzMWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0IDogcHVibGljIENBQ0ZM
YXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxXS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlUmVuZGVyZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BhdHRlcm5DYWlyby5jcHAKaW5kZXggODFiYzdjZTk2YmEuLjdlNWRmMDQ0YzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19w
YXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0
aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3Bh
dHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKaW5kZXggYTBlN2ZmODczYmMuLjg3NjM0ODAyNDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0Q2Fpcm86OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhCiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAm
eDIsICZ5Mik7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSk7CiAKLSAgICBJbWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpOwotICAgIEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFn
ZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNw
YWNlVHJhbnNmb3JtKCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5z
Zm9ybS5tYXBSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRl
cm5JbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJu
VHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBw
YXR0ZXJuSW1hZ2UuaGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1My4uOTZlYjgzY2E1ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNz
IFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKKyAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERG
RG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
REZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQZGZJbWFn
ZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDcxODYwMDkyMGE5
Li45OGU2OWRlOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5S
ZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bWF0aW9uKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGVJbWFnZSgpLT5y
ZWN0KCk7CisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1h
dGlvbiAqIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CiAgICAgcGF0dGVyblRyYW5zZm9y
bS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYg
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNl
clNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMs
IHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0
b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYg
KG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAg
ICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGlu
Z0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVz
ZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlv
bnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVy
ZWQuCkBAIC04NSw3ICs4NSw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9h
dCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAg
ICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBk
b25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBw
bGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAg
IENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVh
a1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3Mg
PSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwogICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCAx
YjQzMDNjOTgxOC4uNmI5YWU5ZTU0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBA
IC0yNywxNyArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdo
dGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIs
IERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29u
c3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRT
b3VyY2UpCitGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0
aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUs
IGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5n
dGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5n
PiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0
aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxp
Z2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29u
c3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwg
UmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxl
LCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwg
bGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGlu
ZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBr
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2Up
KSk7CiB9CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5
LDE2ICsxMDYsMTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0
aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0
IExpZ2h0U291cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29u
c3QgTGlnaHRTb3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OnNldExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQoteyAgICAKLSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVE
aWZmdXNlTGlnaHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4
IDVmZTJiZTlmNGE1Li43MDM3YzMzMjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAt
MzAsOCArMzAsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNlTGlnaHRp
bmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1
c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LAot
ICAgICAgICBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0
aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKICAgICB2aXJ0
dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdDsKQEAgLTQ5LDE1ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQga2VybmVs
VW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0
KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNvbnN0IExp
Z2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkgb3ZlcnJp
ZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVEaWZmdXNlTGlnaHRpbmcoRmls
dGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0
U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmlu
ZGV4IDI5MjViMGViNjUxLi5mYTBmMjhhZmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC0zMiwxMiAr
MzIsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0aW5nOjpGRUxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAotICAgIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAg
ICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorRkVMaWdodGluZzo6RkVMaWdodGluZyhG
aWx0ZXImIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2xpZ2h0
aW5nVHlwZShsaWdodGluZ1R5cGUpCi0gICAgLCBtX2xpZ2h0U291cmNlKGxpZ2h0U291cmNlKQor
ICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291cmNlKSkKICAgICAsIG1fbGlnaHRp
bmdDb2xvcihsaWdodGluZ0NvbG9yKQogICAgICwgbV9zdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxl
KQogICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KQpAQCAtMjk0LDkgKzI5
Miw2IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiBw
aXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBMaWdodFNvdXJjZTo6UGFpbnRpbmdE
YXRhIHBhaW50aW5nRGF0YTsKICAgICBMaWdodGluZ0RhdGEgZGF0YTsKIAotICAgIGlmICghbV9s
aWdodFNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gRklYTUU6IGRvIHNv
bWV0aGluZyBpZiB3aWR0aCBvciBoZWlnaHQgKG9yIGJvdGgpIGlzIDEgcGl4ZWwuCiAgICAgLy8g
VGhlIFczIHNwZWMgZG9lcyBub3QgZGVmaW5lIHRoaXMgY2FzZS4gTm93IHRoZSBmaWx0ZXIganVz
dCByZXR1cm5zLgogICAgIGlmICh3aWR0aCA8PSAyIHx8IGhlaWdodCA8PSAyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApp
bmRleCBiYWZiZjQ3YzQ1ZS4uMzkyMDI5ODE3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtl
cihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0
Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0g
ICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJj
ZT4pOworICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwg
aW50KTsKICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGlu
Z0RhdGEmLCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRh
JiwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGln
aHRpbmdUeXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBS
ZWY8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29s
b3I7CiAgICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5j
cHAKaW5kZXggZTJlODM0ZjIxYmUuLjhjMTQwODM1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwCkBAIC0yNywxOSArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1G
RVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKLSAgICBmbG9hdCBz
cGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdo
dGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBz
cGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxp
Z2h0U291cmNlKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
IGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNl
PiYmIGxpZ2h0U291cmNlKQorICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRp
bmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVj
dWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLAotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291
cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3Vs
YXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJD
b25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwKLSAgICAgICAga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFU3BlY3VsYXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwg
c3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCiBGRVNwZWN1bGFy
TGlnaHRpbmc6On5GRVNwZWN1bGFyTGlnaHRpbmcoKQpAQCAtMTI0LDE2ICsxMTksMTEgQEAgYm9v
bCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBMaWdodFNvdXJjZSogRkVT
cGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSYg
RkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
bGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKLXsKLSAgICBtX2xp
Z2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpk
dW1wKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCmluZGV4IGUwNGY0NDM2YWE2Li45
ZjkyN2YyNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCkBAIC0yOCw4ICsyOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGlj
IEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5n
PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsCi0gICAgICAgIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogICAg
IHZpcnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IoKSBjb25zdDsKQEAgLTUwLDE1ICs0OSwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNv
bnN0IExpZ2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkg
b3ZlcnJpZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBG
RVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBGRVNwZWN1
bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAKaW5kZXggYTBlMmUxYmY2YWMuLjc4OTIwZWM1MDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlm
ICghdGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAg
IGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25O
dWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zv
cm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54
KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4
RWZmZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZC4u
OThiODZkMDE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTIzMiwyNCArMjMyLDI0IEBAIElt
YWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkK
K1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2Fs
ZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
ICAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBjb3B5VW5tdWx0
aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1cm4gV1RGTW92ZShp
bWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50
UmVjdCYgcmVjdCkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1By
ZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2Nh
bGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAg
ICAgY29weVByZW11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJl
dHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogaW5s
aW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAppbmRleCBlYTRlYzc3NmY1MC4uNmQzMTdjYWIzMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclJlc3VsdHNS
ZWN1cnNpdmUoKTsKIAogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7Ci0gICAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNV
bm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBj
b3B5VW5tdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bi5jcHAKaW5kZXggMDM1ZTQ1YmIwN2EuLmQ3OWI4YjJhZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYS4uZWM3M2U1OGVmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNjgsMjEgKzY4LDIx
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbHRlck9wZXJhdGlvbigpIHsgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0g
MDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUg
Lypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91
Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFibGVuZGluZ05lZWRzUmVuZGVy
ZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3Qg
TGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQorICAgIHZp
cnR1YWwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wg
LypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJs
ZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KQEAgLTExOSwxNCArMTE5LDE0IEBAIHByb3RlY3RlZDoKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgRGVmYXVsdEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZmF1bHRGaWx0ZXJP
cGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJlc2VudGVkVHlwZSkKKyAgICBzdGF0
aWMgUmVmPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJl
c2VudGVkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZp
bHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNl
bnRlZFR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uKHJlcHJlc2VudGVkVHlwZSgpKSk7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlw
ZSByZXByZXNlbnRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcHJlc2VudGVkVHlwZTsgfQpA
QCAtMTQ1LDE0ICsxNDUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgUGFzc3Rocm91Z2hGaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbigpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNjksMTcgKzE2OSwxNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCkKKyAgICBzdGF0aWMgUmVmPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBmcmFnbWVu
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24odXJsLCBmcmFnbWVudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5SZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24oKTsKIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIGZpbHRlcnMgY2Fubm90IGJlIGNsb25l
ZC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEZpbHRlck9wZXJhdGlvbio+KG51bGxwdHIp
OwogICAgIH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KIAogICAgIEZpbHRlckVm
ZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7
IH0KLSAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwor
ICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYpOwogCiBwcml2
YXRlOgogICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudCk7CkBAIC0yMTMsMTkgKzIxMywxOSBAQCBwcml2YXRlOgogLy8g
Rm9yIEhVRV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQgaW4gbV9hbW91
bnQuCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
IDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQs
IE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CiAgICAgfQogCi0g
ICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24o
YW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAg
ICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFs
c2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKQEAgLTI0NCwyMSArMjQ0LDIxIEBAIHByaXZh
dGU6CiAvLyBJTlZFUlQsIEJSSUdIVE5FU1MsIENPTlRSQVNUIGFuZCBPUEFDSVRZIGFyZSB2YXJp
YXRpb25zIG9uIGEgYmFzaWMgY29tcG9uZW50IHRyYW5zZmVyIGVmZmVjdC4KIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMg
RmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUp
KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50
KCksIHR5cGUoKSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVy
biBtX2Ftb3VudDsgfQogCiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC0yNzYsMTQgKzI3NiwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBCbHVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qmx1ckZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCisgICAgc3RhdGljIFJlZjxCbHVyRmlsdGVyT3Bl
cmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZNb3ZlKHN0ZERldmlhdGlvbikp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZN
b3ZlKHN0ZERldmlhdGlvbikpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Qmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZERldmlhdGlvbigpKSk7CiAgICAgfQog
CiAgICAgY29uc3QgTGVuZ3RoJiBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERl
dmlhdGlvbjsgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92ZXNQ
aXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDcsMTQgKzMwNywxNCBAQCBwcml2YXRlOgog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyBSZWY8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZp
YXRpb24sIGNvbG9yKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2Nh
dGlvbigpLCBzdGREZXZpYXRpb24oKSwgY29sb3IoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uKCksIHN0ZERldmlhdGlv
bigpLCBjb2xvcigpKSk7CiAgICAgfQogCiAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX2xv
Y2F0aW9uLngoKTsgfQpAQCAtMzI2LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVj
dHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92
ZXNQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWFkMTNmMzRkNjkuLmFkMjJiNDdiMWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPFRl
eHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0
IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGludCBtYXhUZXh0dXJlU2l6
ZSA9IDA7CiAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX1NJWkUsICZtYXhUZXh0dXJlU2l6ZSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgUGFzc1Jl
ZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IEZvcm1hdCBmb3JtYXQsIGkKICAgICAgICAgaWYgKCF0ZXh0dXJlSWQpIHsKICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgdGV4
dHVyZUlkcy0+YXQoaSkgPSB0ZXh0dXJlSWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCmluZGV4IDNhYTU1ZjgyMTcxLi41N2E2ODMyN2JkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJl
PiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4LCBC
R1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVm
UHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lkIGxv
YWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBj
b25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGJkMThlNWM1OGM1Li40NzJhYTdkZGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1Ymxp
YyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
PiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRy
PEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiBwYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5k
ZXgsIHBhZCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXIuaAppbmRleCAxZWNkMzM0YmEwZi4uZDNlMDRmNmI3MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1mcmFtZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBJ
bnRTaXplOwogCiBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdl
R1N0cmVhbWVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCisgICAgICAgIHN0YXRp
YyBSZWY8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdlKEdzdFNhbXBsZSogc2FtcGxlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNh
bXBsZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VHU3RyZWFtZXIo
c2FtcGxlKSk7CiAgICAgICAgIH0KICAgICAgICAgfkltYWdlR1N0cmVhbWVyKCk7CiAKLSAgICAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gaW1hZ2UoKQorICAgICAgICBCaXRtYXBJbWFnZSog
aW1hZ2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbWFnZSk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBlOTQyYTJjNWZj
MC4uNGQ0ZGI0ZWRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBj
cmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2lu
ZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOwog
ICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoKSB7
IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5hZGREYXRh
Q3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRHZW5l
cmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBhZGRHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKGN1ZUZv
cm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSgqZGF0
YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGNjM2E2ZjBlOWZjLi42YTkwNzQ0ZTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MCw5ICs0MCw5IEBAIHR5
cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUsIHB1Ymxp
YyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IGNyZWF0ZShnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyKGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGIzNTYwMzhjZGI3Li43OWMxNTFiYTZiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNzcs
NyArMTE3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFi
bGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiB7CiAgICAgQVNTRVJUKGVudHJ5
KTsKIAotICAgIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNy
ZWF0ZSgpOworICAgIGF1dG8gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSgpOwogCiAgICAg
Z2ludDY0IHN0YXJ0ID0gLTEsIHN0b3AgPSAtMTsKICAgICBnc3RfdG9jX2VudHJ5X2dldF9zdGFy
dF9zdG9wX3RpbWVzKGVudHJ5LCAmc3RhcnQsICZzdG9wKTsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NoYXB0
ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlLnJlbGVhc2UoKSk7CisgICAgbV9jaGFwdGVyc1Ry
YWNrLT5hZGRHZW5lcmljQ3VlKGN1ZSk7CiAKICAgICBmb3IgKEdMaXN0KiBpID0gZ3N0X3RvY19l
bnRyeV9nZXRfc3ViX2VudHJpZXMoZW50cnkpOyBpOyBpID0gaS0+bmV4dCkKICAgICAgICAgcHJv
Y2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KHN0YXRpY19jYXN0PEdzdFRvY0VudHJ5Kj4oaS0+ZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBi
YTQ2YTY5YjIxMi4uNWVhNzZlM2ZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdS
ZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoR1Jl
ZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGll
bnRHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAKaW5kZXggNjYzYzgy
NWU1ZGUuLmViYjUwMmYyOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTgzLDEyICsxODMsMTIgQEAgdm9pZCBN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSWQp
CiAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bV9wbGF5YmFja1BpcGVsaW5lLT5mbHVzaCh0cmFj
a0lkKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6ZW5xdWV1ZVNh
bXBsZShQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPiBwcnBTYW1wbGUpCit2b2lkIE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1w
bGUpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fcGxh
eWVyUHJpdmF0ZSkKLSAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlwZWxpbmUt
PmVucXVldWVTYW1wbGUocHJwU2FtcGxlKTsKKyAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3Bs
YXliYWNrUGlwZWxpbmUtPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKIH0KIAogR1JlZlB0cjxXZWJL
aXRNZWRpYVNyYz4gTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OndlYktpdE1lZGlhU3Jj
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJN
U0UuaAppbmRleCBjM2Q0YWM3YmMyMS4uZGE3OThjZmI3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsK
ICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBh
c3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTIwOTViNjEwNjcuLmU2
MmNkNTZhODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IGI5MTll
NTUzMDUyLi44YTJmZjQzYWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICBHU1RfREVCVUcoInRyYWNrSWQ9JXMgZmx1c2hlZCIsIHRy
YWNrSWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQordm9pZCBQ
bGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKQEAgLTUwMyw3ICs1
MDMsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmUHRyPE1lZGlh
U2FtcGxlPiBtZWRpYVNhbXBsZSkKICAgICBHc3RFbGVtZW50KiBhcHBzcmMgPSBzdHJlYW0tPmFw
cHNyYzsKICAgICBNZWRpYVRpbWUgbGFzdEVucXVldWVkVGltZSA9IHN0cmVhbS0+bGFzdEVucXVl
dWVkVGltZTsKIAotICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2Fz
dDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLmdldCgpKTsKKyAgICBHU3RyZWFt
ZXJNZWRpYVNhbXBsZSogc2FtcGxlID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyTWVkaWFTYW1wbGUq
PihtZWRpYVNhbXBsZS5wdHIoKSk7CiAgICAgaWYgKHNhbXBsZS0+c2FtcGxlKCkgJiYgZ3N0X3Nh
bXBsZV9nZXRfYnVmZmVyKHNhbXBsZS0+c2FtcGxlKCkpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0
U2FtcGxlPiBnc3RTYW1wbGUgPSBzYW1wbGUtPnNhbXBsZSgpOwogICAgICAgICBHc3RCdWZmZXIq
IGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihnc3RTYW1wbGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAppbmRleCAwOGYwZTYwZDMzMy4uZGE0OThkOWZiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2
b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxN
ZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYp
OwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkx
MThmNC4uNTc1YjNhNWVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMzYsMTcgKzM2LDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UoY29uc3QgY2hhciogaWNvbk5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkSW1hZ2VGcm9t
R1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQogewotICAgIFJlZlB0cjxCaXRtYXBJbWFn
ZT4gaWNvbiA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfc3RyZHVwX3ByaW50
ZigiL29yZy93ZWJraXRndGsvcmVzb3VyY2VzL2ltYWdlcy8lcyIsIGljb25OYW1lKSk7CiAgICAg
R1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBhZG9wdEdSZWYoZ19yZXNvdXJjZXNfbG9va3VwX2RhdGEo
cGF0aC5nZXQoKSwgR19SRVNPVVJDRV9MT09LVVBfRkxBR1NfTk9ORSwgbnVsbHB0cikpOwogICAg
IEFTU0VSVChkYXRhKTsKICAgICBpY29uLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKSwgZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSksIHRydWUpOwotICAg
IHJldHVybiBpY29uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaWNvbjsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciogZmlsZW5hbWUpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+
IGNvbnRlbnQ7CiAgICAgZ3NpemUgbGVuZ3RoOwpAQCAtNjAsMjEgKzYwLDIxIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gbG9hZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUoY29uc3QgY2hhciogbmFt
ZSkKK3N0YXRpYyBSZWY8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJvbVRoZW1lKGNvbnN0
IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGljb25TaXplID0gZ19zdHJfaGFzX3N1ZmZpeChuYW1l
LCAiQDJ4IikgPyAzMiA6IDE2OwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaWNvbiA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CiAgICAgR1VuaXF1ZVB0cjxHdGtJY29uSW5mbz4gaWNvbkluZm8oZ3RrX2ljb25fdGhlbWVfbG9v
a3VwX2ljb24oZ3RrX2ljb25fdGhlbWVfZ2V0X2RlZmF1bHQoKSwgR1RLX1NUT0NLX01JU1NJTkdf
SU1BR0UsIGljb25TaXplLCBHVEtfSUNPTl9MT09LVVBfTk9fU1ZHKSk7CiAgICAgaWYgKGljb25J
bmZvKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkp
OwotICAgICAgICBpY29uLT5zZXREYXRhKGJ1ZmZlci5yZWxlYXNlKCksIHRydWUpOwotICAgICAg
ICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbG9hZFJlc291
cmNlU2hhcmVkQnVmZmVyKGd0a19pY29uX2luZm9fZ2V0X2ZpbGVuYW1lKGljb25JbmZvLmdldCgp
KSk7CisgICAgICAgIGljb24tPnNldERhdGEoV1RGTW92ZShidWZmZXIpLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgcmV0dXJuIGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UobmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChu
YW1lLCAibWlzc2luZ0ltYWdlIikgPyBsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShuYW1l
KSA6IGxvYWRJbWFnZUZyb21HUmVzb3VyY2UobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApp
bmRleCBmMDNjYWNlOGVkOS4uODNmZjI3ZWE1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApAQCAt
NDgsMTAgKzQ4LDEwIEBAIGNvbnN0IGhiX3RhZ190IEhhcmZCdXp6RmFjZTo6a2VyblRhZyA9IEhC
X1RBRygnaycsICdlJywgJ3InLCAnbicpOwogCiBjbGFzcyBGYWNlQ2FjaGVFbnRyeSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZhY2VDYWNoZUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmFjZUNhY2hlRW50cnk+IGNyZWF0ZShoYl9mYWNlX3QqIGZhY2UpCisgICAgc3RhdGlj
IFJlZjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2ZhY2VfdCogZmFjZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChmYWNlKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWNlQ2FjaGVF
bnRyeShmYWNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZhY2VDYWNoZUVudHJ5
KGZhY2UpKTsKICAgICB9CiAgICAgfkZhY2VDYWNoZUVudHJ5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZS5oCmluZGV4IDYzMTc5ZmU4MTVlLi41OWNlZTljM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5
ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAg
ICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWlu
dDY0X3QgdW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250
UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlx
dWVJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZv
cm1EYXRhLCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBm
NWZhNjk3Yzk2OC4uZTFjZmUzZmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiAgICAgbV90aWZmUmVwID0gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCitSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25z
dCBjaGFyICpuYW1lKQogewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYkNvcmVCdW5kbGVGaW5kZXIgY2xhc3NdXTsKICAgICBOU1N0cmluZyAqaW1h
Z2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4
IDk3ZDc1NGQwMmE0Li5kYzM0YmJiMzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAt
MjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHbHlwaC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Myw5ICs0Myw5
IEBAIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
T3BlblR5cGVNYXRoRGF0YT4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnQpCisg
ICAgc3RhdGljIFJlZjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgZm9udCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlblR5cGVN
YXRoRGF0YShmb250KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wZW5UeXBlTWF0
aERhdGEoZm9udCkpOwogICAgIH0KICAgICB+T3BlblR5cGVNYXRoRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuaAppbmRleCAzMjQ1NjM4YThlZi4uZGM1OTMxZWRmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAt
MzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBp
bnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgp
LmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6
ZSBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZi4u
ZmM5NDk2M2YxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmIFVTRShDQUlSTykKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgpAQCAtMjE0LDcgKzIx
NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRQYXNzZXNSZXF1aXJlZEZvckZpbHRlcihGaWx0ZXJP
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewogICAg
IGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmgKaW5kZXggYzRhODAyMjRhODcuLjNhNGQ4MDQ3MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5o
CkBAIC01OSwxNiArNTksMTYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNOb1N3
aXp6bGUoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQm
IHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9
IDQsIFBsYXRmb3JtM0RPYmplY3QgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CiAgICAgYm9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVy
ZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgc3RydWN0IEZpbHRlckluZm8gewogICAgICAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7CiAgICAgICAgIHVuc2lnbmVkIHBhc3M7CiAg
ICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBjb250ZW50VGV4dHVyZTsKIAotICAgICAgICBG
aWx0ZXJJbmZvKFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmID0gMCwgdW5zaWduZWQgcCA9
IDAsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdCA9IDApCi0gICAgICAgICAgICA6IGZpbHRl
cihmKQorICAgICAgICBGaWx0ZXJJbmZvKFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+JiYgZiA9IG51
bGxwdHIsIHVuc2lnbmVkIHAgPSAwLCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0ID0gbnVsbHB0
cikKKyAgICAgICAgICAgIDogZmlsdGVyKFdURk1vdmUoZikpCiAgICAgICAgICAgICAsIHBhc3Mo
cCkKLSAgICAgICAgICAgICwgY29udGVudFRleHR1cmUodCkKKyAgICAgICAgICAgICwgY29udGVu
dFRleHR1cmUoV1RGTW92ZSh0KSkKICAgICAgICAgICAgIHsgfQogICAgIH07CiAgICAgY29uc3Qg
RmlsdGVySW5mbyogZmlsdGVySW5mbygpIGNvbnN0IHsgcmV0dXJuICZtX2ZpbHRlckluZm87IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc4YTAyNDZm
N2Y1Li5hMDI2ZjRjNTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRl
cnMoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1f
bGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNl
dERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCks
IGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggOTczMDQ3ZjQ5MDUuLjFmOWU2ODI3ZGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
Y3BwCkBAIC0zMiwxMSArMzIsMTEgQEAgVGV4dHVyZU1hcHBlcjo6VGV4dHVyZU1hcHBlcigpID0g
ZGVmYXVsdDsKIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAK
LVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVG
cm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBm
bGFncykKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdz
IGZsYWdzKQogewogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzZWxlY3RlZFRleHR1cmUgPSBt
X3RleHR1cmVQb29sLT5hY3F1aXJlVGV4dHVyZShzaXplLCBmbGFncyk7CiAgICAgc2VsZWN0ZWRU
ZXh0dXJlLT5yZXNldChzaXplLCBmbGFncyk7Ci0gICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApp
bmRleCA3MjMzZDBkY2NkNS4uNjczMGQ4ZTdiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5kQ2xpcCgpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyA9IDApIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChj
b25zdCBJbnRTaXplJiwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgPSBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1
aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpG
bGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogCiAgICAgdm9pZCBzZXRQYXR0
ZXJuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwKSB7IG1fcGF0dGVyblRy
YW5zZm9ybSA9IHA7IH0KICAgICB2b2lkIHNldFdyYXBNb2RlKFdyYXBNb2RlIG0pIHsgbV93cmFw
TW9kZSA9IG07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggNzQ2NGQwNDdlMzUuLjk4ZGM4
NDVmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgogCkBAIC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVyR0w6
OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3NvckJv
eDsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0
ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4
dHVyZSgpCiB7CiAgICAgcmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRleHQz
RCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTEuLmU3YzgwZTkyNjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVu
ZENsaXAoKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAg
ICBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6
ZSgyMDAwLCAyMDAwKTsgfQotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4
dHVyZSgpIG92ZXJyaWRlOworICAgIFJlZjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkg
b3ZlcnJpZGU7CiAgICAgaW5saW5lIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDNELmdldCgpOyB9CiAKICAgICB2b2lkIGRyYXdG
aWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0dXJlLCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiwgaW50IHBhc3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBkMzljZmZjYmI3OC4uNzliODk1NDY3
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zKQogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5zZXRNYXNrTW9kZShm
YWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVy
OjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVGcm9t
UG9vbChzaXplLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIHwgQml0bWFwVGV4dHVyZTo6
RkJPQXR0YWNobWVudCk7CiAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlv
bnMob3B0aW9ucyk7CkBAIC0zNzYsMTYgKzM3NiwxNiBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFw
cAogICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9wdGlvbnMpOwogICAgIHN1
cmZhY2UgPSBzdXJmYWNlLT5hcHBseUZpbHRlcnMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX2N1
cnJlbnRGaWx0ZXJzKTsKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworICAgIHJldHVybiBz
dXJmYWNlOwogfQogCi1zdGF0aWMgdm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFj
ZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKK3N0YXRpYyB2b2lkIGNvbW1p
dFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgQml0bWFw
VGV4dHVyZSYgc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKIHsK
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdl
dCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFy
Z2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9m
ZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJh
bnNmb3JtKTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKnN1cmZhY2Uu
Z2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLmRyYXdUZXh0dXJlKHN1cmZhY2UsIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3Bh
Y2l0eSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3AKICAgICB9CiAKICAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0aW9ucy5vcGFjaXR5ID09
IDEpIHsKLSAgICAgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVj
dCwgMSk7CisgICAgICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKnJlcGxpY2FTdXJmYWNlLCBy
ZWN0LCAxKTsKICAgICAgICAgcmVwbGljYVN1cmZhY2UgPSBudWxscHRyOwogICAgIH0KIApAQCAt
NjM3LDkgKzYzNyw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRvVmlld3Bv
cnQoYm9vbCBmaXhlZFRvVmlld3BvcnQpCiAgICAgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZFRv
Vmlld3BvcnQ7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUpCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFJlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPiYmIGJhY2tpbmdTdG9yZSkKIHsKLSAgICBtX2JhY2tpbmdTdG9yZSA9IGJh
Y2tpbmdTdG9yZTsKKyAgICBtX2JhY2tpbmdTdG9yZSA9IFdURk1vdmUoYmFja2luZ1N0b3JlKTsK
IH0KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5p
bmdBbmltYXRpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAzYjFjMTZi
MGIxMy4uYmVkMWY2Y2Q2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTExNyw3ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IFRleHR1cmVNYXBw
ZXJBbmltYXRpb25zJik7CiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7CiAgICAg
Ym9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsg
fQotICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZT4pOworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFJlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPiYmKTsKIAogICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29s
IGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CkBAIC0xNTcs
NyArMTU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdp
b25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKLSAgICBQYXNzUmVmUHRyPEJp
dG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJ
bnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6
ZSYpOwogICAgIHZvaWQgcGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgcGFpbnRTZWxm
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50U2VsZkFu
ZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA4NTE0YTRmNzM2YS4uNDIz
OGM1ZDhlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlKCkgeyB9CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmODk3MTQ4OWFmZC4uYTI2NjJlZjBiOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5
bmNJbWFnZUJhY2tpbmcoKQogICAgICAgICAgICAgcmVsZWFzZUltYWdlQmFja2luZ0lmTmVlZGVk
KCk7CiAKICAgICAgICAgaWYgKCFtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKSB7Ci0gICAgICAg
ICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nID0gbV9jb29yZGluYXRvci0+Y3JlYXRlSW1h
Z2VCYWNraW5nSWZOZWVkZWQobV9jb21wb3NpdGVkSW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAg
bV9jb29yZGluYXRlZEltYWdlQmFja2luZyA9IG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFj
a2luZ0lmTmVlZGVkKCptX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgICAgICBtX2Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLT5hZGRIb3N0KHRoaXMpOwogICAgICAgICAgICAgbV9sYXllclN0YXRl
LmltYWdlSUQgPSBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5pZCgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
aW5kZXggYmYyNTExMWRiZTUuLmI3NzRlMDA1ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00Niw3ICs0Niw3IEBAIGNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1h
Z2UqKSA9IDA7CisgICAgdmlydHVhbCBSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdz
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZElt
YWdlQmFja2luZy5jcHAKaW5kZXggZjUyOTQ3NTVhMjMuLjU2MGMyZTE2NzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAg
LTU3LDE0ICs1NywxNCBAQCBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKAogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+KGltYWdlKTsKIH0KIAotUGFz
c1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitSZWY8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xp
ZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgaW1hZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEltYWdlQmFja2luZyhjbGllbnQsIFdURk1vdmUoaW1h
Z2UpKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZyhDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCi0gICAgOiBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCYgY2xpZW50LCBSZWY8SW1hZ2U+JiYg
aW1hZ2UpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGlt
YWdlKSkKICAgICAsIG1faWQoZ2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdl
dCgpKSkKICAgICAsIG1fY2xlYXJDb250ZW50c1RpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKQogICAgICwgbV9pc0RpcnR5KGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
aAppbmRleCBiODYwM2M2OGU2My4uNGM2OWU1ODI2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdl
QmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGltYWdlQmFja2luZ1Zpc2libGUoKSA9IDA7CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGUoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIHN0YXRpYyBSZWY8Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGllbnQmLCBSZWY8SW1hZ2U+JiYpOwogICAgIHZp
cnR1YWwgfkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKCk7CiAKICAgICBzdGF0aWMgQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCBnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKEltYWdlKik7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZSgpOwogCiBwcml2YXRlOgot
ICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCosIFBhc3NSZWZQdHI8SW1hZ2U+KTsK
KyAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQmLCBSZWY8SW1hZ2U+JiYpOwogCiAg
ICAgdm9pZCByZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmls
aXR5SWZOZWVkZWQoYm9vbCYgY2hhbmdlZFRvVmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAxZTU4YmVlMGFmMC4u
MGQ4ODIwZTlmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciopOworUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTIg
KzM4LDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewog
fQogCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKK1JlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihuYW1lKTsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGltZyA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICBpbWctPnNldERhdGEoYnVmZmVyLnJlbGVhc2UoKSwg
dHJ1ZSk7Ci0gICAgcmV0dXJuIGltZy5yZWxlYXNlKCk7CisgICAgYXV0byBidWZmZXIgPSBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOworICAgIGF1dG8gaW1nID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOworICAgIGltZy0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlciksIHRydWUpOworICAgIHJl
dHVybiBpbWc7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVAoSEJJVE1BUCBibXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKaW5k
ZXggMGQwOThiZGYzZjIuLjE2YjZiNWRmZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCkBAIC05MywyMCArOTMsMTUgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjcmVhdGVXaW5kb3coSFdORCBwYXJlbnRI
d25kKQogfQogCiAjaWYgVVNFKENBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcm9v
dENoaWxkKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290
Q2hpbGRMYXllcihSZWY8UGxhdGZvcm1DQUxheWVyPiYmIHJvb3RDaGlsZCkKIHsKLSAgICBpZiAo
bV9yb290Q2hpbGQgPT0gcm9vdENoaWxkKQorICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hp
bGQucHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Jvb3RDaGlsZCkKICAgICAg
ICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CiAKLSAgICBtX3Jvb3RDaGls
ZCA9IHJvb3RDaGlsZDsKLQotICAgIGlmICghbV9yb290Q2hpbGQpIHsKLSAgICAgICAgbV9sYXll
clRyZWVIb3N0ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Jvb3RD
aGlsZCA9IFdURk1vdmUocm9vdENoaWxkKTsKIAogICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGNk
ZDBjYTMwNDEwLi40YTIwZDllMGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShD
QSkKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yb290Q2hpbGQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPik7CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihSZWY8UGxh
dGZvcm1DQUxheWVyPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAppbmRl
eCAxYjkyMjllODY2NS4uOWRmYjVhZWQ1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIElEMkQxQml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZv
cm1Db250ZXh0KTsKIAogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5CcnVzaCA9IG51bGxw
dHI7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2go
cGF0dGVybkltYWdlLT5uYXRpdmVJbWFnZSgmY29udGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFBy
b3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEhSRVNVTFQg
aHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKHBhdHRlcm5JbWFnZS5uYXRp
dmVJbWFnZSgmY29udGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZicnVzaFBy
b3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICAg
ICByZXR1cm4gcGF0dGVybkJydXNoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCmluZGV4IDg5ZTQyMTkzZGVmLi40
Y2UzNjdiNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBTaGFy
ZWRHRElPYmplY3RfaAogI2RlZmluZSBTaGFyZWRHRElPYmplY3RfaAogCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCkBAIC0zNCw5ICszNCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNo
YXJlZEdESU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdESU9iamVjdDxUPj4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdE
SU9iamVjdDxUPiBvYmplY3QpCisgICAgc3RhdGljIFJlZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0
ZShHRElPYmplY3Q8VD4gb2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRHRElPYmplY3Q8VD4oV1RGTW92ZShvYmplY3QpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEdESU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKICAgICB9
CiAKICAgICBUIGdldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MjU0ZWY5MDk3Yi4uZTViZjA0ZGIyM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zCiAgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKICAgICAgICAgICAgIGF1dG8mIHJlZmVy
ZW5jZU9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oZmlsdGVy
T3BlcmF0aW9uKTsKICAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKHJl
bmRlcmVyLCAqcHJldmlvdXNFZmZlY3QsIHJlZmVyZW5jZU9wZXJhdGlvbik7Ci0gICAgICAgICAg
ICByZWZlcmVuY2VPcGVyYXRpb24uc2V0RmlsdGVyRWZmZWN0KGVmZmVjdCk7CisgICAgICAgICAg
ICByZWZlcmVuY2VPcGVyYXRpb24uc2V0RmlsdGVyRWZmZWN0KGVmZmVjdC5jb3B5UmVmKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2UuY3BwCmluZGV4IGJkMWU1NWU0MDc1Li4xYTk0YTU2MzBiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKIAog
UmVmUHRyPEltYWdlPiBSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZShjb25zdCBJbnRTaXplJikg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgcmV0dXJu
IG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKG1fcmVuZGVy
ZXIpIDogJkltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZVJlc291cmNl
OjplcnJvck9jY3VycmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDAyMzgyNTI5MmUzLi4yOGYwMWZiZGEwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91CiAgICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAg
ICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtS
ZWYoKSk7CiAgICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJl
czsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgp
OwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxv
UmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5s
ZWFrUmVmKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVD
b3JuZXJJbWFnZUxvUmVzKCZJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVz
aXplQ29ybmVyIikubGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNp
emVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNv
cm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGVhOTM2YTRk
YzgyLi4wZmI4MjgwZTE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTE1LDcgKzExNSw3IEBA
IFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgdW5zCiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgogICAgIGF1
dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOwotICAgIHBh
dHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLCB0cnVlLCB0
cnVlKTsKKyAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJ
bWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKIAogICAgIC8vIENvbXB1dGUgcGF0
dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA3NWYyNGM0ZTI2Ny4uY2EwZjY4
ZmE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCkBAIC0xMTUsMzEgKzExNSwzMCBAQCBib29sIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0
LAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikKICAg
ICAgICAgcmV0dXJuIGRpZmZ1c2VMaWdodGluZy0+c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VD
b25zdGFudCgpKTsKIAotICAgIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSA9IGNvbnN0X2Nhc3Q8
TGlnaHRTb3VyY2UqPihkaWZmdXNlTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOworICAgIGF1dG8m
IGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSY+KGRpZmZ1c2VMaWdodGluZy0+
bGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVu
dCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFTU0VS
VChsaWdodFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3Vy
Y2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOworICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlv
bigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOworICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxpZ2h0
RWxlbWVudC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRFbGVt
ZW50LT55KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAgICAg
IHJldHVybiBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOwog
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7
CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5w
b2ludHNBdFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRy
KQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQt
PnBvaW50c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0Wihs
aWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNw
ZWN1bGFyRXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgICAg
ICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNw
ZWN1bGFyRXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGlu
Z0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRpbmdD
b25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRp
bmdDb25lQW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xODgsOCArMTg3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAg
IGNvbnN0IENvbG9yJiBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRp
bmdDb2xvcigpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNl
TGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNv
bnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFko
KSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxl
KCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVu
Z3RoWSgpLCBsaWdodFNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggNTU2NWI5MWQxMmIuLjE3MDQzN2YzMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjYsMzEgKzEyNiwzMCBA
QCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3BlY3VsYXJFeHBvbmVudEF0dHIpCiAgICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5z
ZXRTcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQoKSk7CiAKLSAgICBMaWdodFNvdXJj
ZSogbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlKj4oc3BlY3VsYXJMaWdodGlu
Zy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExp
Z2h0U291cmNlJj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3Qg
U1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5k
TGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFTU0VSVChsaWdodFNvdXJjZSk7CiAgICAgQVNTRVJU
KGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhB
dHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50
LT5hemltdXRoKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0QXppbXV0aChsaWdo
dEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2
YXRpb25BdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdo
dEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEVs
ZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRF
bGVtZW50LT54KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WChsaWdodEVsZW1l
bnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxpZ2h0RWxlbWVudC0+eSgpKTsKKyAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRFbGVtZW50LT55KCkpOwogICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0Wihs
aWdodEVsZW1lbnQtPnooKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRaKGxpZ2h0
RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0
dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVu
dC0+cG9pbnRzQXRYKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRY
KGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNB
dFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3Vy
Y2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKKyAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFyRXhwb25lbnQobGlnaHRFbGVtZW50
LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0U3Bl
Y3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1p
dGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldExpbWl0aW5n
Q29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25lQW5nbGUoKSk7CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTksOCArMTk4LDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3IgPSBy
ZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRl
ciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6
OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgp
LCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5n
dGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAzOTlkNmJhZTVh
Ni4uNDRkMGNiYTgxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6OmltYWdl
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBh
dXRvKiBpbWFnZSA9IGZpbmRJbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWlt
YWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4g
JkltYWdlOjpudWxsSW1hZ2UoKTsKICAgICBBU1NFUlQoIWltYWdlLT5zaXplKCkuaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gaW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDg1NzE4NTA4NDEwLi4zNTcyMDcxMTJjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAg
LTI4Niw3ICsyODYsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVs
bHNjcmVlbigpCiAgICAgOjpTaG93V2luZG93KG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCBT
V19TSE9XKTsKIAogI2lmIFVTRShDQSkKLSAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RD
aGlsZExheWVyKG1fcm9vdENoaWxkKTsKKyAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RD
aGlsZExheWVyKCptX3Jvb3RDaGlsZCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHZpZGVvTGF5
ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihtX3ZpZGVvRWxlbWVudC0+cGxh
dGZvcm1MYXllcigpKTsKICAgICBBU1NFUlQodmlkZW9MYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExM
LmNwcAppbmRleCBiZGQ5NDE4YjdmMy4uN2MzZmJiMjczZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExM
LmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jv
c3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwot
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIo
Y29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJj
ZSBpZApAQCAtMjI1LDE3ICsyMjUsMTcgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKICAgICBlbHNlIGlm
ICghc3RyY21wKG5hbWUsICJmc1ZpZGVvUGxheSIpKQogICAgICAgICBpZHIgPSBJRFJfRlNfVklE
RU9fUExBWTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEhSU1JDIHJlc0luZm8gPSBGaW5kUmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtF
SU5UUkVTT1VSQ0UoaWRyKSwgTCJQTkciKTsKICAgICBpZiAoIXJlc0luZm8pCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIQU5ETEUgcmVzID0gTG9hZFJl
c291cmNlKGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAgICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiByZXNvdXJjZSA9IExvY2tS
ZXNvdXJjZShyZXMpOwogICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2Uo
Z0luc3RhbmNlLCByZXNJbmZvKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3
NWEuLjc2MTVmMDkxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAKQEAgLTM0OSw5ICszNDksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYQogICAgIGlm
IChtX2JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIs
IGJhY2tpbmdTdG9yZSk7Ci0gICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUp
OworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZSgpOworICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZS5jb3B5UmVm
KCkpOworICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoV1RGTW92ZShiYWNraW5nU3RvcmUpKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRl
eHR1cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZSgwKTsKKyAgICBsYXllci0+c2V0QmFj
a2luZ1N0b3JlKG51bGxwdHIpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggN2FmNjY0OGIwZTEuLjUzZjA1Y2UwMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtOTY0LDcgKzk2NCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDdXJzb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ3Vyc29yJiBj
dXJzb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghaXNWYWxpZEltYWdlUHJl
c2VudCkgewotICAgICAgICBjdXJzb3IgPSBDdXJzb3IoSW1hZ2U6Om51bGxJbWFnZSgpLCBJbnRQ
b2ludCgpKTsKKyAgICAgICAgY3Vyc29yID0gQ3Vyc29yKCZJbWFnZTo6bnVsbEltYWdlKCksIElu
dFBvaW50KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZTU1
NzJlMTZkNWUuLjgxMWVlZWEyMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9p
ZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVy
SUQgaWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0KIAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJ
bWFnZSogaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29v
cmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAg
ICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFj
a2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewot
ICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFn
ZSk7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZp
bWFnZV0geworICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgq
dGhpcywgaW1hZ2UpOwogICAgIH0pOwogICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29v
cmRpbmF0b3IuaAppbmRleCBkMmNhNzg0YjM5MC4uN2M1NDAxODczMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExMSw3
ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIC8vIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVu
dAogICAgIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3Jl
OjpJbWFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOwogICAgIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiAvKiBh
dGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Q2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpD
b29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRl
Jikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309760</attachid>
            <date>2017-05-11 13:12:14 -0700</date>
            <delta_ts>2017-05-11 13:25:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>171977_PassRefPtr_graphics_wip.patch</filename>
            <type>text/plain</type>
            <size>153493</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZm
Li5mOTBmN2Q5NTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBJbWFnZSogQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgYXV0byog
Y2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVlLCBjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAKICAgICBpZiAoIWNhY2hlZEZyb21JbWFnZSB8fCAh
Y2FjaGVkVG9JbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAg
ICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBmcm9tSW1hZ2UgPSBj
YWNoZWRGcm9tSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKICAgICBhdXRvKiB0
b0ltYWdlID0gY2FjaGVkVG9JbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpOwogCiAg
ICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgbV9n
ZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21JbWFn
ZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShy
ZW5kZXJlciksIHNpemUpOwogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDE1YzNjYWY4Njlj
Li43MzU2Y2U1ODRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcApAQCAtMTIwLDE3ICsxMjAsMTcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZh
dWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgcmVuZGVyZXItPmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSwgb3B0aW9ucyk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAg
IC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0
MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgogICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIGF1dG8g
aW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2VS
ZWN0KGltYWdlUmVjdCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRlclJlZ2lvbihpbWFn
ZVJlY3QpOwogICAgIGlmICghZmlsdGVyUmVuZGVyZXItPmJ1aWxkKCpyZW5kZXJlciwgbV9maWx0
ZXJPcGVyYXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogICAgIGZpbHRl
clJlbmRlcmVyLT5hcHBseSgpOwogCiAgICAgcmV0dXJuIGZpbHRlclJlbmRlcmVyLT5vdXRwdXQo
KS0+Y29weUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiMGFkZjA1ZDFlZC4uNzliODA4NjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWEuLmVjMTBjZDVmZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBp
bWFnCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVy
bCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYjE5OGE3YzQ0ZWYuLjdkZGI3NTMyMDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTE1NywxMyArMTE1NywxMSBAQCB2b2lkIFNjcm9s
bFZpZXc6OnBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7Ci0gICAg
aWYgKCFwYW5TY3JvbGxJY29uKQotICAgICAgICByZXR1cm47CisgICAgc3RhdGljIEltYWdlJiBw
YW5TY3JvbGxJY29uID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJwYW5JY29uIikubGVh
a1JlZigpOwogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0gbV9wYW5TY3JvbGxJY29uUG9pbnQ7
CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQb2ludCA9IHBhcmVudCgpLT53aW5k
b3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Ny
b2xsSWNvbiwgaWNvbkdDUG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbElj
b24sIGljb25HQ1BvaW50KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCAzY2M3NzBjNzY4MC4uM2QwNTI2NGZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9h
ZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgp
IHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1fZnJv
bUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1ZDRh
OS4uZDQ3NzFhOTY5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlRl
eHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGIyMGJj
MTIwOTBhLi5jNDcwNzQ2NDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTUwNyw3ICs1MDcsNiBAQCBwdWJsaWM6CiAg
ICAgSERDIGhkYygpIGNvbnN0OwogI2lmIFBMQVRGT1JNKFdJTikKICNpZiBVU0UoV0lOR0RJKQot
ICAgIHZvaWQgc2V0Qml0bWFwKFBhc3NSZWZQdHI8U2hhcmVkQml0bWFwPik7CiAgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBBZmZpbmVUcmFu
c2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpOwogICAgIHZvaWQgcmVzZXRBZmZpbmVUcmFuc2Zvcm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA1M2Ey
MmFhNjg0MS4uZTg1M2JmZWJlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsKIH0KIAot
SW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2UoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxsSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVsbEltYWdl
OworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCBkZjlmMDQyNmY2ZS4uNzA2NDMwM2IyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkltYWdlVHlw
ZXMuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpA
QCAtNzksOCArNzgsNyBAQCBjbGFzcyBJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2U+IGxv
YWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk4LDcgKzk2
LDcgQEAgcHVibGljOgogICAgIC8vIHRoZSBpbWFnZSBjb250YWlucyBvbmx5IHJlc291cmNlcyBm
cm9tIGl0cyBvd24gc2VjdXJpdHkgb3JpZ2luLgogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBJbWFnZSYgbnVsbEltYWdlKCk7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBz
aXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2NDliNjg2N2Q0MC4uNTUwM2Q3YTE3YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTEyNTEsNyArMTI1MSw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hl
ZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKQorUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVy
KCkKIHsKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRl
cigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNTQ2NmUyMjJkMDcuLjQ3MmQ3NTY5YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1MjgsNyBAQCBwdWJs
aWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7CisgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9U
cmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5jcHAKaW5kZXggYTlhY2NjMjg0NjguLjI1MWUwNzY2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVm
UHRyPEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBh
dHRlcm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXR0ZXJuKHRp
bGVJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBh
dHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CiAKLVBhdHRl
cm46OlBhdHRlcm4oUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCBy
ZXBlYXRZKQotICAgIDogbV90aWxlSW1hZ2UoaW1hZ2UpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxJ
bWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCisgICAgOiBtX3RpbGVJ
bWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1fcmVwZWF0WChyZXBlYXRYKQogICAgICwgbV9y
ZXBlYXRZKHJlcGVhdFkpCiB7Ci0gICAgQVNTRVJUKG1fdGlsZUltYWdlKTsKIH0KIAogUGF0dGVy
bjo6flBhdHRlcm4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CmluZGV4IDI1NmZhMmQ1ZmI0Li40ODM4NmZhZGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNzIEltYWdlOwogCiBjbGFzcyBQYXR0
ZXJuIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9v
bCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRl
KFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICAg
ICB+UGF0dGVybigpOwogCi0gICAgSW1hZ2UqIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLmdldCgpOyB9CisgICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZUltYWdlLmdldCgpOyB9CiAKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCkBA
IC03Niw5ICs3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVy
biBtX3JlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8SW1hZ2U+JiYs
IGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKIAotICAgIFJlZlB0cjxJbWFnZT4gbV90aWxl
SW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RpbGVJbWFnZTsKICAgICBib29sIG1fcmVwZWF0WDsK
ICAgICBib29sIG1fcmVwZWF0WTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRleHRUcmFjay5oCmluZGV4IDIwYmUzZDE3YWZmLi45NWY2NTUzZWZkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRU
cmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBTaG93aW5nCiAgICAg
fTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gY3JlYXRl
KFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgVHJh
Y2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1vZGUsIFRyYWNrS2lu
ZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBsYW5ndWFn
ZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxhYmVsLCBs
YW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxzZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBjcmVhdGVP
dXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29u
c3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50IHVuaXF1
ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtVGV4dFRyYWNrPiBj
cmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2luZCwgaW50
IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1YWdlLCB1cmwsIG1v
ZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBsYWJlbCwgbGFuZ3Vh
Z2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNEZWZhdWx0KSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0KQEAgLTg3LDE1ICs4
NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlx
dWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmF1bHQ7
IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVtKCkK
KyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpCiAgICAg
ewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0
bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJh
Y2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0
ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAg
ICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2Fw
dGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNh
cHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
ImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCku
bGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGF1dG9tYXRpYyA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0i
LCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOwogICAgICAgICBy
ZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiNDliZDFlMzdmMC4u
MmM5MzUyMDYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVB
VkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0
IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK1JlZjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkY+IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3Jl
YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihr
aW5kLCBjdWVGb3JtYXQsIGlkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKGtpbmQsIGN1ZUZvcm1hdCwgaWQpKTsKIH0KIAogSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkYoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQpA
QCAtNTUsNyArNTUsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoKQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBwcnBDdWVEYXRhLCBjb25zdCBTdHJp
bmcmIHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6YWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIGN1ZURhdGEsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gRGF0YSk7CiAgICAgQVNTRVJUKHN0
YXJ0ID49IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CkBAIC02MywxMSArNjMsMTAgQEAgdm9pZCBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QKICAgICBpZiAoIWNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGN1ZURhdGEgPSBw
cnBDdWVEYXRhOwogICAgIG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IHN0YXJ0OwogICAgIGlmIChl
bmQuaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5k
KEluY29tcGxldGVNZXRhRGF0YUN1ZSB7IGN1ZURhdGEuZ2V0KCksIHN0YXJ0IH0pOwotICAgIGNs
aWVudCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGN1ZURhdGEucmVsZWFzZU5vbk51bGwoKSwg
dHlwZSk7CisgICAgICAgIG1faW5jb21wbGV0ZUN1ZXMuYXBwZW5kKEluY29tcGxldGVNZXRhRGF0
YUN1ZSB7IGN1ZURhdGEucHRyKCksIHN0YXJ0IH0pOworICAgIGNsaWVudCgpLT5hZGREYXRhQ3Vl
KHN0YXJ0LCBlbmQsIFdURk1vdmUoY3VlRGF0YSksIHR5cGUpOwogfQogCiB2b2lkIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6dXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0
IE1lZGlhVGltZSYgdGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBmZjQyZmEyZjQ0Zi4uNTJmZDlhNmExN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEluY29tcGxldGVNZXRhRGF0YUN1
ZSB7CiAKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5kLCBDdWVGb3JtYXQs
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOworICAgIHN0YXRpYyBSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoS2luZCwgQ3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKTsKIAogICAgIH5JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYoKTsKIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpIHsgbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4sIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVm
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
aW5kZXggOTU5NmY4Y2EzYzEuLmE3Y2FhNmVjOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9y
IHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYi
LCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEt
PnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdl
bmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmlj
Q3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0YXR1cyA9IHNlZWtpbmco
KSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5ZGQuLjc4NjM1NDE0MWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaApA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiAKIGNs
YXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDJiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gY3JlYXRlKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
JiwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKTsKIAogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCk7CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBB
Vk1lZGlhU2VsZWN0aW9uR3JvdXAqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0
aWNzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CiAgICAgfk1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKCk7
CiAKICAgICB2b2lkIHNldFNlbGVjdGVkT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2Jq
QyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CmluZGV4IDhkZWUwOWNlMDg2Li4zMGY4MWFkY2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtNDgsOSArNDgsOSBAQCBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDPiBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKK1JlZjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRl
KE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlv
biAqb3B0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDKGdyb3VwLCBvcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOwogfQogCiBNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikK
QEAgLTg1LDkgKzg1LDkgQEAgaW50IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6aW5kZXgo
KSBjb25zdAogICAgIHJldHVybiBbW21fZ3JvdXAtPmF2TWVkaWFTZWxlY3Rpb25Hcm91cCgpIG9w
dGlvbnNdIGluZGV4T2ZPYmplY3Q6bV9tZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKV07CiB9CiAK
LVBhc3NSZWZQdHI8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9uR3Jv
dXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQorUmVmPE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3Jl
YXRlKEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJp
c3RpY3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQyhpdGVtLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKSk7CiB9CiAKIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyhBVlBsYXllckl0ZW0gKml0
ZW0sIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
aGFyYWN0ZXJpc3RpY3MpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdy
b3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVy
aXMKICAgICBmb3IgKEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIGFkZGVkQVZPcHRpb24gaW4gYWRk
ZWRBVk9wdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgYXV0byBhZGRlZE9wdGlvbiA9IE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKCp0aGlzLCBhZGRlZEFWT3B0aW9uKTsKICAgICAg
ICAgaWYgKGFkZGVkQVZPcHRpb24gPT0gc2VsZWN0ZWRPcHRpb24pCi0gICAgICAgICAgICBtX3Nl
bGVjdGVkT3B0aW9uID0gYWRkZWRPcHRpb24uZ2V0KCk7CisgICAgICAgICAgICBtX3NlbGVjdGVk
T3B0aW9uID0gYWRkZWRPcHRpb24ucHRyKCk7CiAgICAgICAgIG1fb3B0aW9ucy5zZXQoYWRkZWRB
Vk9wdGlvbiwgV1RGTW92ZShhZGRlZE9wdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaAppbmRleCA5MGExODYxOWUw
Mi4uMWEzZGY5MTdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAg
QVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWQ0ZNZWRp
YVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1
ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9uLCBmb3JtYXQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YocGxheWVy
LCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMyNjgwZS4uYzNhMGU4OGY0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRi5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRj4gY3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFWQ0ZQbGF5ZXJJdGVtVHJh
Y2tSZWYgdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZDRj4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwbGF5ZXIsIEFW
Q0ZQbGF5ZXJJdGVtVHJhY2tSZWYgdHJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWQ0YocGxheWVyLCB0cmFjaykpOwogICAgIH0KIAogICAgIH5JbmJhbmRUZXh0VHJhY2tQcml2
YXRlTGVnYWN5QVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA1ZmQwMjZhMzRkLi4yOWM0N2EwNjJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDUsMTEgKzQ1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCitSZWY8V2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcj4gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSZWYgYXZSZXF1ZXN0KQogewogICAgIEFTU0VSVChhdlJlcXVlc3QpOwogICAgIEFTU0VS
VChwYXJlbnQpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIocGFyZW50LCBhdlJlcXVlc3QpKTsKIH0KIAogV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcjo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0UmVmIGF2UmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGEwZjBkZDhiMDg0Li5kYWUwNmUxOTIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogY2xh
c3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFy
ZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0
YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEyZWI3OWIuLjBkYTJhZDA2Yjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7CiAKIHByb3RlY3RlZDoK
LSAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOworICAgIFJlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKTsKIAogICAgIGJvb2wgaGFzQ29udGVudEtl
eVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRLZXlTZXNzaW9uOyB9CiAgICAgQVZD
b250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXgg
NTUxM2YzZGZmNWIuLmMyMjQzNDcwMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMzA5LDcgKzMwOSw3
IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0
cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICBbY29udGVudEtleVNlc3Npb24oKSByZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAKLVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCitSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
CiB7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRl
ID0gbV9pbml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24uaAppbmRleCBiOGM3ZDliOWUxMy4uYjBiNTNlOGRmNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVh
bVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJf
dCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
OwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFr
UHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Np
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbQppbmRleCBlODUxOWUyNmE2Yi4uNmVhYzY5ODhlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFW
U3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHJlbW92
ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQorUmVmUHRyPFVpbnQ4
QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3Nh
Z2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAg
ICAgQVNTRVJUKG1fbW9kZSA9PSBLZXlSZWxlYXNlKTsKICAgICBtX2NlcnRpZmljYXRlID0gbV9p
bml0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5oCmluZGV4IDg4YTkyMmE1ZDcwLi4xOGE5NGFkM2NjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRk9iakM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVG
b3JtYXQgZm9ybWF0KQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqc2VsZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgZm9y
bWF0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQyhwbGF5ZXIsIHNlbGVjdGlvbiwgZm9ybWF0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2Vs
ZWN0aW9uLCBmb3JtYXQpKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCmluZGV4IGYzODVhM2YyYzZiLi5iODQx
NTRjNjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAg
ICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaAppbmRleCBhMTRjNDFlM2VkZS4uYjdhMjRiNjgyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTM2LDkg
KzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgT3V0T2ZCYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBj
cmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRp
b24qIHNlbGVjdGlvbikKKyAgICBzdGF0aWMgUmVmPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkY+IGNyZWF0ZShBVkZJbmJhbmRUcmFja1BhcmVudCogcGxheWVyLCAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiogc2VsZWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBP
dXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYocGxheWVy
LCBzZWxlY3Rpb24pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBwcm9jZXNzQ3VlKENGQXJyYXlS
ZWYsIENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3ZDdm
NzczNmU4MC4uZjVlMzc0MDQyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+LCBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKik7CiAgICAgdmlydHVhbCB+V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDc2MDMwZDIy
YjI0Li40ZjdkNDFkNWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1Jl
ZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0
KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQog
CiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNC4u
NjUxMTNiMGQyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdy
YXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK1JlZjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIHJlc3VsdCA9IFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CkBAIC0zNTYsMTMgKzM1Niwx
MyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheQogICAgIGlmIChyZXN1bHQtPmNhbkhhdmVCYWNr
aW5nU3RvcmUoKSkKICAgICAgICAgcmVzdWx0LT5zZXRXYW50c0RlZXBDb2xvckJhY2tpbmdTdG9y
ZShzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSk7CiAgICAgCi0gICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAg
IHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShsYXllclR5cGUsIG93bmVyKTsKICNl
bmRpZgogfQogICAgIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIs
IG93bmVyKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllcgogI2Vu
ZGlmCiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllciwgQwogICAgIC8vIHRoZSBjcmVhdG9yIG9mIHRoZSByYXcgbGF5ZXIgaXMgdXNp
bmcgaXQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZS4KICAgICAvLyBGb3Igbm93IHdlIGRvbid0IHN1
cHBvcnQgc3VjaCBhIGNhc2UuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyKTsKLSAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRm
b3JtQ0FMYXllciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKSkg
OiBudWxscHRyOworICAgIG1fY29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5ZXIgPyAocGxhdGZv
cm1DQUxheWVyID8gcGxhdGZvcm1DQUxheWVyIDogY3JlYXRlUGxhdGZvcm1DQUxheWVyKHBsYXRm
b3JtTGF5ZXIsIHRoaXMpLnB0cigpKSA6IG51bGxwdHI7CiAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBwdXJwb3NlIDogTm9Db250ZW50c0xheWVyOwogCiAgICAg
aWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyICYmIG1fY29udGVudHNMYXllcikKQEAgLTI2ODUs
NyArMjY4NSw3IEBAIEdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJl
cGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkK
K1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGljYXRlZExheWVy
Um9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKIHsKICAgICAvLyBMaW1pdCByZXBsaWNh
IG5lc3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCiAgICAg
aWYgKCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0g
UmVwbGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCkBAIC0yOTA3LDcgKzI5MDcsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdQogICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlB
bmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgp
LCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOworICAgIG1fdW5jb21pdHRlZEFuaW1h
dGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5v
bk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI5MzQsNyAr
MjkzNCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0
aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgaWYgKCF2YWxpZE1hdHJpY2Vz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFw
cGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2
YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQpKTsKKyAg
ICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNh
QW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMDE1LDcgKzMwMTUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5k
VG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKHZhbHVlc09LKTsKIAotICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCwgdGltZU9mZnNldCkpOworICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVh
c2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4LCB0aW1lT2Zmc2V0KSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDU0LDI0ICszMDU0LDI0IEBAIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1Jl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFk
ZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKLSAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZl
KTsKKyAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZv
cm1DQUFuaW1hdGlvbjo6QmFzaWMsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGJhc2lj
QW5pbS5wdHIoKSwgYW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBiYXNpY0FuaW07CiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhZGRpdGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xh
eWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKQogewotICAgIFJlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBs
YXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKLSAgICBzZXR1cEFuaW1hdGlv
bihrZXlmcmFtZUFuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBhdXRvIGtleWZyYW1l
QW5pbSA9IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5
ZnJhbWUsIGtleVBhdGgpOworICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbS5wdHIoKSwg
YW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBrZXlmcmFtZUFuaW07CiB9CiAKLVJlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNwcmluZ0FuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRp
dGl2ZSkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVNw
cmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCBhZGRpdGl2ZSkKIHsKICAgICBhdXRvIGJhc2ljQW5pbSA9IGNyZWF0ZVBsYXRmb3Jt
Q0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6U3ByaW5nLCBrZXlQYXRoKTsKLSAgICBz
ZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1cm4g
YmFzaWNBbmltOwogfQogCkBAIC0zNzQwLDcgKzM3NDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKICAg
ICBzZXRMYXllckRlYnVnQm9yZGVyKCpjb250ZW50c0xheWVyLCBjb250ZW50c0xheWVyRGVidWdC
b3JkZXJDb2xvcihpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKSwgY29udGVudHNMYXllckJvcmRlcldp
ZHRoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6
ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpzb3VyY2VM
YXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBj
bG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBD
bG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgaWYgKCFzb3VyY2VMYXllcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKFNjaGVkdWxlRmx1c2hPck5vdCBzY2hl
ZHVsZQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGlj
YVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xh
eWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwg
Y2xvbmVMZXZlbCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBwcmltYXJ5TGF5ZXI7
CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOwpAQCAtMzk2Nywx
NiArMzk2NywxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNsb25l
TGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorUmVm
PFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FM
YXllciAqbGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsKKyAgICBhdXRvIG5ld0xh
eWVyID0gbGF5ZXItPmNsb25lKHRoaXMpOwogCiAgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJt
ZWRpYXRlQ2xvbmVMZXZlbCkgewogICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+
b3BhY2l0eSgpKTsKLSAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLmdldCgp
KTsKKyAgICAgICAgY29weUFuaW1hdGlvbnMobGF5ZXIsIG5ld0xheWVyLnB0cigpKTsKICAgICB9
CiAKLSAgICBzZXRMYXllckRlYnVnQm9yZGVyKCpuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9y
ZGVyQ29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7
CisgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcihuZXdMYXllciwgY2xvbmVMYXllckRlYnVnQm9yZGVy
Q29sb3IoaXNTaG93aW5nRGVidWdCb3JkZXIoKSksIGNsb25lTGF5ZXJCb3JkZXJXaWR0aCk7CiAK
ICAgICByZXR1cm4gbmV3TGF5ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IGI5YjE4NDJmZmVmLi41MTM5
ZmFmODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTIxOSw5ICsyMTksOSBAQCBwcml2YXRlOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKik7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBs
YXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
cik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNy
ZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIpOworICAgIHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogcHJpbWFyeUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGhvc3RM
YXllckZvclN1YmxheWVycygpIGNvbnN0OwpAQCAtMjQwLDkgKzI0MCw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpOwogCiAgICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmlt
YXRpb24gKHVzZSBSZXRhaW5QdHI/KQotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgYWRkaXRpdmUpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVh
dGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBh
ZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2
ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkaXRpdmUpOworICAgIFJl
ZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CiAgICAgdm9pZCBzZXR1cEFuaW1h
dGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2
ZSk7CiAgICAgCiAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUmLCBjb25zdCBBbmltYXRpb24mKTsKQEAg
LTM2NiwxMyArMzY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNo
VHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7CiAgICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsK
ICAgICB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJik7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBsaWNhdGVk
TGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYpOwogCiAgICAgZW51bSBDbG9uZUxldmVsIHsgUm9vdENs
b25lTGV2ZWwsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwgfTsKLSAgICBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwg
UmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRl
JiwgQ2xvbmVMZXZlbCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNs
b25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICosIENsb25lTGV2ZWwpOwotICAgIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVy
ICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY2xv
bmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xvbmVMZXZlbCk7CisgICAgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gZmluZE9yTWFrZUNsb25lKENsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqLCBM
YXllck1hcCosIENsb25lTGV2ZWwpOwogCiAgICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9u
ZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc3RydWN0dXJhbExheWVyLAogICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgY29udGVudHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xp
cHBpbmdMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzU2hhcGVNYXNrTGF5
ZXIsCkBAIC01NjAsOCArNTYwLDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxl
IHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgogICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Ig
a2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNl
LgogICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKLSAgICAgICAgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotICAgICAgICAg
ICAgOiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKKyAgICAgICAgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbihSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4mJiBjYUFuaW1hdGlvbiwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCwg
aW50IHN1YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKKyAgICAgICAgICAgIDogbV9hbmltYXRp
b24oV1RGTW92ZShjYUFuaW1hdGlvbikpCiAgICAgICAgICAgICAsIG1fbmFtZShhbmltYXRpb25O
YW1lKQogICAgICAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQogICAgICAgICAgICAgLCBt
X2luZGV4KGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGNjOGQ4M2ZlMmYzLi5hMDJiMzE1
OGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBl
IGFuaW1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyBrZXlQYXRoKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EuaAppbmRleCBiZTQzYTk5NDZhNC4uNTFlYTgzM2MzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCkBAIC00OCwxNCArNDgsMTQgQEAgdm9pZCBzZXRIYXNF
eHBsaWNpdEJlZ2luVGltZShDQUFuaW1hdGlvbiAqLCBib29sKTsKIAogY2xhc3MgUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ0FBbmltYXRpb24gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShB
bmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFu
aW1hdGlvblJlZik7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUo
QW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlv
blJlZik7CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKTsKIAogICAg
IGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1BbmltYXRpb25SZWYgcGxhdGZvcm1BbmltYXRpb24o
KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpp
bmRleCAzNTI2ZDYzZmVlNi4uNjYxY2Q0MTI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0KQEAgLTE0OSwxNCArMTQ5LDE0IEBAIENBTWVkaWFUaW1pbmdGdW5j
dGlvbiogV2ViQ29yZTo6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpCiAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFt
ZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uTGluZWFyXTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25U
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYSh0eXBlLCBrZXlQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUsIGtleVBhdGgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0
ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYg
YW5pbWF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hKGFuaW1hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYShhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCkBAIC0xOTYsOSArMTk2LDkgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
Ojp+UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNvcHkoKSBjb25zdAorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlvbiA9IGNyZWF0
ZShhbmltYXRpb25UeXBlKCksIGtleVBhdGgoKSk7CisgICAgYXV0byBhbmltYXRpb24gPSBjcmVh
dGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOwogICAgIAogICAgIGFuaW1hdGlvbi0+c2V0
QmVnaW5UaW1lKGJlZ2luVGltZSgpKTsKICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0
aW9uKCkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKICAgICBhbmltYXRpb24t
PmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oKnRoaXMpOwogICAgIGFuaW1hdGlvbi0+c2V0VmFsdWVG
dW5jdGlvbih2YWx1ZUZ1bmN0aW9uKCkpOwogCi0gICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUo
ZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hPigqYW5pbWF0aW9uKS5wbGF0Zm9ybUFu
aW1hdGlvbigpLCBoYXNFeHBsaWNpdEJlZ2luVGltZShwbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cisg
ICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hPihhbmltYXRpb24uZ2V0KCkpLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0QmVn
aW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKICAgICAKICAgICAvLyBDb3B5IHRoZSBzcGVj
aWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMuCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9
PSBLZXlmcmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
MzlmYzhiMDk4NjYuLjBhYjU4ZTdlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRy
ZWVIb3N0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3Mg
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9y
bUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVu
ZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDRhZWIxNDBjNWNhLi40YThmNTk3MjdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9z
dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWlsYWJs
ZTsKIH0KIAotUGFzc1JlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gQ0FDRkxheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpCitSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0Ojpj
cmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCw5ICsyMDgsOSBAQCBQbGF0Zm9ybUNBTGF5
ZXIqIENBQ0ZMYXllclRyZWVIb3N0Ojpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3Jv
b3RMYXllci5nZXQoKTsKIH0KIAotdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0Fu
aW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQordm9pZCBDQUNG
TGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBs
YXllcikKIHsKLSAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5hZGQobGF5ZXIpOworICAgIG1f
cGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmFkZCgmbGF5ZXIpOwogfQogCiB2b2lkIENBQ0ZMYXllclRy
ZWVIb3N0OjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuaAppbmRleCA5ZTRlZDgyNWVlNS4uNTQyNGIwMDUwNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01Nyw3ICs1Niw3IEBAIGNsYXNzIFRpbGVkQmFja2luZzsK
IAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDQUNGTGF5ZXJU
cmVlSG9zdD4sIHByaXZhdGUgQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkNB
Q0ZMYXllclRyZWVIb3N0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKCk7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemUoKTsKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGxhdGZvcm1D
QUxheWVyJik7CiAgICAgdmlydHVhbCB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOwogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCAyN2RlMmI1ZDU3Ni4uOTBhODNm
MGE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCAr
MTQyLDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdG
dW5jdGlvbkdldEZ1bmN0aW9uV2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9
CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmlt
YXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkp
OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5p
bWF0aW9uUmVmIGFuaW1hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4oYW5pbWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1DQUFuaW1hdGlvbldpbihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6UGxhdGZvcm1DQUFuaW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCkKQEAgLTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2lu
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikK
ICAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1h
dGlvblR5cGUoKSwga2V5UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmlt
YXRpb25UeXBlKCksIGtleVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRp
bWUoYmVnaW5UaW1lKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNC4uMTYyZDYy
NmE2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaApAQCAtMzgsMTQgKzM4LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1DQUFuaW1hdGlvbldpbiBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRpYyBSZWY8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCk7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZv
cm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1DQUFuaW1hdGlvbldpbigp
OwogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25XaW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNv
cHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtQW5pbWF0aW9uUmVmIHBsYXRmb3Jt
QW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4
IGQzN2YyNDFhYThhLi41ZTE0OWZkNGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6YWRkQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aQogICAgIC8vIFRlbGwg
dGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVu
dAogICAgIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QqIGhvc3QgPSBsYXllclRyZWVIb3N0Rm9y
TGF5ZXIodGhpcyk7CiAgICAgaWYgKGhvc3QpCi0gICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmlt
YXRlZExheWVyKHRoaXMpOworICAgICAgICBob3N0LT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcigq
dGhpcyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpyZW1vdmVBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cAppbmRleCAyZjEzNGEwM2FlMi4uODI1YThkMDE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2Nk
ZWNsCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNG
Vmlld1NldFNob3VsZEludmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2
aWV3LCBib29sIHNob3VsZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERl
dmljZTkqLCBfY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FD
RlZpZXdMYXllclRyZWVIb3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1Jl
ZlB0cjxXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpCiB7CiAgICAgaWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZp
ZXdMYXllclRyZWVIb3N0LmgKaW5kZXggZTRkYjJjNDQ4MjkuLjM3Y2EwNzMzMWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0IDogcHVibGljIENBQ0ZM
YXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxXS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlUmVuZGVyZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BhdHRlcm5DYWlyby5jcHAKaW5kZXggODFiYzdjZTk2YmEuLjdlNWRmMDQ0YzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19w
YXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0
aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3Bh
dHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKaW5kZXggYTBlN2ZmODczYmMuLjg3NjM0ODAyNDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0Q2Fpcm86OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhCiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAm
eDIsICZ5Mik7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSk7CiAKLSAgICBJbWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJ
bWFnZSgpOwotICAgIEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFn
ZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNw
YWNlVHJhbnNmb3JtKCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5z
Zm9ybS5tYXBSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRl
cm5JbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJu
VHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBw
YXR0ZXJuSW1hZ2UuaGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQ
YXR0ZXJuLT5yZXBlYXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1My4uOTZlYjgzY2E1ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNz
IFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKKyAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERG
RG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
REZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQZGZJbWFn
ZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDcxODYwMDkyMGE5
Li45OGU2OWRlOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5S
ZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bWF0aW9uKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGVJbWFnZSgpLT5y
ZWN0KCk7CisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1h
dGlvbiAqIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CiAgICAgcGF0dGVyblRyYW5zZm9y
bS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYg
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNl
clNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMs
IHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0
b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYg
KG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAg
ICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGlu
Z0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVz
ZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlv
bnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVy
ZWQuCkBAIC04NSw3ICs4NSw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9h
dCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAg
ICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBk
b25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBw
bGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAg
IENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVh
a1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3Mg
PSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwogICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJV
RSwgJnBhdHRlcm5DYWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCAx
YjQzMDNjOTgxOC4uNmI5YWU5ZTU0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBA
IC0yNywxNyArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdo
dGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50
LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIs
IERpZmZ1c2VMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29u
c3RhbnQsIDAsIDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRT
b3VyY2UpCitGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0
aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUs
IGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5n
dGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5n
PiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0
aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxp
Z2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29u
c3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwg
UmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxl
LCBkaWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwg
bGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGlu
ZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBr
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2Up
KSk7CiB9CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5
LDE2ICsxMDYsMTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0
aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0
IExpZ2h0U291cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29u
c3QgTGlnaHRTb3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OnNldExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQoteyAgICAKLSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVE
aWZmdXNlTGlnaHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4
IDVmZTJiZTlmNGE1Li43MDM3YzMzMjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAt
MzAsOCArMzAsNyBAQCBjbGFzcyBMaWdodFNvdXJjZTsKIAogY2xhc3MgRkVEaWZmdXNlTGlnaHRp
bmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1
c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LAot
ICAgICAgICBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0
aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKICAgICB2aXJ0
dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdDsKQEAgLTQ5LDE1ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQga2VybmVs
VW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0
KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNvbnN0IExp
Z2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkgb3ZlcnJp
ZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVEaWZmdXNlTGlnaHRpbmcoRmls
dGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0
U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmlu
ZGV4IDI5MjViMGViNjUxLi5mYTBmMjhhZmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC0zMiwxMiAr
MzIsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0aW5nOjpGRUxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAotICAgIGZsb2F0IGRpZmZ1c2VDb25z
dGFudCwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAg
ICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorRkVMaWdodGluZzo6RkVMaWdodGluZyhG
aWx0ZXImIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgLCBtX2xpZ2h0
aW5nVHlwZShsaWdodGluZ1R5cGUpCi0gICAgLCBtX2xpZ2h0U291cmNlKGxpZ2h0U291cmNlKQor
ICAgICwgbV9saWdodFNvdXJjZShXVEZNb3ZlKGxpZ2h0U291cmNlKSkKICAgICAsIG1fbGlnaHRp
bmdDb2xvcihsaWdodGluZ0NvbG9yKQogICAgICwgbV9zdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxl
KQogICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KQpAQCAtMjk0LDkgKzI5
Miw2IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiBw
aXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBMaWdodFNvdXJjZTo6UGFpbnRpbmdE
YXRhIHBhaW50aW5nRGF0YTsKICAgICBMaWdodGluZ0RhdGEgZGF0YTsKIAotICAgIGlmICghbV9s
aWdodFNvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gRklYTUU6IGRvIHNv
bWV0aGluZyBpZiB3aWR0aCBvciBoZWlnaHQgKG9yIGJvdGgpIGlzIDEgcGl4ZWwuCiAgICAgLy8g
VGhlIFczIHNwZWMgZG9lcyBub3QgZGVmaW5lIHRoaXMgY2FzZS4gTm93IHRoZSBmaWx0ZXIganVz
dCByZXR1cm5zLgogICAgIGlmICh3aWR0aCA8PSAyIHx8IGhlaWdodCA8PSAyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApp
bmRleCBiYWZiZjQ3YzQ1ZS4uMzkyMDI5ODE3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtl
cihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0
Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0g
ICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJj
ZT4pOworICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwg
aW50KTsKICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGlu
Z0RhdGEmLCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRh
JiwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGln
aHRpbmdUeXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBS
ZWY8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29s
b3I7CiAgICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5j
cHAKaW5kZXggZTJlODM0ZjIxYmUuLjhjMTQwODM1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwCkBAIC0yNywxOSArMjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1G
RVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKLSAgICBmbG9hdCBz
cGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4gbGlnaHRTb3VyY2UpCi0gICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgU3BlY3VsYXJMaWdo
dGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxhckNvbnN0YW50LCBz
cGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIGxp
Z2h0U291cmNlKQorRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
IGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNl
PiYmIGxpZ2h0U291cmNlKQorICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRp
bmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVj
dWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLAotICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwg
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwKLSAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNl
KQorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2Nh
bGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291
cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFU3BlY3Vs
YXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgc3BlY3VsYXJD
b25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwKLSAgICAgICAga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBsaWdodFNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFU3BlY3VsYXJMaWdodGluZyhmaWx0ZXIsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwg
c3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSkpOwogfQogCiBGRVNwZWN1bGFy
TGlnaHRpbmc6On5GRVNwZWN1bGFyTGlnaHRpbmcoKQpAQCAtMTI0LDE2ICsxMTksMTEgQEAgYm9v
bCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBMaWdodFNvdXJjZSogRkVT
cGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0Citjb25zdCBMaWdodFNvdXJjZSYg
RkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
bGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKLXsKLSAgICBtX2xp
Z2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpk
dW1wKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCmluZGV4IGUwNGY0NDM2YWE2Li45
ZjkyN2YyNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCkBAIC0yOCw4ICsyOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGlj
IEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5n
PiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsCi0gICAgICAgIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBzdGF0aWMg
UmVmPEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogICAg
IHZpcnR1YWwgfkZFU3BlY3VsYXJMaWdodGluZygpOwogCiAgICAgY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IoKSBjb25zdDsKQEAgLTUwLDE1ICs0OSwxNCBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKICAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZ
KGZsb2F0KTsKIAotICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIGNv
bnN0IExpZ2h0U291cmNlJiBsaWdodFNvdXJjZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkdW1wKCkg
b3ZlcnJpZGU7CiAKICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBG
RVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBGRVNwZWN1
bGFyTGlnaHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAKaW5kZXggYTBlMmUxYmY2YWMuLjc4OTIwZWM1MDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlm
ICghdGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAg
IGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25O
dWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zv
cm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54
KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4
RWZmZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZC4u
OThiODZkMDE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTIzMiwyNCArMjMyLDI0IEBAIElt
YWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkK
K1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2Fs
ZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
ICAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBjb3B5VW5tdWx0
aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1cm4gV1RGTW92ZShp
bWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50
UmVjdCYgcmVjdCkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1By
ZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2Nh
bGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAg
ICAgY29weVByZW11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJl
dHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogaW5s
aW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAppbmRleCBlYTRlYzc3NmY1MC4uNmQzMTdjYWIzMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclJlc3VsdHNS
ZWN1cnNpdmUoKTsKIAogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7Ci0gICAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNV
bm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBj
b3B5VW5tdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bi5jcHAKaW5kZXggMDM1ZTQ1YmIwN2EuLmQ3OWI4YjJhZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYS4uZWM3M2U1OGVmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNjgsMjEgKzY4LDIx
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZpbHRlck9wZXJhdGlvbigpIHsgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0g
MDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUg
Lypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91
Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFibGVuZGluZ05lZWRzUmVuZGVy
ZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3Qg
TGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQorICAgIHZp
cnR1YWwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wg
LypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJs
ZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KQEAgLTExOSwxNCArMTE5LDE0IEBAIHByb3RlY3RlZDoKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgRGVmYXVsdEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZmF1bHRGaWx0ZXJP
cGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJlc2VudGVkVHlwZSkKKyAgICBzdGF0
aWMgUmVmPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShPcGVyYXRpb25UeXBlIHJlcHJl
c2VudGVkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZp
bHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNl
bnRlZFR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uKHJlcHJlc2VudGVkVHlwZSgpKSk7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlw
ZSByZXByZXNlbnRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlcHJlc2VudGVkVHlwZTsgfQpA
QCAtMTQ1LDE0ICsxNDUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgUGFzc3Rocm91Z2hGaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbigpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNjksMTcgKzE2OSwxNyBAQCBw
cml2YXRlOgogCiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCkKKyAgICBzdGF0aWMgUmVmPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBmcmFnbWVu
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24odXJsLCBmcmFnbWVudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5SZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24oKTsKIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIGZpbHRlcnMgY2Fubm90IGJlIGNsb25l
ZC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEZpbHRlck9wZXJhdGlvbio+KG51bGxwdHIp
OwogICAgIH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KIAogICAgIEZpbHRlckVm
ZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7
IH0KLSAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwor
ICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYpOwogCiBwcml2
YXRlOgogICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudCk7CkBAIC0yMTMsMTkgKzIxMywxOSBAQCBwcml2YXRlOgogLy8g
Rm9yIEhVRV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQgaW4gbV9hbW91
bnQuCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
IDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQs
IE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CiAgICAgfQogCi0g
ICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24o
YW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAg
ICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFs
c2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKQEAgLTI0NCwyMSArMjQ0LDIxIEBAIHByaXZh
dGU6CiAvLyBJTlZFUlQsIEJSSUdIVE5FU1MsIENPTlRSQVNUIGFuZCBPUEFDSVRZIGFyZSB2YXJp
YXRpb25zIG9uIGEgYmFzaWMgY29tcG9uZW50IHRyYW5zZmVyIGVmZmVjdC4KIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMg
RmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWY8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUp
KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50
KCksIHR5cGUoKSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVy
biBtX2Ftb3VudDsgfQogCiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC0yNzYsMTQgKzI3NiwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBCbHVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qmx1ckZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCisgICAgc3RhdGljIFJlZjxCbHVyRmlsdGVyT3Bl
cmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZNb3ZlKHN0ZERldmlhdGlvbikp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZN
b3ZlKHN0ZERldmlhdGlvbikpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Qmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZERldmlhdGlvbigpKSk7CiAgICAgfQog
CiAgICAgY29uc3QgTGVuZ3RoJiBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERl
dmlhdGlvbjsgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92ZXNQ
aXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDcsMTQgKzMwNywxNCBAQCBwcml2YXRlOgog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyBSZWY8RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHN0ZERldmlhdGlvbiwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZp
YXRpb24sIGNvbG9yKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQor
ICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2Nh
dGlvbigpLCBzdGREZXZpYXRpb24oKSwgY29sb3IoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uKCksIHN0ZERldmlhdGlv
bigpLCBjb2xvcigpKSk7CiAgICAgfQogCiAgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX2xv
Y2F0aW9uLngoKTsgfQpAQCAtMzI2LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVj
dHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgbW92
ZXNQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWFkMTNmMzRkNjkuLmFkMjJiNDdiMWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorUmVmUHRyPFRl
eHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0
IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGludCBtYXhUZXh0dXJlU2l6
ZSA9IDA7CiAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX1NJWkUsICZtYXhUZXh0dXJlU2l6ZSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgUGFzc1Jl
ZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IEZvcm1hdCBmb3JtYXQsIGkKICAgICAgICAgaWYgKCF0ZXh0dXJlSWQpIHsKICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZHMtPmF0KGkpKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgdGV4
dHVyZUlkcy0+YXQoaSkgPSB0ZXh0dXJlSWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCmluZGV4IDNhYTU1ZjgyMTcxLi41N2E2ODMyN2JkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJl
PiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4LCBC
R1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVm
UHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lkIGxv
YWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBj
b25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGJkMThlNWM1OGM1Li40NzJhYTdkZGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1Ymxp
YyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
PiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRy
PEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiBwYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5k
ZXgsIHBhZCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXIuaAppbmRleCAxZWNkMzM0YmEwZi4uZDNlMDRmNmI3MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1mcmFtZS5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBJ
bnRTaXplOwogCiBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdl
R1N0cmVhbWVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCisgICAgICAgIHN0YXRp
YyBSZWY8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdlKEdzdFNhbXBsZSogc2FtcGxlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNh
bXBsZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VHU3RyZWFtZXIo
c2FtcGxlKSk7CiAgICAgICAgIH0KICAgICAgICAgfkltYWdlR1N0cmVhbWVyKCk7CiAKLSAgICAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gaW1hZ2UoKQorICAgICAgICBCaXRtYXBJbWFnZSog
aW1hZ2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbWFnZSk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBlOTQyYTJjNWZj
MC4uNGQ0ZGI0ZWRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBj
cmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2lu
ZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOwog
ICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoKSB7
IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5hZGREYXRh
Q3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRHZW5l
cmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBhZGRHZW5l
cmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKGN1ZUZv
cm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSgqZGF0
YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGNjM2E2ZjBlOWZjLi42YTkwNzQ0ZTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MCw5ICs0MCw5IEBAIHR5
cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogCiBjbGFzcyBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUsIHB1Ymxp
YyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IGNyZWF0ZShnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyKGluZGV4LCBwYWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGIzNTYwMzhjZGI3Li43OWMxNTFiYTZiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNzcs
NyArMTE3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFi
bGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiB7CiAgICAgQVNTRVJUKGVudHJ5
KTsKIAotICAgIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNy
ZWF0ZSgpOworICAgIGF1dG8gY3VlID0gR2VuZXJpY0N1ZURhdGE6OmNyZWF0ZSgpOwogCiAgICAg
Z2ludDY0IHN0YXJ0ID0gLTEsIHN0b3AgPSAtMTsKICAgICBnc3RfdG9jX2VudHJ5X2dldF9zdGFy
dF9zdG9wX3RpbWVzKGVudHJ5LCAmc3RhcnQsICZzdG9wKTsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NoYXB0
ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlLnJlbGVhc2UoKSk7CisgICAgbV9jaGFwdGVyc1Ry
YWNrLT5hZGRHZW5lcmljQ3VlKGN1ZSk7CiAKICAgICBmb3IgKEdMaXN0KiBpID0gZ3N0X3RvY19l
bnRyeV9nZXRfc3ViX2VudHJpZXMoZW50cnkpOyBpOyBpID0gaS0+bmV4dCkKICAgICAgICAgcHJv
Y2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KHN0YXRpY19jYXN0PEdzdFRvY0VudHJ5Kj4oaS0+ZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBi
YTQ2YTY5YjIxMi4uNWVhNzZlM2ZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdS
ZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoR1Jl
ZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGll
bnRHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAKaW5kZXggNjYzYzgy
NWU1ZGUuLmViYjUwMmYyOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTgzLDEyICsxODMsMTIgQEAgdm9pZCBN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSWQp
CiAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bV9wbGF5YmFja1BpcGVsaW5lLT5mbHVzaCh0cmFj
a0lkKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6ZW5xdWV1ZVNh
bXBsZShQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPiBwcnBTYW1wbGUpCit2b2lkIE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1w
bGUpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fcGxh
eWVyUHJpdmF0ZSkKLSAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlwZWxpbmUt
PmVucXVldWVTYW1wbGUocHJwU2FtcGxlKTsKKyAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3Bs
YXliYWNrUGlwZWxpbmUtPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKIH0KIAogR1JlZlB0cjxXZWJL
aXRNZWRpYVNyYz4gTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OndlYktpdE1lZGlhU3Jj
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJN
U0UuaAppbmRleCBjM2Q0YWM3YmMyMS4uZGE3OThjZmI3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsK
ICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBh
c3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTIwOTViNjEwNjcuLmU2
MmNkNTZhODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlR1N0cmVhbWVyLmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCmluZGV4IGI5MTll
NTUzMDUyLi44YTJmZjQzYWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICBHU1RfREVCVUcoInRyYWNrSWQ9JXMgZmx1c2hlZCIsIHRy
YWNrSWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQordm9pZCBQ
bGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNh
bXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKQEAgLTUwMyw3ICs1
MDMsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmUHRyPE1lZGlh
U2FtcGxlPiBtZWRpYVNhbXBsZSkKICAgICBHc3RFbGVtZW50KiBhcHBzcmMgPSBzdHJlYW0tPmFw
cHNyYzsKICAgICBNZWRpYVRpbWUgbGFzdEVucXVldWVkVGltZSA9IHN0cmVhbS0+bGFzdEVucXVl
dWVkVGltZTsKIAotICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2Fz
dDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLmdldCgpKTsKKyAgICBHU3RyZWFt
ZXJNZWRpYVNhbXBsZSogc2FtcGxlID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyTWVkaWFTYW1wbGUq
PihtZWRpYVNhbXBsZS5wdHIoKSk7CiAgICAgaWYgKHNhbXBsZS0+c2FtcGxlKCkgJiYgZ3N0X3Nh
bXBsZV9nZXRfYnVmZmVyKHNhbXBsZS0+c2FtcGxlKCkpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0
U2FtcGxlPiBnc3RTYW1wbGUgPSBzYW1wbGUtPnNhbXBsZSgpOwogICAgICAgICBHc3RCdWZmZXIq
IGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihnc3RTYW1wbGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaAppbmRleCAwOGYwZTYwZDMzMy4uZGE0OThkOWZiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2
b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxN
ZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYp
OwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkx
MThmNC4uNTc1YjNhNWVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMzYsMTcgKzM2LDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UoY29uc3QgY2hhciogaWNvbk5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkSW1hZ2VGcm9t
R1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQogewotICAgIFJlZlB0cjxCaXRtYXBJbWFn
ZT4gaWNvbiA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfc3RyZHVwX3ByaW50
ZigiL29yZy93ZWJraXRndGsvcmVzb3VyY2VzL2ltYWdlcy8lcyIsIGljb25OYW1lKSk7CiAgICAg
R1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBhZG9wdEdSZWYoZ19yZXNvdXJjZXNfbG9va3VwX2RhdGEo
cGF0aC5nZXQoKSwgR19SRVNPVVJDRV9MT09LVVBfRkxBR1NfTk9ORSwgbnVsbHB0cikpOwogICAg
IEFTU0VSVChkYXRhKTsKICAgICBpY29uLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKSwgZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSksIHRydWUpOwotICAg
IHJldHVybiBpY29uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaWNvbjsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciogZmlsZW5hbWUpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+
IGNvbnRlbnQ7CiAgICAgZ3NpemUgbGVuZ3RoOwpAQCAtNjAsMjEgKzYwLDIxIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxJbWFnZT4gbG9hZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUoY29uc3QgY2hhciogbmFt
ZSkKK3N0YXRpYyBSZWY8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJvbVRoZW1lKGNvbnN0
IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGljb25TaXplID0gZ19zdHJfaGFzX3N1ZmZpeChuYW1l
LCAiQDJ4IikgPyAzMiA6IDE2OwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaWNvbiA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CiAgICAgR1VuaXF1ZVB0cjxHdGtJY29uSW5mbz4gaWNvbkluZm8oZ3RrX2ljb25fdGhlbWVfbG9v
a3VwX2ljb24oZ3RrX2ljb25fdGhlbWVfZ2V0X2RlZmF1bHQoKSwgR1RLX1NUT0NLX01JU1NJTkdf
SU1BR0UsIGljb25TaXplLCBHVEtfSUNPTl9MT09LVVBfTk9fU1ZHKSk7CiAgICAgaWYgKGljb25J
bmZvKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkp
OwotICAgICAgICBpY29uLT5zZXREYXRhKGJ1ZmZlci5yZWxlYXNlKCksIHRydWUpOwotICAgICAg
ICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbG9hZFJlc291
cmNlU2hhcmVkQnVmZmVyKGd0a19pY29uX2luZm9fZ2V0X2ZpbGVuYW1lKGljb25JbmZvLmdldCgp
KSk7CisgICAgICAgIGljb24tPnNldERhdGEoV1RGTW92ZShidWZmZXIpLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIGljb247CiAgICAgfQogCiAgICAgcmV0dXJuIGxvYWRJbWFnZUZyb21HUmVzb3Vy
Y2UobmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChu
YW1lLCAibWlzc2luZ0ltYWdlIikgPyBsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShuYW1l
KSA6IGxvYWRJbWFnZUZyb21HUmVzb3VyY2UobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApp
bmRleCBmMDNjYWNlOGVkOS4uODNmZjI3ZWE1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApAQCAt
NDgsMTAgKzQ4LDEwIEBAIGNvbnN0IGhiX3RhZ190IEhhcmZCdXp6RmFjZTo6a2VyblRhZyA9IEhC
X1RBRygnaycsICdlJywgJ3InLCAnbicpOwogCiBjbGFzcyBGYWNlQ2FjaGVFbnRyeSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZhY2VDYWNoZUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmFjZUNhY2hlRW50cnk+IGNyZWF0ZShoYl9mYWNlX3QqIGZhY2UpCisgICAgc3RhdGlj
IFJlZjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2ZhY2VfdCogZmFjZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChmYWNlKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWNlQ2FjaGVF
bnRyeShmYWNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZhY2VDYWNoZUVudHJ5
KGZhY2UpKTsKICAgICB9CiAgICAgfkZhY2VDYWNoZUVudHJ5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZS5oCmluZGV4IDYzMTc5ZmU4MTVlLi41OWNlZTljM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5
ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAg
ICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWlu
dDY0X3QgdW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250
UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlx
dWVJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZv
cm1EYXRhLCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBm
NWZhNjk3Yzk2OC4uZTFjZmUzZmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiAgICAgbV90aWZmUmVwID0gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCitSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25z
dCBjaGFyICpuYW1lKQogewogICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYkNvcmVCdW5kbGVGaW5kZXIgY2xhc3NdXTsKICAgICBOU1N0cmluZyAqaW1h
Z2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4
IDk3ZDc1NGQwMmE0Li5kYzM0YmJiMzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAt
MjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHbHlwaC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Myw5ICs0Myw5
IEBAIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
T3BlblR5cGVNYXRoRGF0YT4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnQpCisg
ICAgc3RhdGljIFJlZjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgZm9udCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlblR5cGVN
YXRoRGF0YShmb250KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wZW5UeXBlTWF0
aERhdGEoZm9udCkpOwogICAgIH0KICAgICB+T3BlblR5cGVNYXRoRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuaAppbmRleCAzMjQ1NjM4YThlZi4uZGM1OTMxZWRmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAt
MzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBp
bnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgp
LmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6
ZSBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZi4u
OGU5ZjU1MzA1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmIFVTRShDQUlSTykKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgpAQCAtMjE0LDcgKzIx
NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRQYXNzZXNSZXF1aXJlZEZvckZpbHRlcihGaWx0ZXJP
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewogICAg
IGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0yNDEsNyAr
MjQxLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5
RmlsdGVycyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWEKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGxhc3QpIHsKLSAgICAgICAgICAgICAgICB0b0JpdG1hcFRleHR1cmVHTChyZXN1
bHRTdXJmYWNlLmdldCgpKS0+bV9maWx0ZXJJbmZvID0gQml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJ
bmZvKGZpbHRlciwgaiwgc3BhcmVTdXJmYWNlKTsKKyAgICAgICAgICAgICAgICB0b0JpdG1hcFRl
eHR1cmVHTChyZXN1bHRTdXJmYWNlLmdldCgpKS0+bV9maWx0ZXJJbmZvID0gQml0bWFwVGV4dHVy
ZUdMOjpGaWx0ZXJJbmZvKGZpbHRlciwgaiwgc3BhcmVTdXJmYWNlLmNvcHlSZWYoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRl
eCBjNGE4MDIyNGE4Ny4uM2E0ZDgwNDczNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTU5LDE2
ICs1OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25z
dCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zm
c2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZv
cm0zRE9iamVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBib29s
IGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KSBvdmVycmlkZTsKICAgICBzdHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGZpbHRlcjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAgICAgICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZpbHRlckluZm8o
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0gMCwgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVyKGYpCisgICAg
ICAgIEZpbHRlckluZm8oUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVsbHB0ciwgdW5z
aWduZWQgcCA9IDAsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRyKQorICAgICAg
ICAgICAgOiBmaWx0ZXIoV1RGTW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhwKQotICAgICAg
ICAgICAgLCBjb250ZW50VGV4dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZShX
VEZNb3ZlKHQpKQogICAgICAgICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBGaWx0ZXJJbmZv
KiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3ZjUuLmEwMjZm
NGM1MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAg
LTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRM
YXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEZpbHRlcnMoZmlsdGVycygpKTsKIAog
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpCi0gICAgICAgIG1fbGF5
ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKKyAgICAgICAgbV9sYXllci5zZXRC
YWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUuY29weVJlZigpKTsKIAogICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBEZWJ1Z1Zpc3VhbHNDaGFuZ2UpCiAgICAgICAgIG1fbGF5ZXIuc2V0RGVidWdWaXN1
YWxzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCksIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3Jk
ZXJXaWR0aCgpLCBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcApp
bmRleCA5NzMwNDdmNDkwNS4uMWY5ZTY4MjdkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMy
LDExICszMiwxMSBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0Owog
CiBUZXh0dXJlTWFwcGVyOjp+VGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKIAotUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzIGZsYWdzKQorUmVm
UHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCiB7
CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHNlbGVjdGVkVGV4dHVyZSA9IG1fdGV4dHVyZVBv
b2wtPmFjcXVpcmVUZXh0dXJlKHNpemUsIGZsYWdzKTsKICAgICBzZWxlY3RlZFRleHR1cmUtPnJl
c2V0KHNpemUsIGZsYWdzKTsKLSAgICByZXR1cm4gc2VsZWN0ZWRUZXh0dXJlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc2VsZWN0ZWRUZXh0dXJlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDcyMzNk
MGRjY2Q1Li42NzMwZDhlN2JkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkg
PSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGVuZFBhaW50aW5nKCkgeyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNp
emUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEpOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJl
RnJvbVBvb2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzID0gQml0
bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0g
cDsgfQogICAgIHZvaWQgc2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dyYXBNb2RlID0gbTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNS4uOThkYzg0NWYwMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBJbnRSZWN0IFRleHR1cmVNYXBwZXJHTDo6Y2xpcEJvdW5k
cygpCiAgICAgcmV0dXJuIGNsaXBTdGFjaygpLmN1cnJlbnQoKS5zY2lzc29yQm94OwogfQogCi1Q
YXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgp
CitSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkKIHsK
ICAgICByZXR1cm4gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoKm1fY29udGV4dDNEKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuaAppbmRleCBhY2M3OGU4Yzg1MS4uZTdjODBlOTI2OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kQ2xpcCgpIG92
ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIEludFNpemUg
bWF4VGV4dHVyZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKDIwMDAsIDIw
MDApOyB9Ci0gICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgb3Zl
cnJpZGU7CisgICAgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsK
ICAgICBpbmxpbmUgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0M0QuZ2V0KCk7IH0KIAogICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNv
bnN0IEJpdG1hcFRleHR1cmUmIHNvdXJjZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUqIGNv
bnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24mLCBpbnQgcGFzcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGQzOWNmZmNiYjc4Li43OWI4OTU0NjcxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9w
dGlvbnMpCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0K
IAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50
b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3Vy
ZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUs
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2ht
ZW50KTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25z
KTsKQEAgLTM3NiwxNiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwCiAgICAgICAg
IG1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAgICAgc3VyZmFjZSA9IHN1
cmZhY2UtPmFwcGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRl
cnMpOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9
CiAKLXN0YXRpYyB2b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBz
dXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRUcmFuc2Zv
cm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdo
dCgpKTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwot
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVj
dCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIu
ZHJhd1RleHR1cmUoc3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0K
IAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYg
cmVjdCkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRX
aXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcAogICAgIH0K
IAogICAgIGlmIChyZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAg
ICAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNlLCByZWN0LCAxKTsKKyAg
ICAgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwog
ICAgICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC02MzcsOSArNjM3
LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZp
eGVkVG9WaWV3cG9ydCkKICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsK
IH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRy
PFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+JiYgYmFja2luZ1N0b3JlKQogewotICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3Jl
OworICAgIG1fYmFja2luZ1N0b3JlID0gV1RGTW92ZShiYWNraW5nU3RvcmUpOwogfQogCiBib29s
IFRleHR1cmVNYXBwZXJMYXllcjo6ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlv
bnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDNiMWMxNmIwYjEzLi5iZWQx
ZjZjZDY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bnMmKTsKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVk
VG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7
CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+JiYpOwogCiAgICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gcGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29u
c3QgSW50U2l6ZSYpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNl
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CiAgICAg
dm9pZCBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4o
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDg1MTRhNGY3MzZhLi40MjM4YzVkOGU0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzIs
NyArMzIsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKTsgfQorICAgIHN0YXRpYyBSZWY8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSk7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUo
KSB7IH0KIAogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCmluZGV4IGY4OTcxNDg5YWZkLi5hMjY2MmVmMGI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTYy
Myw3ICs2MjMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFj
a2luZygpCiAgICAgICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIAogICAg
ICAgICBpZiAoIW1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcpIHsKLSAgICAgICAgICAgIG1fY29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcgPSBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJ
Zk5lZWRlZChtX2NvbXBvc2l0ZWRJbWFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX2Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nID0gbV9jb29yZGluYXRvci0+Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoKm1fY29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmctPmFkZEhvc3QodGhpcyk7CiAgICAgICAgICAgICBtX2xheWVyU3RhdGUuaW1hZ2VJRCA9
IG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmctPmlkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjI1
MTExZGJlNS4uYjc3NGUwMDVmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNG
bHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNr
aW5nSWZOZWVkZWQoSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1
cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90
JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
LmNwcAppbmRleCBmNTI5NDc1NWEyMy4uNTYwYzJlMTY3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZElt
YWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtNTcsMTQgKzU3
LDE0IEBAIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4oaW1hZ2UpOwogfQogCi1QYXNzUmVmUHRyPENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y3JlYXRlKENs
aWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKK1JlZjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQmIGNsaWVu
dCwgUmVmPEltYWdlPiYmIGltYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcoY2xpZW50LCBpbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgV1RGTW92ZShpbWFnZSkpKTsKIH0K
IAotQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKLSAgICA6IG1fY2xpZW50KGNsaWVu
dCkKLSAgICAsIG1faW1hZ2UoaW1hZ2UpCitDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKKyAg
ICA6IG1fY2xpZW50KCZjbGllbnQpCisgICAgLCBtX2ltYWdlKFdURk1vdmUoaW1hZ2UpKQogICAg
ICwgbV9pZChnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKG1faW1hZ2UuZ2V0KCkpKQogICAg
ICwgbV9jbGVhckNvbnRlbnRzVGltZXIoKnRoaXMsICZDb29yZGluYXRlZEltYWdlQmFja2luZzo6
Y2xlYXJDb250ZW50c1RpbWVyRmlyZWQpCiAgICAgLCBtX2lzRGlydHkoZmFsc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCmluZGV4IGI4
NjAzYzY4ZTYzLi40YzY5ZTU4MjY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VCYWNraW5nVmlzaWJsZSgpID0gMDsKICAgICB9OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGll
bnQqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEltYWdl
QmFja2luZz4gY3JlYXRlKENsaWVudCYsIFJlZjxJbWFnZT4mJik7CiAgICAgdmlydHVhbCB+Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcoKTsKIAogICAgIHN0YXRpYyBDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoSW1hZ2UqKTsKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCYsIFJlZjxJbWFnZT4mJik7CiAKICAgICB2b2lkIHJl
bGVhc2VTdXJmYWNlSWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlJZk5lZWRl
ZChib29sJiBjaGFuZ2VkVG9WaXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4IDFlNThiZWUwYWYwLi4wZDg4MjBlOWYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8v
IFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7
CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1l
KQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFt
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKG5hbWUpOwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZSgpOwotICAgIGltZy0+c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAg
ICByZXR1cm4gaW1nLnJlbGVhc2UoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIobmFtZSk7CisgICAgYXV0byBpbWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Cisg
ICAgaW1nLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsK
IH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJk
ZjNmMi4uMTZiNmI1ZGZmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5jcHAKQEAgLTkzLDIwICs5MywxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OmNyZWF0ZVdpbmRvdyhIV05EIHBhcmVudEh3bmQpCiB9CiAK
ICNpZiBVU0UoQ0EpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNl
dFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByb290Q2hpbGQpCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVy
KFJlZjxQbGF0Zm9ybUNBTGF5ZXI+JiYgcm9vdENoaWxkKQogewotICAgIGlmIChtX3Jvb3RDaGls
ZCA9PSByb290Q2hpbGQpCisgICAgaWYgKG1fcm9vdENoaWxkID09IHJvb3RDaGlsZC5wdHIoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcm9vdENoaWxkKQogICAgICAgICBtX3Jvb3RD
aGlsZC0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKIAotICAgIG1fcm9vdENoaWxkID0gcm9vdENo
aWxkOwotCi0gICAgaWYgKCFtX3Jvb3RDaGlsZCkgewotICAgICAgICBtX2xheWVyVHJlZUhvc3Qg
PSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fcm9vdENoaWxkID0gV1RG
TW92ZShyb290Q2hpbGQpOwogCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKaW5kZXggY2RkMGNhMzA0MTAu
LjRhMjBkOWUwYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKENBKQogICAgIFBs
YXRmb3JtQ0FMYXllciogcm9vdENoaWxkTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDaGls
ZC5nZXQoKTsgfQotICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+KTsKKyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFJlZjxQbGF0Zm9ybUNBTGF5
ZXI+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCmluZGV4IDFiOTIyOWU4
NjY1Li45ZGZiNWFlZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQy
RDFCaXRtYXBCcnVzaCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQp
OwogCiAgICAgSUQyRDFCaXRtYXBCcnVzaCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBI
UkVTVUxUIGhyID0gcGxhdGZvcm1Db250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1h
Z2UtPm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywg
JmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRm
b3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZj
b250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywg
JnBhdHRlcm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBw
YXR0ZXJuQnJ1c2g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmgKaW5kZXggODllNDIxOTNkZWYuLjRjZTM2N2I2ZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVk
R0RJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1No
YXJlZEdESU9iamVjdC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFNoYXJlZEdESU9iamVj
dF9oCiAjZGVmaW5lIFNoYXJlZEdESU9iamVjdF9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2hhcmVkR0RJT2Jq
ZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkR0RJT2JqZWN0PFQ+PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkR0RJT2JqZWN0PiBjcmVhdGUoR0RJT2JqZWN0PFQ+
IG9iamVjdCkKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVj
dDxUPiBvYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEdE
SU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkR0RJT2JqZWN0PFQ+KFdURk1vdmUob2JqZWN0KSkpOwogICAgIH0KIAogICAgIFQg
Z2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCmluZGV4IDQyNTRlZjkwOTdiLi5lNWJmMDRkYjIzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0xNDIs
NyArMTQyLDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMKICAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlJFRkVSRU5DRTogewogICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlT3BlcmF0
aW9uID0gZG93bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24p
OwogICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VGaWx0ZXIocmVuZGVyZXIsICpw
cmV2aW91c0VmZmVjdCwgcmVmZXJlbmNlT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJlZmVyZW5j
ZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0KTsKKyAgICAgICAgICAgIHJlZmVyZW5j
ZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0LmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAKaW5kZXggYmQxZTU1ZTQwNzUuLjFhOTRhNTYzMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1h
Z2U+IFJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewot
ICAgIHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihtX3JlbmRlcmVyKSA6IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJ
bWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1h
Z2U6Om51bGxJbWFnZSgpOwogfQogCiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2Nj
dXJyZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggMDIzODI1MjkyZTMuLjI4ZjAxZmJkYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTM3MTQsMTIgKzM3MTQsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6
ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5b3UKICAgICBSZWZQdHI8SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6
ZSBjb3JuZXJSZXNpemVyU2l6ZTsKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkgPj0gMikgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1h
Z2UqPiByZXNpemVDb3JuZXJJbWFnZUhpUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
dGV4dEFyZWFSZXNpemVDb3JuZXJAMngiKS5sZWFrUmVmKCkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUhpUmVzKCZJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKICAg
ICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUhpUmVzOwogICAgICAg
ICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgICAg
IGNvcm5lclJlc2l6ZXJTaXplLnNjYWxlKDAuNWYpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlTG9SZXMoSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpLmxlYWtSZWYoKSk7
CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdl
TG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIi
KS5sZWFrUmVmKCkpOwogICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lcklt
YWdlTG9SZXM7CiAgICAgICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2Ut
PnNpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggZWE5MzZhNGRjODIuLjBmYjgy
ODBlMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGF0dGVybkRh
dGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCB1bnMKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCiAgICAgYXV0byBwYXR0ZXJu
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7Ci0gICAgcGF0dGVybkRhdGEt
PnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UsIHRydWUsIHRydWUpOworICAg
IHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVh
c2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNl
IHRyYW5zZm9ybWF0aW9uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDc1ZjI0YzRlMjY3Li5jYTBmNjhmYTlhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKQEAgLTExNSwzMSArMTE1LDMwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQogICAgICAgICByZXR1
cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkp
OwogCi0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJj
ZSo+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3Vy
Y2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oZGlmZnVzZUxpZ2h0aW5nLT5saWdodFNvdXJj
ZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVM
aWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291
cmNlKTsKICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6YXppbXV0aEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXpp
bXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+
c2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2Uuc2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS0+c2V0WChsaWdodEVsZW1lbnQtPngoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS5zZXRYKGxpZ2h0RWxlbWVudC0+eCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLT5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLnNldFoobGlnaHRFbGVtZW50LT56KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2lu
dHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2UtPnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgp
KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAg
IHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRa
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVu
dC0+cG9pbnRzQXRaKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBv
bmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBv
bmVudCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xl
QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShs
aWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmds
ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4OCw4ICsxODcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgY29uc3QgQ29s
b3ImIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6
Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3Zl
KGxpZ2h0U291cmNlKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZm
dXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVz
ZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxp
Z2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA1NTY1Yjkx
ZDEyYi4uMTcwNDM3ZjMyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEyNiwzMSArMTI2LDMwIEBAIGJvb2wgU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCogZWZmZWN0CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4
cG9uZW50QXR0cikKICAgICAgICAgcmV0dXJuIHNwZWN1bGFyTGlnaHRpbmctPnNldFNwZWN1bGFy
RXhwb25lbnQoc3BlY3VsYXJFeHBvbmVudCgpKTsKIAotICAgIExpZ2h0U291cmNlKiBsaWdodFNv
dXJjZSA9IGNvbnN0X2Nhc3Q8TGlnaHRTb3VyY2UqPihzcGVjdWxhckxpZ2h0aW5nLT5saWdodFNv
dXJjZSgpKTsKKyAgICBhdXRvJiBsaWdodFNvdXJjZSA9IGNvbnN0X2Nhc3Q8TGlnaHRTb3VyY2Um
PihzcGVjdWxhckxpZ2h0aW5nLT5saWdodFNvdXJjZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0
RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1l
bnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291cmNlKTsKICAgICBBU1NFUlQobGlnaHRFbGVt
ZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0dHIpCi0gICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgo
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+
YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIp
Ci0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+
ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0RWxldmF0aW9uKGxp
Z2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WChsaWdodEVsZW1lbnQtPngo
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRYKGxpZ2h0RWxlbWVudC0+eCgpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55KCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRaKGxpZ2h0RWxlbWVu
dC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFoobGlnaHRFbGVtZW50LT56
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAg
ICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNB
dFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFgobGlnaHRFbGVt
ZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNB
dFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WShsaWdodEVs
ZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50
c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9p
bnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOwogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFy
RXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRTcGVjdWxhckV4cG9u
ZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBvbmVudCgpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFu
Z2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUo
bGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE5OSw4ICsxOTgsNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZQogICAgIAogICAgIGNvbnN0IENvbG9yJiBjb2xvciA9IHJlbmRlcmVyLT5z
dHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOwogCi0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
c3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0
aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFy
RXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgbGln
aHRTb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCmluZGV4IDM5OWQ2YmFlNWE2Li40NGQwY2Jh
ODFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNw
cApAQCAtNzgsNyArNzgsNyBAQCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8qIGltYWdl
ID0gZmluZEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAg
ICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51
bGxJbWFnZSgpOwogICAgIEFTU0VSVCghaW1hZ2UtPnNpemUoKS5pc0VtcHR5KCkpOwogICAgIHJl
dHVybiBpbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5jcHAKaW5kZXggODU3MTg1MDg0MTAuLjM1NzIwNzExMmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjg2LDcgKzI4
Niw3IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkK
ICAgICA6OlNob3dXaW5kb3cobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cpOwog
CiAjaWYgVVNFKENBKQotICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIo
bV9yb290Q2hpbGQpOworICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIo
Km1fcm9vdENoaWxkKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybUxheWVy
KCkpOwogICAgIEFTU0VSVCh2aWRlb0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4
IGJkZDk0MThiN2YzLi43YzNmYmIyNzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViS2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0x
NzEsOCArMTcxLDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0
IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7Ci1QYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVz
b3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAg
IGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNlIGlkCkBAIC0y
MjUsMTcgKzIyNSwxNyBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogICAgIGVsc2UgaWYgKCFzdHJjbXAo
bmFtZSwgImZzVmlkZW9QbGF5IikpCiAgICAgICAgIGlkciA9IElEUl9GU19WSURFT19QTEFZOwog
ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgSFJTUkMgcmVzSW5mbyA9IEZpbmRSZXNvdXJjZShnSW5zdGFuY2UsIE1BS0VJTlRSRVNPVVJD
RShpZHIpLCBMIlBORyIpOwogICAgIGlmICghcmVzSW5mbykKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEhBTkRMRSByZXMgPSBMb2FkUmVzb3VyY2UoZ0lu
c3RhbmNlLCByZXNJbmZvKTsKICAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHZvaWQqIHJlc291cmNlID0gTG9ja1Jlc291cmNlKHJl
cyk7CiAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHVuc2lnbmVkIHNpemUgPSBTaXplb2ZSZXNvdXJjZShnSW5zdGFuY2Us
IHJlc0luZm8pOwogCiAgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlc291cmNlKSwgc2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA0MDA2NTU4Njc1YS4uNzYxNWYw
OTFkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MzQ5LDkgKzM0OSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVCYWNr
aW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYgKG1fYmFja2lu
Z1N0b3Jlcy5jb250YWlucyhsYXllcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpjcmVhdGUoKSk7Ci0gICAgbV9iYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0
b3JlKTsKLSAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSk7CisgICAgYXV0
byBiYWNraW5nU3RvcmUgPSBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisgICAg
bV9iYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CisgICAg
bGF5ZXItPnNldEJhY2tpbmdTdG9yZShXVEZNb3ZlKGJhY2tpbmdTdG9yZSkpOwogfQogCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4
dHVyZU1hcHBlckxheWVyKiBsYXllcikKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4dHVyZU1hcHBl
ckxheWVyKiBsYQogICAgIGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBsYXllci0+c2V0QmFja2luZ1N0b3JlKDApOworICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUo
bnVsbHB0cik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXNldEJhY2tp
bmdTdG9yZVNpemVUb0xheWVyU2l6ZShUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA3YWY2
NjQ4YjBlMS4uNTNmMDVjZTAwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPEN1cnNvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFpc1ZhbGlkSW1hZ2VQcmVzZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IEN1cnNvcihJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50KCkpOwor
ICAgICAgICBjdXJzb3IgPSBDdXJzb3IoJkltYWdlOjpudWxsSW1hZ2UoKSwgSW50UG9pbnQoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlNTU3MmUxNmQ1ZS4u
ODExZWVlYTIwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIENvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OnN5bmNMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgQ29v
cmRpbmF0ZWRHcgogICAgIG1fc3RhdGUubGF5ZXJzVG9VcGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGlkLCBzdGF0ZSkpOwogfQogCi1SZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlKiBpbWFn
ZSkKK1JlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UmIGltYWdlKQogewotICAgIENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCA9IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKGltYWdlKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
aW1hZ2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsIGltYWdlXSB7Ci0gICAgICAgIHJl
dHVybiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y3JlYXRlKHRoaXMsIGltYWdlKTsKKyAgICBD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCgmaW1hZ2UpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9pbWFnZUJhY2tpbmdzLmVuc3VyZShpbWFnZUlELCBbdGhpcywgJmltYWdlXSB7Cisg
ICAgICAgIHJldHVybiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y3JlYXRlKCp0aGlzLCBpbWFn
ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5o
CmluZGV4IGQyY2E3ODRiMzkwLi43YzU0MDE4NzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaApAQCAtMTExLDcgKzExMSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgYm9v
bCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0Zs
dXNoaW5nTGF5ZXJDaGFuZ2VzOyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVh
dGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8s
IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQm
KSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAppbmRleCA3NjFiMmEyNDQ2MS4uMmRmNDJl
OTQ3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
R3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
Ym9vbCBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGZpbHRlcnMpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lciwgbV9jb250ZXh0KTsK
IApAQCAtNTIsMTIgKzUyLDEyIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBo
aWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1D
QUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQog
ewogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0Zm9ybUxheWVy
LCBvd25lciwgbV9jb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZv
cm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQ
bGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlOjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1v
dGUuaAppbmRleCA4MzVlNGI3MzQ4OS4uZTRhOTI1N2E2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FS
ZW1vdGUuaApAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNH
cmFwaGljc0xheWVyQ0FSZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1D
QUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKLSAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKLSAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBsYXRmb3JtQ0FB
bmltYXRpb24oV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXll
cihQbGF0Zm9ybUxheWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBs
YXRmb3JtQ0FBbmltYXRpb24oV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9u
VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKSBvdmVycmlkZTsKIAogICAgIC8vIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZSBjYW4ndCBjdXJyZW50bHkgcHJveHkgZGlyZWN0bHkgY29tcG9zaXRlZCBp
bWFnZSBjb250ZW50cywgc28gb3B0IG91dCBvZiB0aGlzIG9wdGltaXphdGlvbi4KICAgICBib29s
IHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaApp
bmRleCBmZjc0YzczM2I2Yy4uNjMzOWIyMjMwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZS5tbQppbmRleCAxNjNhNzJiMjAyMi4uYjEwMDM3MDQ5MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTMwNiw5ICszMDYsOSBAQCBSZWY8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRlKFBsYXRm
b3JtQ0FBbmltYXRpb246OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FB
bmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAorUmVmPFBs
YXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25z
dAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb24gPSBjcmVhdGUo
YW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAgIGF1dG8gYW5pbWF0aW9uID0gY3JlYXRl
KGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAgICAKICAgICBhbmltYXRpb24tPnNldEJl
Z2luVGltZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlv
bigpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+
Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1
bmN0aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlPigqYW5pbWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNFeHBsaWNp
dEJlZ2luVGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPihh
bmltYXRpb24uZ2V0KCkpLnNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGhhc0V4cGxpY2l0QmVnaW5U
aW1lKCkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309762</attachid>
            <date>2017-05-11 13:25:40 -0700</date>
            <delta_ts>2017-05-11 13:31:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511132539.patch</filename>
            <type>text/plain</type>
            <size>176869</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5lYzczZTU4ZWY2MmUyY2FkYWYyOTI4
MmZlNjkzOGQ0ZTFiOGI3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRy
KTsKICAgICB9CiAKICAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJp
dmF0ZToKICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8v
IEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1v
dW50LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KGFtb3VudCgpLCB0eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAg
ICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2
YXRlOgogLy8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFy
aWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBl
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3Vu
dCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbW91bnQ7IH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RG
TW92ZShzdGREZXZpYXRpb24pKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb247IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9j
YXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRp
b24oKSwgY29sb3IoKSkpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi54KCk7IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1v
dmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4
MzA2ZmM0NWQ4MWEwNWNlNjEuLmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3Jt
YXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVT
aXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNz
UmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0
ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZm
YWZlZTdiZTI2MmM0NDUwZC4uNTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlPiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4
LCBCR1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lk
IGxvYWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGJkMThlNWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3
MmFhN2RkZGQ1ZjM0OTRlZWMzNDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBH
UmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4s
IGluZGV4LCBwYWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3
MjhkM2MwZWM3Mi4uZDNlMDRmNmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAg
c3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAot
ICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcElt
YWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJh
MmM1ZmMwN2U3YjBhYTU2NTEzMWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3
Zjc4ZWI5OWMxM2EwNTBkNGZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9y
bWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBp
ZCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoKSB7IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5h
ZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGN1ZUZvcm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1
ZSgqZGF0YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGNjM2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEu
LjZhOTA3NDRlNTkwOTAxOTM5MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2Jj
MGRlZmM5ZGY1NGViM2Y1Li43OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7
CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlf
Z2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2No
YXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBn
c3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAg
ICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkq
PihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZh
ODRjZi4uYzI3MDcyNjBmMzEwNzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
ODUyLDcgKzg1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBp
bWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFp
bnRpbmdPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBiYTQ2YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41
ZWE3NmUzZmVhMTNkYzg3YTJjYWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBp
bmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
Y3BwCmluZGV4IDY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmViYjUw
MmYyOWMwZjExYzZjYzc2ODU3NGY2ZDI0MzBjYTlkNTZmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIg
KzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlw
ZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkK
K3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1f
cGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3Bs
YXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOwog
fQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1T
RTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQxMjc1NGVlMTZi
YTkwMjJjZWFkZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNlZjkwMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVk
KTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9p
ZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVl
dWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggOTIwOTViNjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYyY2Q1NmE4NDZi
MzQ3NjEyMzQ0ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1
ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVs
aW5lLmNwcAppbmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhjYTE2ZjIwLi44
YTJmZjQzYWNhYmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9ERUJVRygidHJh
Y2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4g
bWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVh
ZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6ZW5xdWV1
ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdzdEVsZW1lbnQq
IGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5xdWV1ZWRUaW1l
ID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVkaWFTYW1wbGUq
IHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVkaWFTYW1wbGUu
Z2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2FzdDxH
U3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBpZiAoc2FtcGxl
LT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1wbGUoKSkpIHsK
ICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+c2FtcGxlKCk7
CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKGdzdFNh
bXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmluZGV4IDA4ZjBl
NjBkMzMzMmY2ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZmYzE2NGY2Mjgx
YjY5Yzc4NDc3Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5o
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBl
bnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBs
ZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
R3RrLmNwcAppbmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdlYmJlNWQ0Li41
NzViM2E1ZWY1NDVlNGI2YWFiYzAxZGIyZmM4YjA0MjM0NGE0NDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTM2LDE3ICsz
NiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEltYWdl
PiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQorc3RhdGljIFJl
ZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkKIHsK
LSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNlcy9pbWFnZXMv
JXMiLCBpY29uTmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKGdf
cmVzb3VyY2VzX2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdT
X05PTkUsIG51bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+c2V0RGF0YShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0X3NpemUoZGF0
YS5nZXQoKSkpLCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGljb247CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBmaWxlbmFtZSkKIHsKICAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdzaXplIGxlbmd0aDsKQEAgLTYw
LDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkK
IHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJv
bVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkTWlzc2luZ0lt
YWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBpY29uU2l6ZSA9
IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAxNjsKLSAgICBSZWZQdHI8Qml0
bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpY29uID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8R3RrSWNvbkluZm8+IGljb25J
bmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9kZWZhdWx0
KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwgR1RLX0lDT05fTE9PS1VQX05P
X1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3RrX2ljb25faW5mb19nZXRfZmls
ZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+c2V0RGF0YShidWZmZXIucmVs
ZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9m
aWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29uLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBpY29uOwogICAgIH0KIAogICAgIHJldHVy
biBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKK1JlZjxJbWFnZT4g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0
dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1pc3NpbmdJbWFnZSIpID8gbG9hZE1pc3NpbmdJ
bWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
SGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAzY2FjZThlZDliZWQ4MmIzOGNjMzgxOWQzM2Jm
ZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThkNTc1YmFlZjE3YzY3NTY1NmMyMTdhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgaGJfdGFnX3QgSGFy
ZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdrJywgJ2UnLCAncicsICduJyk7CiAKIGNsYXNz
IEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RmFjZUNhY2hlRW50cnk+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2Zh
Y2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZhY2VDYWNoZUVudHJ5PiBjcmVhdGUoaGJfZmFj
ZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGZhY2UpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZhY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkpOwogICAgIH0KICAgICB+RmFjZUNhY2hlRW50
cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5kZXggNjMxNzlmZTgxNWU0MDU0NzMzZDQ5OWQ3
NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0YWYxYzA5NDhjZGU4ZWVhZTkxMjU4MDY5OWRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
SGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgog
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9y
bURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxI
YXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2
NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6
ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+
SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3Yzk2OGYzNmY1ODgwZGQ0MGZjNWUwM2U5ZGJi
YmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlmOWU4NzA5MTE4OTNiMmIyY2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC01
Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQog
ICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBOU0J1bmRsZSAq
YnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQnVuZGxlRmluZGVyIGNs
YXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJwbmciXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3NTRkMDJhNDJkZTVlMzM0NmUxZDMwYTM2ZDU0
NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2IyNDJhOGEyNDY0ZGJiMDFlNzU3YTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5
cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBzdGF0aWMgUmVmPE9wZW5UeXBlTWF0aERhdGE+
IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0YShmb250KSk7CiAgICAgfQogICAgIH5PcGVu
VHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDMyNDU2MzhhOGVmZTdhNTI5YTIz
NmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVkZmM1YjY1NzdiOGU5MTIwOTU5MjEyZWUyN2Ew
NzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBv
aW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0
dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAg
IGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9y
dHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVy
biB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJz
KFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5OWI2YmNiZmI4YTI3M2U4ZjA1YzI1ZWQyLi44
ZTlmNTUzMDVmMmNjM2E4ZDRmMjA5MTI0ZDFiMGQwZTUzZWFmZDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiQ2Fp
cm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0UGFz
c2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6
YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdM
OjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVy
ZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAg
ICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5m
byA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIsIGosIHNwYXJlU3VyZmFjZSk7
CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSkt
Pm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIsIGosIHNw
YXJlU3VyZmFjZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggYzRhODAyMjRhODdlYzVjYThiNWJhZjA2OTJk
ZDQxMTQ0ZmNjNmFhYS4uM2E0ZDgwNDczNDI2ZjIxNmZjOWVkMWViM2EwYjY3Y2ZkNjg0YjM5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTksMTYgKzU5LDE2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIHVuc2ln
bmVkIGJ5dGVzUGVyUGl4ZWwgPSA0LCBQbGF0Zm9ybTNET2JqZWN0IGdsRm9ybWF0ID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEpOwogICAgIGJvb2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFw
cGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOwogICAgIHN0cnVjdCBGaWx0
ZXJJbmZvIHsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyOwogICAgICAg
ICB1bnNpZ25lZCBwYXNzOwogICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY29udGVudFRl
eHR1cmU7CiAKLSAgICAgICAgRmlsdGVySW5mbyhQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
ZiA9IDAsIHVuc2lnbmVkIHAgPSAwLCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHQgPSAwKQot
ICAgICAgICAgICAgOiBmaWx0ZXIoZikKKyAgICAgICAgRmlsdGVySW5mbyhSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiYmIGYgPSBudWxscHRyLCB1bnNpZ25lZCBwID0gMCwgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+JiYgdCA9IG51bGxwdHIpCisgICAgICAgICAgICA6IGZpbHRlcihXVEZNb3ZlKGYpKQog
ICAgICAgICAgICAgLCBwYXNzKHApCi0gICAgICAgICAgICAsIGNvbnRlbnRUZXh0dXJlKHQpCisg
ICAgICAgICAgICAsIGNvbnRlbnRUZXh0dXJlKFdURk1vdmUodCkpCiAgICAgICAgICAgICB7IH0K
ICAgICB9OwogICAgIGNvbnN0IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVy
biAmbV9maWx0ZXJJbmZvOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAppbmRleCA3OGEwMjQ2ZjdmNTUwODgyYzMwZDVmZDA2YTI0MjIyZWVjODBhYzA0Li5hMDI2
ZjRjNTA4YzhmNGUyZDIzMjQwNDVjMzM3MDRjOTU2ODZmYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xh
eWVyLnNldEZpbHRlcnMoZmlsdGVycygpKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNr
aW5nU3RvcmVDaGFuZ2UpCi0gICAgICAgIG1fbGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2lu
Z1N0b3JlKTsKKyAgICAgICAgbV9sYXllci5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUu
Y29weVJlZigpKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBEZWJ1Z1Zpc3VhbHNDaGFuZ2Up
CiAgICAgICAgIG1fbGF5ZXIuc2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCks
IGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dpbmdSZXBhaW50
Q291bnRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzMwNDdmNDkwNTc5YjJmYTJjMWYz
ZDNmODQ4OTI3YTE5MDE2YzE5Li4xZjllNjgyN2RhNWQzYTU1NjNmN2RlYWQ5ZTVlMjNmM2M4YWZl
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAgVGV4dHVyZU1hcHBl
cjo6VGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVN
YXBwZXIoKSA9IGRlZmF1bHQ7CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBC
aXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncykKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJl
TWFwcGVyOjphY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IEJpdG1hcFRleHR1cmU6OkZsYWdzIGZsYWdzKQogewogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiBzZWxlY3RlZFRleHR1cmUgPSBtX3RleHR1cmVQb29sLT5hY3F1aXJlVGV4dHVyZShzaXplLCBm
bGFncyk7CiAgICAgc2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplLCBmbGFncyk7Ci0gICAgcmV0
dXJuIHNlbGVjdGVkVGV4dHVyZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVy
ZTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OmNy
ZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCA3MjMzZDBkY2NkNWM4YjVmNWE5Yzc1MDMwZTU1OTFi
YjRiMzUyMzQwLi42NzMwZDhlN2JkYWZmMTY1ZTA3ODg3MjYxMGM5MTgwOTcyMGQyYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZENsaXAoKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0
IGNsaXBCb3VuZHMoKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoKSA9IDA7CisgICAgdmlydHVhbCBSZWY8Qml0bWFwVGV4dHVyZT4gY3Jl
YXRlVGV4dHVyZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50
RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXpl
KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFj
cXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzID0gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CisgICAgdmlydHVhbCBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiwg
Y29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgPSBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhh
KTsKIAogICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcCkgeyBtX3BhdHRlcm5UcmFuc2Zvcm0gPSBwOyB9CiAgICAgdm9pZCBzZXRXcmFwTW9k
ZShXcmFwTW9kZSBtKSB7IG1fd3JhcE1vZGUgPSBtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmlu
ZGV4IDc0NjRkMDQ3ZTM1YzA2ZDNiNGJhYjJmNzUxZjk4MWZmN2I1ODJlNmQuLjk4ZGM4NDVmMDBm
MjgxNjBmNDQ4NThmZDQ4OWVjNWZjMjEyNjVkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBJ
bnRSZWN0IFRleHR1cmVNYXBwZXJHTDo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIGNsaXBTdGFj
aygpLmN1cnJlbnQoKS5zY2lzc29yQm94OwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgpCitSZWY8Qml0bWFwVGV4dHVyZT4gVGV4
dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gQml0bWFwVGV4dHVy
ZUdMOjpjcmVhdGUoKm1fY29udGV4dDNEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBhY2M3
OGU4Yzg1MWVjNjdmYTIwZGZiMzg1MGM3ZDU3ZTJjNDZhOWE5Li5lN2M4MGU5MjY5NDVhMGU1Y2M5
YTRmOTQ5Yzg4NTdkMDFlMzk0YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZENsaXAoKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZSgyMDAwLCAyMDAwKTsgfQotICAgIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlOworICAgIFJlZjxCaXRtYXBU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgb3ZlcnJpZGU7CiAgICAgaW5saW5lIEdyYXBoaWNzQ29u
dGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDNELmdl
dCgpOyB9CiAKICAgICB2b2lkIGRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3Vy
Y2VUZXh0dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmls
dGVyT3BlcmF0aW9uJiwgaW50IHBhc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRl
eCBkMzljZmZjYmI3ODg5MWZlMTFlNWU4YzRiYTE4ZWM4NzI5YTE0YzYyLi43OWI4OTU0NjcxYzYz
YzVhYzNlZWEyZTJkZDMzZTgzMzJiMDZkOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2so
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXIuc2V0TWFza01vZGUoZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmUHRy
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9y
dHNBbHBoYSB8IEJpdG1hcFRleHR1cmU6OkZCT0F0dGFjaG1lbnQpOwogICAgIFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOwpAQCAtMzc2LDE2ICszNzYsMTYg
QEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50
b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHAKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmFw
cGx5TWFzayhvcHRpb25zKTsKICAgICBzdXJmYWNlID0gc3VyZmFjZS0+YXBwbHlGaWx0ZXJzKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbV9jdXJyZW50RmlsdGVycyk7CiAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOwotICAgIHJldHVybiBzdXJmYWNl
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotc3RhdGljIHZvaWQgY29tbWl0
U3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IG9w
YWNpdHkpCitzdGF0aWMgdm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmIG9wdGlvbnMsIEJpdG1hcFRleHR1cmUmIHN1cmZhY2UsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmJpbmRT
dXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xhdGUob3B0aW9ucy5v
ZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAgIHRhcmdldFRyYW5z
Zm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCByZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9w
YWNpdHkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZShzdXJmYWNlLCBy
ZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDA1LDcgKzQwNSw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNl
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wCiAgICAgfQogCiAgICAgaWYgKHJlcGxpY2FTdXJm
YWNlICYmIG9wdGlvbnMub3BhY2l0eSA9PSAxKSB7Ci0gICAgICAgIGNvbW1pdFN1cmZhY2Uob3B0
aW9ucywgcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOworICAgICAgICBjb21taXRTdXJmYWNlKG9w
dGlvbnMsICpyZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CiAgICAgICAgIHJlcGxpY2FTdXJmYWNl
ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTYzNyw5ICs2MzcsOSBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQogICAgIG1f
Zml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0OwogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZT4gYmFja2luZ1N0b3JlKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdT
dG9yZShSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4mJiBiYWNraW5nU3RvcmUpCiB7
Ci0gICAgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbV9iYWNraW5nU3RvcmUg
PSBXVEZNb3ZlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpk
ZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmgKaW5kZXggM2IxYzE2YjBiMTMyZjUwYzY4MzMwMmUzZWIzN2I2ZTE2MmIxNTRl
Ny4uYmVkMWY2Y2Q2NWIxOTZiYmQ2OTk4ZmRjMTM2ZDhjMTE4NjY3ZTExNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFu
aW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFz
c1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRCYWNraW5n
U3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAgdm9pZCBz
eW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0Fu
aW1hdGlvbnMoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAg
dm9pZCBwYWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYpOwotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3VyZmFjZShj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOworICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJbnRlcm1l
ZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5oCmluZGV4IDg1MTRhNGY3MzZhNTZkMzU4ZTRkMTI3ZGJlODI2OGQ3MjkxNmRhZDQuLjQyMzhj
NWQ4ZTRkYTAyYTkzNDc0MDIzMmU1ZjBhMWEwNDNlNjdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGV4
dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVi
bGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0
aWMgUmVmPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmly
dHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmODk3
MTQ4OWFmZDhlNThlNTdiNDMzOTY1YmEwZDJmY2JlNDk0NzVkLi5hMjY2MmVmMGI5NjU2Mjk4Yjg2
ZTA1ODFlNjE1MWVhNjg3ZGI5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKCkKICAgICAgICAgICAg
IHJlbGVhc2VJbWFnZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgICAgIGlmICghbV9jb29yZGlu
YXRlZEltYWdlQmFja2luZykgewotICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2lu
ZyA9IG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29tcG9zaXRl
ZEltYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcgPSBt
X2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCgqbV9jb21wb3NpdGVkSW1h
Z2UpOwogICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+YWRkSG9zdCh0aGlz
KTsKICAgICAgICAgICAgIG1fbGF5ZXJTdGF0ZS5pbWFnZUlEID0gbV9jb29yZGluYXRlZEltYWdl
QmFja2luZy0+aWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGJmMjUxMTFkYmU1NDJmY2JjMzViNzdm
ZjA5ZTNmZmJhYTMxMzI4N2YuLmI3NzRlMDA1ZmMwMTVjNDUwMmNmZGVjZTQ4MDE3ZDExNzJjMzZj
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdl
cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxD
b29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2Um
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6
ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2lu
dCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBmNTI5NDc1
NWEyMzM2NTVjMzA2NjU3MWNmNjM5YmVjYjUwYzAzMDUwLi41NjBjMmUxNjcyMWM2NjgyNzNlZmZk
MjdlYzE5MjlhMTUyNmJjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEKAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQ+KGltYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBp
bWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
KGNsaWVudCwgaW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZElt
YWdlQmFja2luZyhjbGllbnQsIFdURk1vdmUoaW1hZ2UpKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqIGNsaWVudCwgUGFzc1Jl
ZlB0cjxJbWFnZT4gaW1hZ2UpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2ltYWdl
KGltYWdlKQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
KENsaWVudCYgY2xpZW50LCBSZWY8SW1hZ2U+JiYgaW1hZ2UpCisgICAgOiBtX2NsaWVudCgmY2xp
ZW50KQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1faWQoZ2V0Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJDb250ZW50
c1RpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNsZWFyQ29udGVudHNUaW1l
ckZpcmVkKQogICAgICwgbV9pc0RpcnR5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCBiODYwM2M2OGU2MzY4NGNiN2Vl
NGRjZThkMjUyNjI2ZTlmMWZkYWVjLi40YzY5ZTU4MjY2OWZlMjc4OWFhYzZhYTEyYzMzYjU1YWFh
NzI3YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpbWFnZUJhY2tpbmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCosIFBhc3NSZWZQdHI8
SW1hZ2U+KTsKKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGUo
Q2xpZW50JiwgUmVmPEltYWdlPiYmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEltYWdlQmFj
a2luZygpOwogCiAgICAgc3RhdGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgZ2V0Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSopOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2lu
ZyhDbGllbnQqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcoQ2xpZW50JiwgUmVmPEltYWdlPiYmKTsKIAogICAgIHZvaWQgcmVsZWFzZVN1cmZhY2VJZk5l
ZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJpbGl0eUlmTmVlZGVkKGJvb2wmIGNoYW5nZWRU
b1Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHAKaW5kZXggMWU1OGJlZTBhZjAxNGU2MWZlNzBiZTk4ZTNlMzQyZDBmOGY2NGU0
Mi4uMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24g
bG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOwot
ICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAg
IGltZy0+c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4gaW1nLnJl
bGVhc2UoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIobmFtZSk7
CisgICAgYXV0byBpbWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5zZXREYXRh
KFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9vbCBCaXRt
YXBJbWFnZTo6Z2V0SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMjNjODk5ZTRhZWIy
N2I0ZjIwNTVmZTJiNjY2Y2M2Li4xNmI2YjVkZmY4MDA1YzRmYTRiODcyMjM4NWQyOTczMzQ4NGIy
Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
Y3BwCkBAIC05MywyMCArOTMsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93OjpjcmVhdGVXaW5kb3coSFdORCBwYXJlbnRId25kKQogfQogCiAjaWYgVVNFKENBKQot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXll
cihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihSZWY8UGxhdGZvcm1D
QUxheWVyPiYmIHJvb3RDaGlsZCkKIHsKLSAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9vdENoaWxk
KQorICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hpbGQucHRyKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3Jvb3RDaGlsZCkKICAgICAgICAgbV9yb290Q2hpbGQtPnJlbW92ZUZy
b21TdXBlcmxheWVyKCk7CiAKLSAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKLQotICAgIGlm
ICghbV9yb290Q2hpbGQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Jvb3RDaGlsZCA9IFdURk1vdmUocm9vdENoaWxk
KTsKIAogICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGNkZDBjYTMwNDEwYmE0YTZjOTI4ZGZiOWU5
ZmY2YTljNTVlOGQxOWQuLjRhMjBkOWUwYTdiY2NlMjA1MGM0NzRmMTc4NDBhMjBmMTZhMmJmYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0EpCiAgICAgUGxhdGZvcm1DQUxheWVy
KiByb290Q2hpbGRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOwor
ICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUmVmPFBsYXRmb3JtQ0FMYXllcj4mJik7CiAjZW5k
aWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKaW5kZXggMWI5MjI5ZTg2NjUyZDE5NWRhYTdi
MGRhZDIyNzNiYjNiYWYyMmFjMS4uOWRmYjVhZWQ1OTJiOWVhM2EwYzBlZmIyMjlmZThhYjQ0NDU0
OGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dHRlcm5EaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRtYXBCcnVz
aCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKICAgICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSUQy
RDFCaXRtYXBCcnVzaCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxUIGhyID0g
cGxhdGZvcm1Db250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5hdGl2ZUlt
YWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVy
dGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+
Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQo
KSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVz
aCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hh
cmVkR0RJT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hh
cmVkR0RJT2JqZWN0LmgKaW5kZXggODllNDIxOTNkZWYyMWI4ODhlMWEyMGUyYTFhMjc3YjliN2Q0
YzdlZi4uNGNlMzY3YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmpl
Y3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBTaGFyZWRHRElPYmplY3RfaAogI2RlZmlu
ZSBTaGFyZWRHRElPYmplY3RfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvd2luL0dESU9iamVjdC5oPgogCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNoYXJlZEdESU9iamVjdDxUPj4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmplY3QpCisg
ICAgc3RhdGljIFJlZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4gb2JqZWN0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHRElPYmplY3Q8VD4o
V1RGTW92ZShvYmplY3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEdE
SU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKICAgICB9CiAKICAgICBUIGdldCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cAppbmRleCA0MjU0ZWY5MDk3YjhkMjNjYzYwOWQ1MDM3NmIzOTA0MmI5NzFiNzllLi5lNWJmMDRk
YjIzZDJhY2I5Nzk1YTMyZTlhNDhlODNiMmIzODUyZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
UkVGRVJFTkNFOiB7CiAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3du
Y2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAg
ICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihyZW5kZXJlciwgKnByZXZpb3VzRWZm
ZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOwotICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9u
LnNldEZpbHRlckVmZmVjdChlZmZlY3QpOworICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9u
LnNldEZpbHRlckVmZmVjdChlZmZlY3QuY29weVJlZigpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAppbmRl
eCBiZDFlNTVlNDA3NTc5MGI3NjEwZmQ1OWNiYmQ5ZWI4YTYwNTRiNzBmLi4xYTk0YTU2MzBiMDcw
NTQzMDA2MmQzNWMxZDI3NzRmZTcyMWJjODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRl
ckltYWdlUmVzb3VyY2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAgIHJldHVy
biBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihtX3JlbmRl
cmVyKSA6IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1f
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6Om51bGxJ
bWFnZSgpOwogfQogCiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMDIzODI1
MjkyZTNjNDMzYmJjNmFkOTUxOWMzZjZhZDY0YjNiNzM2Mi4uMjhmMDFmYmRhMDgzZGFmOTllOTNk
NDYzYTEyYjg3YjZiNjgzYmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0zNzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0
Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91CiAg
ICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVy
UmVzaXplclNpemU7CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVz
aXplQ29ybmVySW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVh
UmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAgIHJl
c2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29ybmVy
UmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3JuZXJS
ZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKCZJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1Jl
ZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVz
OwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGVhOTM2YTRkYzgyZWJhYTRhNmFkOTI1ZWE3
YWNjNjgzNGY5NDA3ZDAuLjBmYjgyODBlMTllMTA3NmY2MTZmYjNhOGQ1YjM5OTljMzUwZjE5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBQYXR0ZXJuRGF0YSogUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIHVucwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KICAgICBhdXRvIHBhdHRlcm5EYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgcGF0dGVy
bkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNm
b3JtYXRpb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKaW5kZXggNzVmMjRjNGUyNjdhODM3NGE4YTI4ODA4NDJjNGQ2Yzc5Y2U2
MzljYS4uY2EwZjY4ZmE5YWI5NmY5NmFjNjNiZDZlZjE1YjIzNjJjYWZiMDdiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAg
LTExNSwzMSArMTE1LDMwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQogICAgICAgICByZXR1cm4gZGlm
ZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkpOwogCi0g
ICAgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSo+KGRp
ZmZ1c2VMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBj
b25zdF9jYXN0PExpZ2h0U291cmNlJj4oZGlmZnVzZUxpZ2h0aW5nLT5saWdodFNvdXJjZSgpKTsK
ICAgICBjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVs
ZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291cmNlKTsK
ICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6YXppbXV0aEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXppbXV0aChs
aWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRB
emltdXRoKGxpZ2h0RWxlbWVudC0+YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmVsZXZhdGlvbkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0RWxl
dmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+
c2V0WChsaWdodEVsZW1lbnQtPngoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRY
KGxpZ2h0RWxlbWVudC0+eCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55KCkpOwor
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291
cmNlLT5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNl
LnNldFoobGlnaHRFbGVtZW50LT56KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cG9pbnRzQXRYQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFgo
bGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5z
ZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Ut
PnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAgcmV0dXJu
IGxpZ2h0U291cmNlLnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKICAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOwor
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9p
bnRzQXRaKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVu
dEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBvbmVudChs
aWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBvbmVudCgp
KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikK
LSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVs
ZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uu
c2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw4
ICsxODcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgY29uc3QgQ29sb3ImIGNv
bG9yID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRl
KGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0
U291cmNlKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGln
aHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0
YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA1NTY1YjkxZDEyYjhk
ZWM3Nzc1NmU1MGUwZjBmOTU0MzJjYWUyYmIyLi4xNzA0MzdmMzJmYjMzYjRmZGVkNjNlNGNmOWNm
YzE0OGQ5Y2ZkMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjYsMzEgKzEyNiwzMCBAQCBib29sIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqIGVmZmVjdAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVu
dEF0dHIpCiAgICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5zZXRTcGVjdWxhckV4cG9u
ZW50KHNwZWN1bGFyRXhwb25lbnQoKSk7CiAKLSAgICBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2Ug
PSBjb25zdF9jYXN0PExpZ2h0U291cmNlKj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2Uo
KSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oc3Bl
Y3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1l
bnQqIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRo
aXMpOwotICAgIEFTU0VSVChsaWdodFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxlbWVudCk7
CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOwor
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11
dGgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZh
dGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihsaWdodEVs
ZW1lbnQtPmVsZXZhdGlvbigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOwor
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291
cmNlLT5zZXRZKGxpZ2h0RWxlbWVudC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNl
LnNldFkobGlnaHRFbGVtZW50LT55KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ekF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnoo
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkp
OworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+
cG9pbnRzQXRYKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0
cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50
LT5wb2ludHNBdFkoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFko
bGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojpwb2ludHNBdFpBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0
WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNl
LnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldFNwZWN1bGFyRXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9u
ZW50KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBvbmVudChs
aWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS0+c2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgp
KTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0
RWxlbWVudC0+bGltaXRpbmdDb25lQW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTksOCArMTk4LDcgQEAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGUKICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9u
ZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAzOTlkNmJhZTVhNjA0ZTNkM2RjOTM5Mzc2
NTQzZjI1NWEzNDAxZTNjLi40NGQwY2JhODFlYjE2NjgyMzJmMDRmZjY1YjYwYjIwMzM2NTlmNWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBA
IC03OCw3ICs3OCw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgYXV0byogaW1hZ2UgPSBm
aW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbElt
YWdlKCk7CiAgICAgQVNTRVJUKCFpbWFnZS0+c2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJu
IGltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAppbmRleCA4NTcxODUwODQxMDJkMGQ2NjFhMzA1YzZkZjFjNTk2Mjg1NmVhZTgwLi4z
NTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1MmIwNjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjg2LDcgKzI4Niw3
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKICAg
ICA6OlNob3dXaW5kb3cobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cpOwogCiAj
aWYgVVNFKENBKQotICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIobV9y
b290Q2hpbGQpOworICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIoKm1f
cm9vdENoaWxkKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRmb3Jt
Q0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkp
OwogICAgIEFTU0VSVCh2aWRlb0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IGJk
ZDk0MThiN2YzMGE4NzE0OWU3YWExZGM3NGViMmQ2YzA5ZDdjYTYuLjdjM2ZiYjI3M2Y2MTc0Yjc0
ODFkNGM1NWM1YjczYTJlNTEyZmNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcApAQCAtMTcx
LDggKzE3MSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91
bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBm
dW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciog
bmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBp
bnQgaWRyOwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApAQCAtMjI1
LDE3ICsyMjUsMTcgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKICAgICBlbHNlIGlmICghc3RyY21wKG5h
bWUsICJmc1ZpZGVvUGxheSIpKQogICAgICAgICBpZHIgPSBJRFJfRlNfVklERU9fUExBWTsKICAg
ICBlbHNlCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEhSU1JDIHJlc0luZm8gPSBGaW5kUmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtFSU5UUkVTT1VSQ0Uo
aWRyKSwgTCJQTkciKTsKICAgICBpZiAoIXJlc0luZm8pCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIQU5ETEUgcmVzID0gTG9hZFJlc291cmNlKGdJbnN0
YW5jZSwgcmVzSW5mbyk7CiAgICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiByZXNvdXJjZSA9IExvY2tSZXNvdXJjZShyZXMp
OwogICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB1bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3RhbmNlLCBy
ZXNJbmZvKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3NWEzMmE5ZTM3Yzk5
MWFmMmEyNmQ2NzhhMzBjNzVkOS4uNzYxNWYwOTFkZjM3M2M3YWU4YjU4Nzk1OWIxNGJmZmExNjE5
ODdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0z
NDksOSArMzQ5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAobV9iYWNraW5n
U3RvcmVzLmNvbnRhaW5zKGxheWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmNyZWF0ZSgpKTsKLSAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3Rv
cmUpOwotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKKyAgICBhdXRv
IGJhY2tpbmdTdG9yZSA9IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKKyAgICBt
X2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUuY29weVJlZigpKTsKKyAgICBs
YXllci0+c2V0QmFja2luZ1N0b3JlKFdURk1vdmUoYmFja2luZ1N0b3JlKSk7CiB9CiAKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVy
TGF5ZXIqIGxhCiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGxheWVyLT5zZXRCYWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShu
dWxscHRyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlc2V0QmFja2lu
Z1N0b3JlU2l6ZVRvTGF5ZXJTaXplKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdhZjY2
NDhiMGUxNzg2NjNhYjc4Zjk3OGY4OTNjZTU1ZGQ2NDUyZmIuLjUzZjA1Y2UwMDIyYTM2YTEyNTQy
MmE1ZTUxOTRhYTRjMzZiYjg3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPEN1cnNvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFpc1ZhbGlkSW1hZ2VQcmVzZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IEN1cnNvcihJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50KCkpOwor
ICAgICAgICBjdXJzb3IgPSBDdXJzb3IoJkltYWdlOjpudWxsSW1hZ2UoKSwgSW50UG9pbnQoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlNTU3MmUxNmQ1ZTBj
NzgzMzlmNjZhMDNjNjUzOGE2NWMzNWI5Y2M3Li44MTFlZWVhMjBiNGM4MjM0YzY0Mzg5NzQzMDJk
ZGU2YWNmYzYxMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21w
b3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIENv
b3JkaW5hdGVkR3IKICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihpZCwgc3RhdGUpKTsKIH0KIAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSogaW1h
Z2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6
OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAgICBDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewotICAgICAgICBy
ZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAg
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1faW1hZ2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZpbWFnZV0gewor
ICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgqdGhpcywgaW1h
Z2UpOwogICAgIH0pOwogICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
aAppbmRleCBkMmNhNzg0YjM5MDRiNjZiNmViNjhiOTE0OGY0Y2NhYWRlNDE2YWQxLi43YzU0MDE4
NzMyMGViYmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC0xMTEsNyArMTExLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICBi
b29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lz
Rmx1c2hpbmdMYXllckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRzUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRl
ZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2Uq
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNy
ZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSBvdmVy
cmlkZTsKICAgICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgLyogYXRsYXNJRCAq
LywgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9H
cmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4IDc2MWIyYTI0NDYxYTM0MWNk
Y2NlNzkyMDJhYzNjZTdjOTI1MzE2NjkuLjJkZjQyZTk0NzMwZjE2MzgzZjliNWE3MzJlODI5NmNi
NWMxYTI1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGZpbHRlcnMpOwogfQogCi1QYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5
ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIGF1dG8gcmVzdWx0ID0g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lciwgbV9jb250ZXh0
KTsKIApAQCAtNTIsMTIgKzUyLDEyIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFw
aGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9yCiAgICAgcmV0
dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdy
YXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZv
cm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0Zm9ybUxh
eWVyLCBvd25lciwgbV9jb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxh
dGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVh
dGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlOjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FS
ZW1vdGUuaAppbmRleCA4MzVlNGI3MzQ4OTQ4OGM5ZDE2MzYxZWEwMmQxYTU4OWJhMDQ5ZjhiLi5l
NGE5MjU3YTY5YWIyYWVmZDFlYTg2ZDBjOGJjNTZjODU2NzhhNzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXll
ckNBUmVtb3RlLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29s
IGlzR3JhcGhpY3NMYXllckNBUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxh
eWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0g
ICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9y
bUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3du
ZXIpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVh
dGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1h
dGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUgY2FuJ3QgY3VycmVudGx5IHByb3h5IGRpcmVjdGx5IGNvbXBvc2l0
ZWQgaW1hZ2UgY29udGVudHMsIHNvIG9wdCBvdXQgb2YgdGhpcyBvcHRpbWl6YXRpb24uCiAgICAg
Ym9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
LmgKaW5kZXggZmY3NGM3MzNiNmM0M2FmMjFiYjBlODFlOWI5NDMyZjY2NmNjZGY5Yi4uNjMzOWIy
MjMwNjYzOGUwMmYwZjA5ZjFjZmU4NzJlMTU2M2I3NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDE2M2E3MmIyMDIyZGQ4YTkwMDU5NzU2MDRkNmE0
OGUxODQ4MWE0ZWYuLmIxMDAzNzA0OTAyMWUyNjgyZmNkOWFhYzNhMTNhMTFjOGM2Nzg3NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTMwNiw5ICszMDYsOSBAQCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRl
KFBsYXRmb3JtQ0FBbmltYXRpb246OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGUodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAor
UmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHko
KSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb24gPSBj
cmVhdGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAgIGF1dG8gYW5pbWF0aW9uID0g
Y3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAgICAKICAgICBhbmltYXRpb24t
PnNldEJlZ2luVGltZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihk
dXJhdGlvbigpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogICAgIGFuaW1h
dGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRW
YWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBkb3duY2FzdDxQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlPigqYW5pbWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNF
eHBsaWNpdEJlZ2luVGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlPihhbmltYXRpb24uZ2V0KCkpLnNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGhhc0V4cGxpY2l0
QmVnaW5UaW1lKCkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtl
eWZyYW1lIHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309765</attachid>
            <date>2017-05-11 13:31:55 -0700</date>
            <delta_ts>2017-05-11 13:47:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511133154.patch</filename>
            <type>text/plain</type>
            <size>176879</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5lYzczZTU4ZWY2MmUyY2FkYWYyOTI4
MmZlNjkzOGQ0ZTFiOGI3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRy
KTsKICAgICB9CiAKICAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJp
dmF0ZToKICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8v
IEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1v
dW50LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KGFtb3VudCgpLCB0eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAg
ICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2
YXRlOgogLy8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFy
aWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBl
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3Vu
dCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbW91bnQ7IH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RG
TW92ZShzdGREZXZpYXRpb24pKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb247IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9j
YXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRp
b24oKSwgY29sb3IoKSkpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi54KCk7IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1v
dmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4
MzA2ZmM0NWQ4MWEwNWNlNjEuLmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3Jt
YXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVT
aXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNz
UmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0
ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZm
YWZlZTdiZTI2MmM0NDUwZC4uNTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlPiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4
LCBCR1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lk
IGxvYWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGJkMThlNWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3
MmFhN2RkZGQ1ZjM0OTRlZWMzNDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBH
UmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4s
IGluZGV4LCBwYWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3
MjhkM2MwZWM3Mi4uZDNlMDRmNmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAg
c3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAot
ICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcElt
YWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJh
MmM1ZmMwN2U3YjBhYTU2NTEzMWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3
Zjc4ZWI5OWMxM2EwNTBkNGZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9y
bWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBp
ZCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoKSB7IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5h
ZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGN1ZUZvcm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1
ZSgqZGF0YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGNjM2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEu
LjZhOTA3NDRlNTkwOTAxOTM5MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2Jj
MGRlZmM5ZGY1NGViM2Y1Li43OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7
CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlf
Z2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2No
YXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBn
c3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAg
ICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkq
PihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZh
ODRjZi4uYzI3MDcyNjBmMzEwNzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
ODUyLDcgKzg1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBp
bWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFp
bnRpbmdPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBiYTQ2YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41
ZWE3NmUzZmVhMTNkYzg3YTJjYWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBp
bmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
Y3BwCmluZGV4IDY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmViYjUw
MmYyOWMwZjExYzZjYzc2ODU3NGY2ZDI0MzBjYTlkNTZmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIg
KzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlw
ZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkK
K3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1f
cGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3Bs
YXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOwog
fQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1T
RTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQxMjc1NGVlMTZi
YTkwMjJjZWFkZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNlZjkwMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVk
KTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9p
ZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVl
dWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggOTIwOTViNjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYyY2Q1NmE4NDZi
MzQ3NjEyMzQ0ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1
ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVs
aW5lLmNwcAppbmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhjYTE2ZjIwLi44
YTJmZjQzYWNhYmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9ERUJVRygidHJh
Y2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAot
dm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4g
bWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVh
ZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6ZW5xdWV1
ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdzdEVsZW1lbnQq
IGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5xdWV1ZWRUaW1l
ID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVkaWFTYW1wbGUq
IHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVkaWFTYW1wbGUu
Z2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2FzdDxH
U3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBpZiAoc2FtcGxl
LT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1wbGUoKSkpIHsK
ICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+c2FtcGxlKCk7
CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKGdzdFNh
bXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmluZGV4IDA4ZjBl
NjBkMzMzMmY2ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZmYzE2NGY2Mjgx
YjY5Yzc4NDc3Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5o
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBl
bnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBs
ZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
R3RrLmNwcAppbmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdlYmJlNWQ0Li41
NzViM2E1ZWY1NDVlNGI2YWFiYzAxZGIyZmM4YjA0MjM0NGE0NDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTM2LDE3ICsz
NiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEltYWdl
PiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQorc3RhdGljIFJl
ZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkKIHsK
LSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNlcy9pbWFnZXMv
JXMiLCBpY29uTmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKGdf
cmVzb3VyY2VzX2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdT
X05PTkUsIG51bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+c2V0RGF0YShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0X3NpemUoZGF0
YS5nZXQoKSkpLCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGljb247CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBmaWxlbmFtZSkKIHsKICAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdzaXplIGxlbmd0aDsKQEAgLTYw
LDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkK
IHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJv
bVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkTWlzc2luZ0lt
YWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBpY29uU2l6ZSA9
IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAxNjsKLSAgICBSZWZQdHI8Qml0
bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpY29uID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8R3RrSWNvbkluZm8+IGljb25J
bmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9kZWZhdWx0
KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwgR1RLX0lDT05fTE9PS1VQX05P
X1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3RrX2ljb25faW5mb19nZXRfZmls
ZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+c2V0RGF0YShidWZmZXIucmVs
ZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9m
aWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29uLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBpY29uOwogICAgIH0KIAogICAgIHJldHVy
biBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKK1JlZjxJbWFnZT4g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0
dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1pc3NpbmdJbWFnZSIpID8gbG9hZE1pc3NpbmdJ
bWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
SGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAzY2FjZThlZDliZWQ4MmIzOGNjMzgxOWQzM2Jm
ZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThkNTc1YmFlZjE3YzY3NTY1NmMyMTdhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgaGJfdGFnX3QgSGFy
ZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdrJywgJ2UnLCAncicsICduJyk7CiAKIGNsYXNz
IEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RmFjZUNhY2hlRW50cnk+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2Zh
Y2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZhY2VDYWNoZUVudHJ5PiBjcmVhdGUoaGJfZmFj
ZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGZhY2UpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZhY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkpOwogICAgIH0KICAgICB+RmFjZUNhY2hlRW50
cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5kZXggNjMxNzlmZTgxNWU0MDU0NzMzZDQ5OWQ3
NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0YWYxYzA5NDhjZGU4ZWVhZTkxMjU4MDY5OWRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
SGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgog
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9y
bURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxI
YXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2
NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6
ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+
SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3Yzk2OGYzNmY1ODgwZGQ0MGZjNWUwM2U5ZGJi
YmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlmOWU4NzA5MTE4OTNiMmIyY2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC01
Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQog
ICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBOU0J1bmRsZSAq
YnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQnVuZGxlRmluZGVyIGNs
YXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJwbmciXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3NTRkMDJhNDJkZTVlMzM0NmUxZDMwYTM2ZDU0
NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2IyNDJhOGEyNDY0ZGJiMDFlNzU3YTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5
cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBzdGF0aWMgUmVmPE9wZW5UeXBlTWF0aERhdGE+
IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0YShmb250KSk7CiAgICAgfQogICAgIH5PcGVu
VHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDMyNDU2MzhhOGVmZTdhNTI5YTIz
NmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVkZmM1YjY1NzdiOGU5MTIwOTU5MjEyZWUyN2Ew
NzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBv
aW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0
dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAg
IGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9y
dHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVy
biB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJz
KFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5OWI2YmNiZmI4YTI3M2U4ZjA1YzI1ZWQyLi40
NTA5NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUyZjdjZjM4MDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiQ2Fp
cm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0UGFz
c2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6
YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdM
OjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVy
ZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAg
ICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5m
byA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIsIGosIHNwYXJlU3VyZmFjZSk7
CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSkt
Pm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIuY29weVJl
ZigpLCBqLCBzcGFyZVN1cmZhY2UuY29weVJlZigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IGM0YTgwMjI0YTg3ZWM1Y2E4
YjViYWYwNjkyZGQ0MTE0NGZjYzZhYWEuLjNhNGQ4MDQ3MzQyNmYyMTZmYzllZDFlYjNhMGI2N2Nm
ZDY4NGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTU5LDE2ICs1OSwxNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJM
aW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBib29sIGlzQmFja2VkQnlPcGVuR0wo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMo
VGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBz
dHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRl
cjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZpbHRlckluZm8oUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0gMCwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVyKGYpCisgICAgICAgIEZpbHRlckluZm8oUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVsbHB0ciwgdW5zaWduZWQgcCA9IDAsIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRyKQorICAgICAgICAgICAgOiBmaWx0ZXIoV1RG
TW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhwKQotICAgICAgICAgICAgLCBjb250ZW50VGV4
dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZShXVEZNb3ZlKHQpKQogICAgICAg
ICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29u
c3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3ZjU1MDg4MmMzMGQ1ZmQwNmEyNDIyMmVlYzgw
YWMwNC4uYTAyNmY0YzUwOGM4ZjRlMmQyMzI0MDQ1YzMzNzA0Yzk1Njg2ZmMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKICAg
ICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VN
YXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAgICAgICBtX2xheWVyLnNldEJhY2tpbmdTdG9y
ZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1fbGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFj
a2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1
YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNldERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1
Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93
aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTczMDQ3ZjQ5MDU3
OWIyZmEyYzFmM2QzZjg0ODkyN2ExOTAxNmMxOS4uMWY5ZTY4MjdkYTVkM2E1NTYzZjdkZWFkOWU1
ZTIzZjNjOGFmZWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtMzIsMTEgKzMyLDExIEBAIFRl
eHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIFRleHR1cmVNYXBwZXI6
On5UZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncykKIHsKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbC0+YWNxdWlyZVRleHR1
cmUoc2l6ZSwgZmxhZ3MpOwogICAgIHNlbGVjdGVkVGV4dHVyZS0+cmVzZXQoc2l6ZSwgZmxhZ3Mp
OwotICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmUucmVsZWFzZSgpOworICAgIHJldHVybiBzZWxl
Y3RlZFRleHR1cmU7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJl
TWFwcGVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggNzIzM2QwZGNjZDVjOGI1ZjVhOWM3
NTAzMGU1NTkxYmI0YjM1MjM0MC4uNjczMGQ4ZTdiZGFmZjE2NWUwNzg4NzI2MTBjOTE4MDk3MjBk
MmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgPSAwOwogICAgIHZpcnR1
YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPEJpdG1hcFRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWlu
dGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkg
eyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRt
YXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIHZp
cnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3Qg
SW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzID0gQml0bWFwVGV4dHVyZTo6U3Vw
cG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0gcDsgfQogICAgIHZvaWQg
c2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dyYXBNb2RlID0gbTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNWMwNmQzYjRiYWIyZjc1MWY5ODFmZjdiNTgyZTZkLi45
OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVmYzIxMjY1ZDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC03NDYsNyAr
NzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVyR0w6OmNsaXBCb3VuZHMoKQogICAgIHJldHVy
biBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3NvckJveDsKIH0KIAotUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgcmV0dXJuIEJp
dG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRleHQzRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgK
aW5kZXggYWNjNzhlOGM4NTFlYzY3ZmEyMGRmYjM4NTBjN2Q1N2UyYzQ2YTlhOS4uZTdjODBlOTI2
OTQ1YTBlNWNjOWE0Zjk0OWM4ODU3ZDAxZTM5NGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRDbGlwKCkgb3ZlcnJpZGU7CiAgICAg
SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUoMjAwMCwgMjAwMCk7IH0KLSAgICBQ
YXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlkZTsKKyAgICBS
ZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlOwogICAgIGlubGluZSBH
cmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHQzRC5nZXQoKTsgfQogCiAgICAgdm9pZCBkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4
dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiYsIGludCBwYXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKaW5kZXggZDM5Y2ZmY2JiNzg4OTFmZTExZTVlOGM0YmExOGVjODcyOWExNGM2Mi4uNzli
ODk1NDY3MWM2M2M1YWMzZWVhMmUyZGQzM2U4MzMyYjA2ZDljNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAg
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlv
bnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2htZW50KTsKICAgICBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKQEAgLTM3Niwx
NiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVy
OjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwCiAgICAgICAgIG1fc3RhdGUubWFz
a0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAgICAgc3VyZmFjZSA9IHN1cmZhY2UtPmFwcGx5
RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMpOwogICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICByZXR1
cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBzdXJmYWNlLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG9wdGlvbnMudGV4dHVyZU1h
cHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRUcmFuc2Zvcm0udHJhbnNsYXRl
KG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICB0
YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwotICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVjdCwgdGFyZ2V0VHJh
bnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUo
c3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQw
NSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRp
YXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcAogICAgIH0KIAogICAgIGlmIChy
ZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAgICAgICBjb21taXRT
dXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNlLCByZWN0LCAxKTsKKyAgICAgICAgY29tbWl0
U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwogICAgICAgICByZXBs
aWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC02MzcsOSArNjM3LDkgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9WaWV3cG9y
dCkKICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKIH0KIAotdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRCYWNraW5nU3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYgYmFja2lu
Z1N0b3JlKQogewotICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOworICAgIG1fYmFj
a2luZ1N0b3JlID0gV1RGTW92ZShiYWNraW5nU3RvcmUpOwogfQogCiBib29sIFRleHR1cmVNYXBw
ZXJMYXllcjo6ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDNiMWMxNmIwYjEzMmY1MGM2ODMzMDJlM2ViMzdi
NmUxNjJiMTU0ZTcuLmJlZDFmNmNkNjViMTk2YmJkNjk5OGZkYzEzNmQ4YzExODY2N2UxMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJBbmltYXRpb25zJik7CiAgICAg
dm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQo
KSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQotICAgIHZvaWQgc2V0QmFja2lu
Z1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4pOworICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlKFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiYmKTsKIAog
ICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29sIGRlc2NlbmRhbnRzT3JTZWxmSGF2
ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYpOwogICAgIHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMmKTsKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50
b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUm
KTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgcGFpbnRX
aXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgcGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaAppbmRleCA4NTE0YTRmNzM2YTU2ZDM1OGU0ZDEyN2RiZTgyNjhkNzI5MTZk
YWQ0Li40MjM4YzVkOGU0ZGEwMmE5MzQ3NDAyMzJlNWYwYTFhMDQzZTY3ZWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zMiw3ICszMiw3IEBA
IGNsYXNzIFRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9
CisgICAgc3RhdGljIFJlZjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKTsg
fQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpIHsgfQogCiAg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggZjg5NzE0ODlhZmQ4ZTU4ZTU3YjQzMzk2NWJhMGQyZmNiZTQ5NDc1ZC4uYTI2NjJlZjBi
OTY1NjI5OGI4NmUwNTgxZTYxNTFlYTY4N2RiOWNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTYyMyw3ICs2MjMs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAg
ICAgICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIAogICAgICAgICBpZiAo
IW1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcpIHsKLSAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcgPSBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCht
X2NvbXBvc2l0ZWRJbWFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nID0gbV9jb29yZGluYXRvci0+Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKm1fY29t
cG9zaXRlZEltYWdlKTsKICAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmctPmFk
ZEhvc3QodGhpcyk7CiAgICAgICAgICAgICBtX2xheWVyU3RhdGUuaW1hZ2VJRCA9IG1fY29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmctPmlkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjI1MTExZGJlNTQy
ZmNiYzM1Yjc3ZmYwOWUzZmZiYWEzMTMyODdmLi5iNzc0ZTAwNWZjMDE1YzQ1MDJjZmRlY2U0ODAx
N2QxMTcyYzM2YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRmx1c2hpbmdM
YXllckNoYW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRzUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxDb29yZGluYXRlZEltYWdl
QmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UqKSA9IDA7CisgICAgdmly
dHVhbCBSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJmYWNlKGNv
bnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJ
RCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5k
ZXggZjUyOTQ3NTVhMjMzNjU1YzMwNjY1NzFjZjYzOWJlY2I1MGMwMzA1MC4uNTYwYzJlMTY3MjFj
NjY4MjczZWZmZDI3ZWMxOTI5YTE1MjZiYzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC01NywxNCArNTcsMTQgQEAg
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCgKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEPihpbWFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xpZW50KiBj
bGllbnQsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQorUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y3JlYXRlKENsaWVudCYgY2xpZW50LCBSZWY8
SW1hZ2U+JiYgaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZElt
YWdlQmFja2luZyhjbGllbnQsIGltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcoY2xpZW50LCBXVEZNb3ZlKGltYWdlKSkpOwogfQogCi1Db29y
ZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQotICAgIDogbV9jbGllbnQoY2xpZW50KQotICAg
ICwgbV9pbWFnZShpbWFnZSkKK0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRlZElt
YWdlQmFja2luZyhDbGllbnQmIGNsaWVudCwgUmVmPEltYWdlPiYmIGltYWdlKQorICAgIDogbV9j
bGllbnQoJmNsaWVudCkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX2lk
KGdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQobV9pbWFnZS5nZXQoKSkpCiAgICAgLCBtX2Ns
ZWFyQ29udGVudHNUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjbGVhckNv
bnRlbnRzVGltZXJGaXJlZCkKICAgICAsIG1faXNEaXJ0eShmYWxzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKaW5kZXggYjg2MDNjNjhl
NjM2ODRjYjdlZTRkY2U4ZDI1MjYyNmU5ZjFmZGFlYy4uNGM2OWU1ODI2NjlmZTI3ODlhYWM2YWEx
MmMzM2I1NWFhYTcyN2I5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIGJvb2wgaW1hZ2VCYWNraW5nVmlzaWJsZSgpID0gMDsKICAgICB9OwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGllbnQqLCBQ
YXNzUmVmUHRyPEltYWdlPik7CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEltYWdlQmFja2lu
Zz4gY3JlYXRlKENsaWVudCYsIFJlZjxJbWFnZT4mJik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcoKTsKIAogICAgIHN0YXRpYyBDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoSW1hZ2UqKTsKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOworICAgIENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nKENsaWVudCYsIFJlZjxJbWFnZT4mJik7CiAKICAgICB2b2lkIHJlbGVhc2VT
dXJmYWNlSWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlJZk5lZWRlZChib29s
JiBjaGFuZ2VkVG9WaXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4IDFlNThiZWUwYWYwMTRlNjFmZTcwYmU5OGUzZTM0
MmQwZjhmNjRlNDIuLjBkODgyMGU5ZjNkNmZkNzczNWQ1NzBiMzY0MTQ4OGY1M2JkN2VjZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNw
cApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlz
IGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopOworUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTIgKzM4LDEyIEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogewogfQogCi1QYXNzUmVmUHRy
PEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKK1Jl
ZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihuYW1lKTsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGltZyA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoKTsKLSAgICBpbWctPnNldERhdGEoYnVmZmVyLnJlbGVhc2UoKSwgdHJ1ZSk7Ci0gICAgcmV0
dXJuIGltZy5yZWxlYXNlKCk7CisgICAgYXV0byBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKG5hbWUpOworICAgIGF1dG8gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGlt
Zy0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlciksIHRydWUpOworICAgIHJldHVybiBpbWc7CiB9CiAK
IGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVAoSEJJVE1BUCBibXApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKaW5kZXggMGQwOThiZGYzZjIz
Yzg5OWU0YWViMjdiNGYyMDU1ZmUyYjY2NmNjNi4uMTZiNmI1ZGZmODAwNWM0ZmE0Yjg3MjIzODVk
Mjk3MzM0ODRiMmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmNwcApAQCAtOTMsMjAgKzkzLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93KEhXTkQgcGFyZW50SHduZCkKIH0KIAogI2lm
IFVTRShDQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9v
dENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJvb3RDaGlsZCkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIoUmVm
PFBsYXRmb3JtQ0FMYXllcj4mJiByb290Q2hpbGQpCiB7Ci0gICAgaWYgKG1fcm9vdENoaWxkID09
IHJvb3RDaGlsZCkKKyAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9vdENoaWxkLnB0cigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9yb290Q2hpbGQpCiAgICAgICAgIG1fcm9vdENoaWxk
LT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwogCi0gICAgbV9yb290Q2hpbGQgPSByb290Q2hpbGQ7
Ci0KLSAgICBpZiAoIW1fcm9vdENoaWxkKSB7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9yb290Q2hpbGQgPSBXVEZNb3Zl
KHJvb3RDaGlsZCk7CiAKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkgewogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QgPSBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBjZGQwY2EzMDQxMGJhNGE2
YzkyOGRmYjllOWZmNmE5YzU1ZThkMTlkLi40YTIwZDllMGE3YmNjZTIwNTBjNDc0ZjE3ODQwYTIw
ZjE2YTJiZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKENBKQogICAgIFBsYXRm
b3JtQ0FMYXllciogcm9vdENoaWxkTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDaGlsZC5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+KTsKKyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCmluZGV4IDFiOTIyOWU4NjY1
MmQxOTVkYWE3YjBkYWQyMjczYmIzYmFmMjJhYzEuLjlkZmI1YWVkNTkyYjllYTNhMGMwZWZiMjI5
ZmU4YWI0NDQ1NDhmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIElEMkQx
Qml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsCiAgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1Db250ZXh0KTsK
IAogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5CcnVzaCA9IG51bGxwdHI7Ci0gICAgSFJF
U1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdl
LT5uYXRpdmVJbWFnZSgmY29udGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZi
cnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9y
bUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKHBhdHRlcm5JbWFnZS5uYXRpdmVJbWFnZSgmY29u
dGV4dCkuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZw
YXR0ZXJuQnJ1c2gpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICAgICByZXR1cm4gcGF0
dGVybkJydXNoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1NoYXJlZEdESU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCmluZGV4IDg5ZTQyMTkzZGVmMjFiODg4ZTFhMjBlMmEx
YTI3N2I5YjdkNGM3ZWYuLjRjZTM2N2I2ZDVmODE5YTU5ZGI4MjU1YjM0YmViZDBhZGUyYWFlOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRH
RElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hh
cmVkR0RJT2JqZWN0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU2hhcmVkR0RJT2JqZWN0
X2gKICNkZWZpbmUgU2hhcmVkR0RJT2JqZWN0X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTaGFyZWRHRElPYmpl
Y3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRHRElPYmplY3Q8VD4+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4g
b2JqZWN0KQorICAgIHN0YXRpYyBSZWY8U2hhcmVkR0RJT2JqZWN0PiBjcmVhdGUoR0RJT2JqZWN0
PFQ+IG9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkR0RJ
T2JqZWN0PFQ+KFdURk1vdmUob2JqZWN0KSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRHRElPYmplY3Q8VD4oV1RGTW92ZShvYmplY3QpKSk7CiAgICAgfQogCiAgICAgVCBn
ZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKaW5kZXggNDI1NGVmOTA5N2I4ZDIzY2M2MDlkNTAzNzZiMzkwNDJiOTcxYjc5
ZS4uZTViZjA0ZGIyM2QyYWNiOTc5NWEzMmU5YTQ4ZTgzYjJiMzg1MmY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0xNDIs
NyArMTQyLDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMKICAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlJFRkVSRU5DRTogewogICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlT3BlcmF0
aW9uID0gZG93bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24p
OwogICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VGaWx0ZXIocmVuZGVyZXIsICpw
cmV2aW91c0VmZmVjdCwgcmVmZXJlbmNlT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJlZmVyZW5j
ZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0KTsKKyAgICAgICAgICAgIHJlZmVyZW5j
ZU9wZXJhdGlvbi5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0LmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAKaW5kZXggYmQxZTU1ZTQwNzU3OTBiNzYxMGZkNTljYmJkOWViOGE2MDU0YjcwZi4uMWE5
NGE1NjMwYjA3MDU0MzAwNjJkMzVjMWQyNzc0ZmU3MjFiYzg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcApAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uKCkKIAogUmVmUHRyPElt
YWdlPiBSZW5kZXJJbWFnZVJlc291cmNlOjppbWFnZShjb25zdCBJbnRTaXplJikgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIobV9yZW5kZXJlcikgOiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgcmV0dXJuIG1fY2FjaGVk
SW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKG1fcmVuZGVyZXIpIDogJklt
YWdlOjpudWxsSW1hZ2UoKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZVJlc291cmNlOjplcnJvck9j
Y3VycmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDAyMzgyNTI5MmUzYzQzM2JiYzZhZDk1MTljM2Y2YWQ2NGIzYjczNjIuLjI4ZjAxZmJkYTA4
M2RhZjk5ZTkzZDQ2M2ExMmI4N2I2YjY4M2JiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMzcxNCwxMiArMzcxNCwxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXlvdQogICAgIFJlZlB0cjxJbWFnZT4gcmVzaXplQ29ybmVySW1hZ2U7CiAgICAgRmxvYXRT
aXplIGNvcm5lclJlc2l6ZXJTaXplOwogICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSA+PSAyKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJ
bWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlSGlSZXMoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IHJlc2l6ZUNvcm5lckltYWdlSGlSZXMoJkltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXJAMngiKS5sZWFrUmVmKCkpOwog
ICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdlSGlSZXM7CiAgICAg
ICAgIGNvcm5lclJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNpemUoKTsKICAgICAg
ICAgY29ybmVyUmVzaXplclNpemUuc2NhbGUoMC41Zik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VMb1JlcyhJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigp
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1h
Z2VMb1JlcygmSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5l
ciIpLmxlYWtSZWYoKSk7CiAgICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVy
SW1hZ2VMb1JlczsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFn
ZS0+c2l6ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlYTkzNmE0ZGM4MmViYWE0
YTZhZDkyNWVhN2FjYzY4MzRmOTQwN2QwLi4wZmI4MjgwZTE5ZTEwNzZmNjE2ZmIzYThkNWIzOTk5
YzM1MGYxOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGF0dGVy
bkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCB1bnMKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCiAgICAgYXV0byBwYXR0
ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7Ci0gICAgcGF0dGVybkRh
dGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UsIHRydWUsIHRydWUpOwor
ICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJl
bGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNw
YWNlIHRyYW5zZm9ybWF0aW9uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDc1ZjI0YzRlMjY3YTgzNzRhOGEyODgwODQy
YzRkNmM3OWNlNjM5Y2EuLmNhMGY2OGZhOWFiOTZmOTZhYzYzYmQ2ZWYxNWIyMzYyY2FmYjA3YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xMTUsMzEgKzExNSwzMCBAQCBib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikKICAgICAgICAg
cmV0dXJuIGRpZmZ1c2VMaWdodGluZy0+c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFu
dCgpKTsKIAotICAgIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSA9IGNvbnN0X2Nhc3Q8TGlnaHRT
b3VyY2UqPihkaWZmdXNlTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOworICAgIGF1dG8mIGxpZ2h0
U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSY+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRT
b3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNW
R0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFTU0VSVChsaWdo
dFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNl
dEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3Vy
Y2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxpZ2h0RWxlbWVu
dC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRFbGVtZW50LT55
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0
UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOworICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOwogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CisgICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNB
dFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50
c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WihsaWdodEVs
ZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFy
RXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFy
RXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVB
bmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRpbmdDb25lQW5n
bGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25l
QW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xODgsOCArMTg3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIGNvbnN0
IENvbG9yJiBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xv
cigpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
RGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRp
ZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgp
LCBsaWdodFNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNTU2
NWI5MWQxMmI4ZGVjNzc3NTZlNTBlMGYwZjk1NDMyY2FlMmJiMi4uMTcwNDM3ZjMyZmIzM2I0ZmRl
ZDYzZTRjZjljZmMxNDhkOWNmZDFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTI2LDMxICsxMjYsMzAgQEAgYm9v
bCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiBlZmZlY3QKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyKQogICAgICAgICByZXR1cm4gc3BlY3VsYXJMaWdodGluZy0+c2V0U3Bl
Y3VsYXJFeHBvbmVudChzcGVjdWxhckV4cG9uZW50KCkpOwogCi0gICAgTGlnaHRTb3VyY2UqIGxp
Z2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSo+KHNwZWN1bGFyTGlnaHRpbmctPmxp
Z2h0U291cmNlKCkpOworICAgIGF1dG8mIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNv
dXJjZSY+KHNwZWN1bGFyTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOwogICAgIGNvbnN0IFNWR0ZF
TGlnaHRFbGVtZW50KiBsaWdodEVsZW1lbnQgPSBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0
RWxlbWVudCh0aGlzKTsKLSAgICBBU1NFUlQobGlnaHRTb3VyY2UpOwogICAgIEFTU0VSVChsaWdo
dEVsZW1lbnQpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphemltdXRoQXR0cikK
LSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+YXpp
bXV0aCgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEF6aW11dGgobGlnaHRFbGVt
ZW50LT5hemltdXRoKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9u
QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRFbGV2YXRpb24obGlnaHRFbGVt
ZW50LT5lbGV2YXRpb24oKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRFbGV2YXRp
b24obGlnaHRFbGVtZW50LT5lbGV2YXRpb24oKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp4QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRYKGxpZ2h0RWxlbWVu
dC0+eCgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFgobGlnaHRFbGVtZW50LT54
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRZKGxpZ2h0RWxlbWVudC0+eSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnpBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFoobGlnaHRF
bGVtZW50LT56KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WihsaWdodEVsZW1l
bnQtPnooKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKQot
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WChsaWdodEVsZW1lbnQtPnBv
aW50c0F0WCgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WChsaWdo
dEVsZW1lbnQtPnBvaW50c0F0WCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBv
aW50c0F0WUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRZKGxp
Z2h0RWxlbWVudC0+cG9pbnRzQXRZKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0
UG9pbnRzQXRZKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRZKCkpOwogICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5z
ZXRQb2ludHNBdFoobGlnaHRFbGVtZW50LT5wb2ludHNBdFooKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRQb2ludHNBdFoobGlnaHRFbGVtZW50LT5wb2ludHNBdFooKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cikKLSAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLT5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3Bl
Y3VsYXJFeHBvbmVudCgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFNwZWN1bGFy
RXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOwogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKQotICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2UtPnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdD
b25lQW5nbGUoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRMaW1pdGluZ0NvbmVB
bmdsZShsaWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5LDggKzE5OCw3IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgY29uc3QgQ29sb3ImIGNvbG9yID0gcmVuZGVy
ZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNv
bG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0
TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVh
dGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3Bl
Y3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgp
LCBsaWdodFNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKaW5kZXggMzk5ZDZiYWU1YTYwNGUz
ZDNkYzkzOTM3NjU0M2YyNTVhMzQwMWUzYy4uNDRkMGNiYTgxZWIxNjY4MjMyZjA0ZmY2NWI2MGIy
MDMzNjU5ZjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8q
IGltYWdlID0gZmluZEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2Up
Ci0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1h
Z2U6Om51bGxJbWFnZSgpOwogICAgIEFTU0VSVCghaW1hZ2UtPnNpemUoKS5pc0VtcHR5KCkpOwog
ICAgIHJldHVybiBpbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5jcHAKaW5kZXggODU3MTg1MDg0MTAyZDBkNjYxYTMwNWM2ZGYxYzU5NjI4
NTZlYWU4MC4uMzU3MjA3MTEyY2EyMTE4ZmQwMmY3NjFhY2FhNTExZDg2NTJiMDY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNj
cmVlbigpCiAgICAgOjpTaG93V2luZG93KG1fZnVsbHNjcmVlbldpbmRvdy0+aHduZCgpLCBTV19T
SE9XKTsKIAogI2lmIFVTRShDQSkKLSAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGls
ZExheWVyKG1fcm9vdENoaWxkKTsKKyAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJvb3RDaGls
ZExheWVyKCptX3Jvb3RDaGlsZCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHZpZGVvTGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihtX3ZpZGVvRWxlbWVudC0+cGxhdGZv
cm1MYXllcigpKTsKICAgICBBU1NFUlQodmlkZW9MYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNw
cAppbmRleCBiZGQ5NDE4YjdmMzBhODcxNDllN2FhMWRjNzRlYjJkNmMwOWQ3Y2E2Li43YzNmYmIy
NzNmNjE3NGI3NDgxZDRjNTVjNWI3M2EyZTUxMmZjZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5j
cHAKQEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhN
RTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3Nz
LXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBQYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUp
CiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2Ug
aWQKQEAgLTIyNSwxNyArMjI1LDE3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgZWxzZSBpZiAo
IXN0cmNtcChuYW1lLCAiZnNWaWRlb1BsYXkiKSkKICAgICAgICAgaWRyID0gSURSX0ZTX1ZJREVP
X1BMQVk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBIUlNSQyByZXNJbmZvID0gRmluZFJlc291cmNlKGdJbnN0YW5jZSwgTUFLRUlO
VFJFU09VUkNFKGlkciksIEwiUE5HIik7CiAgICAgaWYgKCFyZXNJbmZvKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSEFORExFIHJlcyA9IExvYWRSZXNv
dXJjZShnSW5zdGFuY2UsIHJlc0luZm8pOwogICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdm9pZCogcmVzb3VyY2UgPSBMb2NrUmVz
b3VyY2UocmVzKTsKICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWduZWQgc2l6ZSA9IFNpemVvZlJlc291cmNlKGdJ
bnN0YW5jZSwgcmVzSW5mbyk7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVzb3VyY2UpLCBzaXplKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDQwMDY1NTg2NzVh
MzJhOWUzN2M5OTFhZjJhMjZkNjc4YTMwYzc1ZDkuLjc2MTVmMDkxZGYzNzNjN2FlOGI1ODc5NTli
MTRiZmZhMTYxOTg3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcApAQCAtMzQ5LDkgKzM0OSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpj
cmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYg
KG1fYmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7Ci0gICAgbV9iYWNraW5nU3RvcmVzLmFkZChsYXllciwg
YmFja2luZ1N0b3JlKTsKLSAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSk7
CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCk7CisgICAgbV9iYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlLmNvcHlSZWYo
KSk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShXVEZNb3ZlKGJhY2tpbmdTdG9yZSkpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcikKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4
dHVyZU1hcHBlckxheWVyKiBsYQogICAgIGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKDApOworICAgIGxheWVyLT5zZXRCYWNr
aW5nU3RvcmUobnVsbHB0cik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpy
ZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCA3YWY2NjQ4YjBlMTc4NjYzYWI3OGY5NzhmODkzY2U1NWRkNjQ1MmZiLi41M2YwNWNlMDAy
MmEzNmExMjU0MjJhNWU1MTk0YWE0YzM2YmI4N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtOTY0LDcgKzk2NCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDdXJzb3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ3Vyc29yJiBj
dXJzb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghaXNWYWxpZEltYWdlUHJl
c2VudCkgewotICAgICAgICBjdXJzb3IgPSBDdXJzb3IoSW1hZ2U6Om51bGxJbWFnZSgpLCBJbnRQ
b2ludCgpKTsKKyAgICAgICAgY3Vyc29yID0gQ3Vyc29yKCZJbWFnZTo6bnVsbEltYWdlKCksIElu
dFBvaW50KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZTU1
NzJlMTZkNWUwYzc4MzM5ZjY2YTAzYzY1MzhhNjVjMzViOWNjNy4uODExZWVlYTIwYjRjODIzNGM2
NDM4OTc0MzAyZGRlNmFjZmM2MTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAgLTIxMSwxMSArMjExLDExIEBAIHZv
aWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXll
cklEIGlkLCBDb29yZGluYXRlZEdyCiAgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5hcHBlbmQo
c3RkOjptYWtlX3BhaXIoaWQsIHN0YXRlKSk7CiB9CiAKLVJlZjxDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQo
SW1hZ2UqIGltYWdlKQorUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSYgaW1hZ2UpCiB7Ci0g
ICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoaW1hZ2UpOwotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9pbWFnZUJhY2tpbmdzLmVuc3VyZShpbWFnZUlELCBbdGhpcywgaW1hZ2VdIHsK
LSAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUodGhpcywgaW1h
Z2UpOworICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCA9IENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKCZpbWFnZSk7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCAm
aW1hZ2VdIHsKKyAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUo
KnRoaXMsIGltYWdlKTsKICAgICB9KTsKICAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggZDJjYTc4NGIzOTA0YjY2YjZlYjY4YjkxNDhmNGNjYWFkZTQxNmFk
MS4uN2M1NDAxODczMjBlYmJlN2ZkOGQyN2JmNDgxMDE3MjYzNGEyMjVlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29t
cG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaApAQCAtMTEx
LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xp
ZW50CiAgICAgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzOyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNv
cmU6OkltYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIC8q
IGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlOjpDbGllbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAppbmRleCA3NjFiMmEy
NDQ2MWEzNDFjZGNjZTc5MjAyYWMzY2U3YzkyNTMxNjY5Li4yZGY0MmU5NDczMGYxNjM4M2Y5YjVh
NzMyZTgyOTZjYjVjMWEyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21w
b3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlCiAgICAgcmV0dXJuIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChmaWx0ZXJzKTsKIH0KIAotUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lcikKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKIHsKICAgICBhdXRv
IHJlc3VsdCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgb3duZXIs
IG1fY29udGV4dCk7CiAKQEAgLTUyLDEyICs1MiwxMiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cgogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQor
UmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUo
cGxhdGZvcm1MYXllciwgb3duZXIsIG1fY29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQVJl
bW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmlt
YXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhp
Y3NMYXllckNBUmVtb3RlLmgKaW5kZXggODM1ZTRiNzM0ODk0ODhjOWQxNjM2MWVhMDJkMWE1ODli
YTA0OWY4Yi4uZTRhOTI1N2E2OWFiMmFlZmQxZWE4NmQwYzhiYzU2Yzg1Njc4YTc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dy
YXBoaWNzTGF5ZXJDQVJlbW90ZS5oCkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgYm9vbCBpc0dyYXBoaWNzTGF5ZXJDQVJlbW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUs
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOwotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1MYXllciosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92
ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3Jl
YXRlUGxhdGZvcm1DQUFuaW1hdGlvbihXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmlt
YXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpIG92ZXJyaWRlOworICAgIFJlZjxXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRl
UGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNhbid0IGN1cnJlbnRseSBwcm94eSBkaXJlY3Rs
eSBjb21wb3NpdGVkIGltYWdlIGNvbnRlbnRzLCBzbyBvcHQgb3V0IG9mIHRoaXMgb3B0aW1pemF0
aW9uLgogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFn
ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5oCmluZGV4IGZmNzRjNzMzYjZjNDNhZjIxYmIwZTgxZTliOTQzMmY2NjZjY2Rm
OWIuLjYzMzliMjIzMDY2MzhlMDJmMGYwOWYxY2ZlODcyZTE1NjNiNzQ5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQppbmRleCAxNjNhNzJiMjAyMmRkOGE5MDA1
OTc1NjA0ZDZhNDhlMTg0ODFhNGVmLi5iMTAwMzcwNDkwMjFlMjY4MmZjZDlhYWMzYTEzYTExYzhj
Njc4NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0zMDYsOSAr
MzA2LDkgQEAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGU6OmNyZWF0ZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjoKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKHR5cGUsIGtleVBhdGgpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5
KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5p
bWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKKyAgICBhdXRvIGFu
aW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBhdGgoKSk7CiAgICAgCiAgICAg
YW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0
RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KCkgY29uc3QK
ICAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oKnRoaXMpOwogICAgIGFuaW1h
dGlvbi0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKCkpOwogCi0gICAgZG93bmNhc3Q8
UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4oKmFuaW1hdGlvbikuc2V0SGFzRXhwbGljaXRCZWdp
blRpbWUoaGFzRXhwbGljaXRCZWdpblRpbWUoKSk7CisgICAgZG93bmNhc3Q8UGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZT4oYW5pbWF0aW9uLmdldCgpKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZSho
YXNFeHBsaWNpdEJlZ2luVGltZSgpKTsKICAgICAKICAgICAvLyBDb3B5IHRoZSBzcGVjaWZpYyBC
YXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMuCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9PSBLZXlm
cmFtZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309771</attachid>
            <date>2017-05-11 13:47:32 -0700</date>
            <delta_ts>2017-05-11 13:59:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511134731.patch</filename>
            <type>text/plain</type>
            <size>177256</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5lYzczZTU4ZWY2MmUyY2FkYWYyOTI4
MmZlNjkzOGQ0ZTFiOGI3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRy
KTsKICAgICB9CiAKICAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJp
dmF0ZToKICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8v
IEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1v
dW50LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KGFtb3VudCgpLCB0eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAg
ICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2
YXRlOgogLy8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFy
aWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBl
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3Vu
dCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbW91bnQ7IH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RG
TW92ZShzdGREZXZpYXRpb24pKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb247IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9j
YXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRp
b24oKSwgY29sb3IoKSkpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi54KCk7IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1v
dmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4
MzA2ZmM0NWQ4MWEwNWNlNjEuLmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3Jt
YXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVT
aXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNz
UmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0
ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZm
YWZlZTdiZTI2MmM0NDUwZC4uNTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlPiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4
LCBCR1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lk
IGxvYWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGJkMThlNWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3
MmFhN2RkZGQ1ZjM0OTRlZWMzNDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBH
UmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4s
IGluZGV4LCBwYWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3
MjhkM2MwZWM3Mi4uZDNlMDRmNmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAg
c3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAot
ICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcElt
YWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJh
MmM1ZmMwN2U3YjBhYTU2NTEzMWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3
Zjc4ZWI5OWMxM2EwNTBkNGZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9y
bWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBp
ZCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoKSB7IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5h
ZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGN1ZUZvcm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1
ZSgqZGF0YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGNjM2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEu
LjZhOTA3NDRlNTkwOTAxOTM5MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2Jj
MGRlZmM5ZGY1NGViM2Y1Li43OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7
CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlf
Z2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2No
YXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBn
c3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAg
ICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkq
PihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZh
ODRjZi4uYzI3MDcyNjBmMzEwNzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
ODUyLDcgKzg1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBp
bWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFp
bnRpbmdPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBiYTQ2YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41
ZWE3NmUzZmVhMTNkYzg3YTJjYWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBp
bmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
Y3BwCmluZGV4IDY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmNiNmRm
ZjVmMTUwNDM3NTEzZDU5YWYxMWYwZWJlNjM2YWYyZjc4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIg
KzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlw
ZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkK
K3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1f
cGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3Bs
YXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSkpOwogfQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQx
Mjc1NGVlMTZiYTkwMjJjZWFkZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNl
ZjkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhcios
IHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7
Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQ
bGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggOTIwOTViNjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYy
Y2Q1NmE4NDZiMzQ3NjEyMzQ0ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgogI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmNwcAppbmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhj
YTE2ZjIwLi44YTJmZjQzYWNhYmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXli
YWNrUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9E
RUJVRygidHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1w
bGUoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6Omlz
TWFpblRocmVhZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdz
dEVsZW1lbnQqIGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5x
dWV1ZWRUaW1lID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVk
aWFTYW1wbGUqIHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVk
aWFTYW1wbGUuZ2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0
aWNfY2FzdDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBp
ZiAoc2FtcGxlLT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1w
bGUoKSkpIHsKICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+
c2FtcGxlKCk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVm
ZmVyKGdzdFNhbXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmlu
ZGV4IDA4ZjBlNjBkMzMzMmY2ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZm
YzE2NGY2MjgxYjY5Yzc4NDc3Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQ
aXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0g
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdl
YmJlNWQ0Li41NzViM2E1ZWY1NDVlNGI2YWFiYzAxZGIyZmM4YjA0MjM0NGE0NDgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAg
LTM2LDE3ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlPiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQor
c3RhdGljIFJlZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29u
TmFtZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNl
cy9pbWFnZXMvJXMiLCBpY29uTmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRv
cHRHUmVmKGdfcmVzb3VyY2VzX2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9P
S1VQX0ZMQUdTX05PTkUsIG51bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+
c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0
X3NpemUoZGF0YS5nZXQoKSkpLCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGljb247CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBmaWxlbmFt
ZSkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdzaXplIGxlbmd0
aDsKQEAgLTYwLDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZv
cm1EYXRhKCkKIHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRNaXNzaW5nSW1h
Z2VJY29uRnJvbVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2Fk
TWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBp
Y29uU2l6ZSA9IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAxNjsKLSAgICBS
ZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0
byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8R3RrSWNvbklu
Zm8+IGljb25JbmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29uX3RoZW1lX2dl
dF9kZWZhdWx0KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwgR1RLX0lDT05f
TE9PS1VQX05PX1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3RrX2ljb25faW5m
b19nZXRfZmlsZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+c2V0RGF0YShi
dWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9p
bmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29uLT5zZXREYXRh
KFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBpY29uOwogICAgIH0KIAog
ICAgIHJldHVybiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQogCi1QYXNzUmVmUHRy
PEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKK1Jl
ZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1pc3NpbmdJbWFnZSIpID8gbG9h
ZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAzY2FjZThlZDliZWQ4MmIzOGNj
MzgxOWQzM2JmZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThkNTc1YmFlZjE3YzY3NTY1NmMy
MTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgaGJf
dGFnX3QgSGFyZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdrJywgJ2UnLCAncicsICduJyk7
CiAKIGNsYXNzIEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RmFjZUNhY2hlRW50
cnk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWNlQ2FjaGVFbnRyeT4gY3Jl
YXRlKGhiX2ZhY2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZhY2VDYWNoZUVudHJ5PiBjcmVh
dGUoaGJfZmFjZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGZhY2UpOwotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZhY2UpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkpOwogICAgIH0KICAgICB+RmFj
ZUNhY2hlRW50cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5kZXggNjMxNzlmZTgxNWU0MDU0
NzMzZDQ5OWQ3NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0YWYxYzA5NDhjZGU4ZWVhZTkx
MjU4MDY5OWRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
IDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qg
a2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZv
bnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCisgICAgc3Rh
dGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURh
dGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOwogICAg
IH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3Yzk2OGYzNmY1ODgwZGQ0MGZj
NWUwM2U5ZGJiYmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlmOWU4NzA5MTE4OTNiMmIyY2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9y
bURhdGEoKQogICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdl
PiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBO
U0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQnVuZGxl
RmluZGVyIGNsYXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZv
clJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJw
bmciXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3NTRkMDJhNDJkZTVlMzM0NmUx
ZDMwYTM2ZDU0NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2IyNDJhOGEyNDY0ZGJiMDFlNzU3
YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgRm9udDsKIAogY2xh
c3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVh
dGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBzdGF0aWMgUmVmPE9wZW5UeXBl
TWF0aERhdGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0YShmb250KSk7CiAgICAgfQog
ICAgIH5PcGVuVHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDMyNDU2MzhhOGVm
ZTdhNTI5YTIzNmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVkZmM1YjY1NzdiOGU5MTIwOTU5
MjEyZWUyN2EwNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1
ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4g
MzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdz
ICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBw
bHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1
cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5OWI2YmNiZmI4YTI3M2U4ZjA1
YzI1ZWQyLi40NTA5NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUyZjdjZjM4MDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgZ2V0UGFzc2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRl
eHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFw
VGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChsYXN0KSB7Ci0g
ICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1f
ZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIsIGosIHNwYXJl
U3VyZmFjZSk7CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFj
ZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0
ZXIuY29weVJlZigpLCBqLCBzcGFyZVN1cmZhY2UuY29weVJlZigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IGM0YTgwMjI0
YTg3ZWM1Y2E4YjViYWYwNjkyZGQ0MTE0NGZjYzZhYWEuLjNhNGQ4MDQ3MzQyNmYyMTZmYzllZDFl
YjNhMGI2N2NmZDY4NGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTU5LDE2ICs1OSwxNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQg
Ynl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9iamVj
dCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBib29sIGlzQmFja2Vk
QnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBzdHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZpbHRlcjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAgICAgICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZpbHRlckluZm8oUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0gMCwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVyKGYpCisgICAgICAgIEZpbHRl
ckluZm8oUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVsbHB0ciwgdW5zaWduZWQgcCA9
IDAsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRyKQorICAgICAgICAgICAgOiBm
aWx0ZXIoV1RGTW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhwKQotICAgICAgICAgICAgLCBj
b250ZW50VGV4dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZShXVEZNb3ZlKHQp
KQogICAgICAgICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3ZjU1MDg4MmMzMGQ1ZmQwNmEy
NDIyMmVlYzgwYWMwNC4uYTAyNmY0YzUwOGM4ZjRlMmQyMzI0MDQ1YzMzNzA0Yzk1Njg2ZmMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC00NjgsNyAr
NDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFu
Z2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAKICAgICBpZiAo
bV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAgICAgICBtX2xheWVyLnNldEJh
Y2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1fbGF5ZXIuc2V0QmFja2luZ1N0
b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYg
RGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNldERlYnVnVmlzdWFscyhpc1No
b3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgo
KSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTcz
MDQ3ZjQ5MDU3OWIyZmEyYzFmM2QzZjg0ODkyN2ExOTAxNmMxOS4uMWY5ZTY4MjdkYTVkM2E1NTYz
ZjdkZWFkOWU1ZTIzZjNjOGFmZWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtMzIsMTEgKzMy
LDExIEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIFRleHR1
cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCi1QYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50
U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJ
bnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncykKIHsKICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbC0+YWNx
dWlyZVRleHR1cmUoc2l6ZSwgZmxhZ3MpOwogICAgIHNlbGVjdGVkVGV4dHVyZS0+cmVzZXQoc2l6
ZSwgZmxhZ3MpOwotICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmUucmVsZWFzZSgpOworICAgIHJl
dHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
PiBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggNzIzM2QwZGNjZDVj
OGI1ZjVhOWM3NTAzMGU1NTkxYmI0YjM1MjM0MC4uNjczMGQ4ZTdiZGFmZjE2NWUwNzg4NzI2MTBj
OTE4MDk3MjBkMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
Y29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgPSAwOwog
ICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIHZpcnR1YWwgUmVm
PEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBh
aW50aW5nKCkgeyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50
U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBj
b25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEp
OworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBv
b2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzID0gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0gcDsgfQog
ICAgIHZvaWQgc2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dyYXBNb2RlID0gbTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNWMwNmQzYjRiYWIyZjc1MWY5ODFmZjdi
NTgyZTZkLi45OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVmYzIxMjY1ZDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBA
IC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVyR0w6OmNsaXBCb3VuZHMoKQog
ICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3NvckJveDsKIH0KIAotUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQorUmVm
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAg
cmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRleHQzRCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTFlYzY3ZmEyMGRmYjM4NTBjN2Q1N2UyYzQ2YTlhOS4u
ZTdjODBlOTI2OTQ1YTBlNWNjOWE0Zjk0OWM4ODU3ZDAxZTM5NGJkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRDbGlwKCkgb3ZlcnJp
ZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBtYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUoMjAwMCwgMjAwMCk7
IH0KLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlk
ZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlOwogICAg
IGlubGluZSBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQogCiAgICAgdm9pZCBkcmF3RmlsdGVyZWQoY29uc3Qg
Qml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVu
dFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYsIGludCBwYXNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggZDM5Y2ZmY2JiNzg4OTFmZTExZTVlOGM0YmExOGVjODcyOWEx
NGM2Mi4uYWIzNzdmZTM5NTFkYzdhZTgyMmYzZTBjNjUyZTNjNDI5NzlkM2E4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0KIAot
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFj
ZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJp
dG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2htZW50
KTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsK
QEAgLTM3NiwxNiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwCiAgICAgICAgIG1f
c3RhdGUubWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAgICAgc3VyZmFjZSA9IHN1cmZh
Y2UtPmFwcGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMp
OwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsK
LSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAK
LXN0YXRpYyB2b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBzdXJm
YWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRUcmFuc2Zvcm0u
dHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgp
KTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwotICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVjdCwg
dGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJh
d1RleHR1cmUoc3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAog
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYgcmVj
dCkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRo
SW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcAogICAgIH0KIAog
ICAgIGlmIChyZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAgICAg
ICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNlLCByZWN0LCAxKTsKKyAgICAg
ICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwogICAg
ICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3AKICAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNh
U3VyZmFjZTsKICAgICB9CiAKLSAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNl
LCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOworICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKm1h
aW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKQEAgLTYzNyw5ICs2MzcsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQogICAgIG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZml4ZWRUb1ZpZXdwb3J0OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2lu
Z1N0b3JlKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShSZWZQdHI8
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4mJiBiYWNraW5nU3RvcmUpCiB7Ci0gICAgbV9iYWNr
aW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbV9iYWNraW5nU3RvcmUgPSBXVEZNb3ZlKGJh
Y2tpbmdTdG9yZSk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpkZXNjZW5kYW50c09y
U2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgK
aW5kZXggM2IxYzE2YjBiMTMyZjUwYzY4MzMwMmUzZWIzN2I2ZTE2MmIxNTRlNy4uYmVkMWY2Y2Q2
NWIxOTZiYmQ2OTk4ZmRjMTM2ZDhjMTE4NjY3ZTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29u
c3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9y
dChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4
ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUmVmUHRy
PFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAgdm9pZCBzeW5jQW5pbWF0aW9u
cygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBj
b25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludFJlY3Vy
c2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFVz
aW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwotICAg
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
LCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNl
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
dm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZv
aWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDg1
MTRhNGY3MzZhNTZkMzU4ZTRkMTI3ZGJlODI2OGQ3MjkxNmRhZDQuLjQyMzhjNWQ4ZTRkYTAyYTkz
NDc0MDIzMmU1ZjBhMWEwNDNlNjdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlcjsK
IAogY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmODk3MTQ4OWFmZDhlNThl
NTdiNDMzOTY1YmEwZDJmY2JlNDk0NzVkLi5hMjY2MmVmMGI5NjU2Mjk4Yjg2ZTA1ODFlNjE1MWVh
Njg3ZGI5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKCkKICAgICAgICAgICAgIHJlbGVhc2VJbWFn
ZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgICAgIGlmICghbV9jb29yZGluYXRlZEltYWdlQmFj
a2luZykgewotICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZyA9IG1fY29vcmRp
bmF0b3ItPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29tcG9zaXRlZEltYWdlLmdldCgp
KTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcgPSBtX2Nvb3JkaW5hdG9y
LT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCgqbV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAg
ICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+YWRkSG9zdCh0aGlzKTsKICAgICAgICAg
ICAgIG1fbGF5ZXJTdGF0ZS5pbWFnZUlEID0gbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+aWQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IGJmMjUxMTFkYmU1NDJmY2JjMzViNzdmZjA5ZTNmZmJhYTMx
MzI4N2YuLmI3NzRlMDA1ZmMwMTVjNDUwMmNmZGVjZTQ4MDE3ZDExNzJjMzZjMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJh
Y2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBmNTI5NDc1NWEyMzM2NTVjMzA2
NjU3MWNmNjM5YmVjYjUwYzAzMDUwLi41NjBjMmUxNjcyMWM2NjgyNzNlZmZkMjdlYzE5MjlhMTUy
NmJjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZElt
YWdlQmFja2luZy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+
KGltYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgaW1h
Z2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEltYWdlQmFja2luZyhj
bGllbnQsIFdURk1vdmUoaW1hZ2UpKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpD
b29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCYgY2xp
ZW50LCBSZWY8SW1hZ2U+JiYgaW1hZ2UpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwg
bV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1faWQoZ2V0Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJDb250ZW50c1RpbWVyKCp0aGlz
LCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKQogICAg
ICwgbV9pc0RpcnR5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCBiODYwM2M2OGU2MzY4NGNiN2VlNGRjZThkMjUyNjI2
ZTlmMWZkYWVjLi40YzY5ZTU4MjY2OWZlMjc4OWFhYzZhYTEyYzMzYjU1YWFhNzI3YjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbWFnZUJhY2tp
bmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCosIFBhc3NSZWZQdHI8SW1hZ2U+KTsKKyAg
ICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGUoQ2xpZW50JiwgUmVm
PEltYWdlPiYmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEltYWdlQmFja2luZygpOwogCiAg
ICAgc3RhdGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgZ2V0Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRChJbWFnZSopOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqLCBQ
YXNzUmVmUHRyPEltYWdlPik7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50Jiwg
UmVmPEltYWdlPiYmKTsKIAogICAgIHZvaWQgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOwogICAg
IHZvaWQgdXBkYXRlVmlzaWJpbGl0eUlmTmVlZGVkKGJvb2wmIGNoYW5nZWRUb1Zpc2libGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAK
aW5kZXggMWU1OGJlZTBhZjAxNGU2MWZlNzBiZTk4ZTNlMzQyZDBmOGY2NGU0Mi4uMGQ4ODIwZTlm
M2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3Vy
Y2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0
ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOwotICAgIFJlZlB0cjxC
aXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgIGltZy0+c2V0RGF0
YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4gaW1nLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIobmFtZSk7CisgICAgYXV0byBp
bWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5zZXREYXRhKFdURk1vdmUoYnVm
ZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0
SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMjNjODk5ZTRhZWIyN2I0ZjIwNTVmZTJi
NjY2Y2M2Li4xNmI2YjVkZmY4MDA1YzRmYTRiODcyMjM4NWQyOTczMzQ4NGIyY2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCkBAIC05Mywy
MCArOTMsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjcmVh
dGVXaW5kb3coSFdORCBwYXJlbnRId25kKQogfQogCiAjaWYgVVNFKENBKQotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihSZWY8UGxhdGZvcm1DQUxheWVyPiYmIHJv
b3RDaGlsZCkKIHsKLSAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9vdENoaWxkKQorICAgIGlmICht
X3Jvb3RDaGlsZCA9PSByb290Q2hpbGQucHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3Jvb3RDaGlsZCkKICAgICAgICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21TdXBlcmxheWVy
KCk7CiAKLSAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKLQotICAgIGlmICghbV9yb290Q2hp
bGQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBtX3Jvb3RDaGlsZCA9IFdURk1vdmUocm9vdENoaWxkKTsKIAogICAgIGlm
ICghbV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENBQ0ZMYXll
clRyZWVIb3N0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5oCmluZGV4IGNkZDBjYTMwNDEwYmE0YTZjOTI4ZGZiOWU5ZmY2YTljNTVlOGQx
OWQuLjRhMjBkOWUwYTdiY2NlMjA1MGM0NzRmMTc4NDBhMjBmMTZhMmJmYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAKICNpZiBVU0UoQ0EpCiAgICAgUGxhdGZvcm1DQUxheWVyKiByb290Q2hpbGRM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRS
b290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZvaWQgc2V0
Um9vdENoaWxkTGF5ZXIoUmVmPFBsYXRmb3JtQ0FMYXllcj4mJik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0
ZXJuRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dHRlcm5EaXJlY3QyRC5jcHAKaW5kZXggMWI5MjI5ZTg2NjUyZDE5NWRhYTdiMGRhZDIyNzNiYjNi
YWYyMmFjMS4uOWRmYjVhZWQ1OTJiOWVhM2EwYzBlZmIyMjlmZThhYjQ0NDU0OGY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5E
aXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRtYXBCcnVzaCogUGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAg
ICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSUQyRDFCaXRtYXBCcnVz
aCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250
ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5hdGl2ZUltYWdlKCZjb250ZXh0
KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRl
cm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFw
QnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJy
dXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNT
RVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmgKaW5kZXggODllNDIxOTNkZWYyMWI4ODhlMWEyMGUyYTFhMjc3YjliN2Q0YzdlZi4uNGNlMzY3
YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBTaGFyZWRHRElPYmplY3RfaAogI2RlZmluZSBTaGFyZWRHRElP
YmplY3RfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9i
amVjdC5oPgogCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlZEdESU9iamVjdDxUPj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmplY3QpCisgICAgc3RhdGljIFJl
ZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4gb2JqZWN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHRElPYmplY3Q8VD4oV1RGTW92ZShvYmpl
Y3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEdESU9iamVjdDxUPihX
VEZNb3ZlKG9iamVjdCkpKTsKICAgICB9CiAKICAgICBUIGdldCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MjU0
ZWY5MDk3YjhkMjNjYzYwOWQ1MDM3NmIzOTA0MmI5NzFiNzllLi5lNWJmMDRkYjIzZDJhY2I5Nzk1
YTMyZTlhNDhlODNiMmIzODUyZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucwogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7
CiAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBlZmZlY3Qg
PSBidWlsZFJlZmVyZW5jZUZpbHRlcihyZW5kZXJlciwgKnByZXZpb3VzRWZmZWN0LCByZWZlcmVu
Y2VPcGVyYXRpb24pOwotICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLnNldEZpbHRlckVm
ZmVjdChlZmZlY3QpOworICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLnNldEZpbHRlckVm
ZmVjdChlZmZlY3QuY29weVJlZigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAppbmRleCBiZDFlNTVlNDA3
NTc5MGI3NjEwZmQ1OWNiYmQ5ZWI4YTYwNTRiNzBmLi4xYTk0YTU2MzBiMDcwNTQzMDA2MmQzNWMx
ZDI3NzRmZTcyMWJjODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2VSZXNv
dXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3Vy
Y2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAgIHJldHVybiBtX2NhY2hlZElt
YWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihtX3JlbmRlcmVyKSA6IEltYWdl
OjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQog
CiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMDIzODI1MjkyZTNjNDMzYmJj
NmFkOTUxOWMzZjZhZDY0YjNiNzM2Mi4uMjhmMDFmYmRhMDgzZGFmOTllOTNkNDYzYTEyYjg3YjZi
NjgzYmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0z
NzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJ
bWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgUmVmUHRyPElt
YWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7
CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpID49IDIp
IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1h
Z2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVy
QDJ4IikubGVha1JlZigpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4g
cmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0
QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAgIHJlc2l6ZUNvcm5lcklt
YWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUg
PSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZS5z
Y2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKCZJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKTsKICAgICAg
ICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAgICBj
b3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCmluZGV4IGVhOTM2YTRkYzgyZWJhYTRhNmFkOTI1ZWE3YWNjNjgzNGY5NDA3
ZDAuLjBmYjgyODBlMTllMTA3NmY2MTZmYjNhOGQ1YjM5OTljMzUwZjE5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVucwogCiAg
ICAgLy8gQnVpbGQgcGF0dGVybi4KICAgICBhdXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46
OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRl
cm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwg
dHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggNzVmMjRjNGUyNjdhODM3NGE4YTI4ODA4NDJjNGQ2Yzc5Y2U2MzljYS4uY2EwZjY4
ZmE5YWI5NmY5NmFjNjNiZDZlZjE1YjIzNjJjYWZiMDdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTExNSwzMSArMTE1
LDMwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQogICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5n
LT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkpOwogCi0gICAgTGlnaHRTb3Vy
Y2UqIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSo+KGRpZmZ1c2VMaWdodGlu
Zy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExp
Z2h0U291cmNlJj4oZGlmZnVzZUxpZ2h0aW5nLT5saWdodFNvdXJjZSgpKTsKICAgICBjb25zdCBT
VkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRM
aWdodEVsZW1lbnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291cmNlKTsKICAgICBBU1NFUlQo
bGlnaHRFbGVtZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0
dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXppbXV0aChsaWdodEVsZW1lbnQt
PmF6aW11dGgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRBemltdXRoKGxpZ2h0
RWxlbWVudC0+YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZh
dGlvbkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0RWxldmF0aW9uKGxpZ2h0
RWxlbWVudC0+ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0RWxl
dmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WChsaWdodEVs
ZW1lbnQtPngoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRYKGxpZ2h0RWxlbWVu
dC0+eCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55KCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CiAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRaKGxp
Z2h0RWxlbWVudC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFoobGlnaHRF
bGVtZW50LT56KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0
cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50
LT5wb2ludHNBdFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFgo
bGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojpwb2ludHNBdFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0
WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNl
LnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS0+c2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOwog
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCi0gICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQt
PnNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRTcGVj
dWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBvbmVudCgpKTsKICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikKLSAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0
aW5nQ29uZUFuZ2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0TGltaXRpbmdD
b25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw4ICsxODcsNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgY29uc3QgQ29sb3ImIGNvbG9yID0gcmVuZGVy
ZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29s
b3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxVbml0
TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0
ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA1NTY1YjkxZDEyYjhkZWM3Nzc1NmU1MGUw
ZjBmOTU0MzJjYWUyYmIyLi4xNzA0MzdmMzJmYjMzYjRmZGVkNjNlNGNmOWNmYzE0OGQ5Y2ZkMWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCkBAIC0xMjYsMzEgKzEyNiwzMCBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdAog
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCiAgICAg
ICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5zZXRTcGVjdWxhckV4cG9uZW50KHNwZWN1bGFy
RXhwb25lbnQoKSk7CiAKLSAgICBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0
PExpZ2h0U291cmNlKj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0
byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oc3BlY3VsYXJMaWdodGlu
Zy0+bGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxl
bWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFT
U0VSVChsaWdodFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZh
dGlvbigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxp
Z2h0RWxlbWVudC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRF
bGVtZW50LT55KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgICAg
IHJldHVybiBsaWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOworICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkp
OwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFko
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50
LT5wb2ludHNBdFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpB
dHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1l
bnQtPnBvaW50c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0
WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNl
dFNwZWN1bGFyRXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQt
PnNwZWN1bGFyRXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1p
dGluZ0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRp
bmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGlt
aXRpbmdDb25lQW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xOTksOCArMTk4LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAg
ICAKICAgICBjb25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgp
LmxpZ2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
U3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBz
cGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmNwcAppbmRleCAzOTlkNmJhZTVhNjA0ZTNkM2RjOTM5Mzc2NTQzZjI1NWEzNDAx
ZTNjLi40NGQwY2JhODFlYjE2NjgyMzJmMDRmZjY1YjYwYjIwMzM2NTlmNWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JS
ZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdl
OjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAg
QVNTRVJUKCFpbWFnZS0+c2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRl
eCA4NTcxODUwODQxMDJkMGQ2NjFhMzA1YzZkZjFjNTk2Mjg1NmVhZTgwLi4zNTcyMDcxMTJjYTIx
MThmZDAyZjc2MWFjYWE1MTFkODY1MmIwNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICA6OlNob3dXaW5k
b3cobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cpOwogCiAjaWYgVVNFKENBKQot
ICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQpOwor
ICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIoKm1fcm9vdENoaWxkKTsK
IAogICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxh
dGZvcm1DQUxheWVyKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIEFTU0VS
VCh2aWRlb0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IGJkZDk0MThiN2YzMGE4
NzE0OWU3YWExZGM3NGViMmQ2YzA5ZDdjYTYuLjdjM2ZiYjI3M2Y2MTc0Yjc0ODFkNGM1NWM1Yjcz
YTJlNTEyZmNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcApAQCAtMTcxLDggKzE3MSw4IEBA
IHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
bW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5
Ci1XRUJLSVRfQVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJ
VF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAg
IC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApAQCAtMjI1LDE3ICsyMjUsMTcg
QEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSkKICAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJmc1ZpZGVv
UGxheSIpKQogICAgICAgICBpZHIgPSBJRFJfRlNfVklERU9fUExBWTsKICAgICBlbHNlCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEhSU1JDIHJlc0lu
Zm8gPSBGaW5kUmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtFSU5UUkVTT1VSQ0UoaWRyKSwgTCJQTkci
KTsKICAgICBpZiAoIXJlc0luZm8pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBIQU5ETEUgcmVzID0gTG9hZFJlc291cmNlKGdJbnN0YW5jZSwgcmVzSW5m
byk7CiAgICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB2b2lkKiByZXNvdXJjZSA9IExvY2tSZXNvdXJjZShyZXMpOwogICAgIGlmICgh
cmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB1bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3RhbmNlLCByZXNJbmZvKTsKIAog
ICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3NWEzMmE5ZTM3Yzk5MWFmMmEyNmQ2Nzhh
MzBjNzVkOS4uNzYxNWYwOTFkZjM3M2M3YWU4YjU4Nzk1OWIxNGJmZmExNjE5ODdlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0zNDksOSArMzQ5LDkg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAobV9iYWNraW5nU3RvcmVzLmNvbnRh
aW5zKGxheWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgp
KTsKLSAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUpOwotICAgIGxh
eWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9y
ZSA9IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKKyAgICBtX2JhY2tpbmdTdG9y
ZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUuY29weVJlZigpKTsKKyAgICBsYXllci0+c2V0QmFj
a2luZ1N0b3JlKFdURk1vdmUoYmFja2luZ1N0b3JlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyKQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAg
ICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheWVyLT5zZXRC
YWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShudWxscHRyKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRv
TGF5ZXJTaXplKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdhZjY2NDhiMGUxNzg2NjNh
Yjc4Zjk3OGY4OTNjZTU1ZGQ2NDUyZmIuLjUzZjA1Y2UwMDIyYTM2YTEyNTQyMmE1ZTUxOTRhYTRj
MzZiYjg3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEN1cnNvcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFpc1ZhbGlkSW1hZ2VQcmVzZW50KSB7Ci0gICAgICAgIGN1cnNv
ciA9IEN1cnNvcihJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50KCkpOworICAgICAgICBjdXJz
b3IgPSBDdXJzb3IoJkltYWdlOjpudWxsSW1hZ2UoKSwgSW50UG9pbnQoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlNTU3MmUxNmQ1ZTBjNzgzMzlmNjZhMDNj
NjUzOGE2NWMzNWI5Y2M3Li44MTFlZWVhMjBiNGM4MjM0YzY0Mzg5NzQzMDJkZGU2YWNmYzYxMTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIENvb3JkaW5hdGVkR3IK
ICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZCwgc3Rh
dGUpKTsKIH0KIAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nvb3Jk
aW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSogaW1hZ2UpCitSZWY8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdl
QmFja2luZ0lmTmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAgICBDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2lu
Z3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewotICAgICAgICByZXR1cm4gQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAgQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1h
Z2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZpbWFnZV0geworICAgICAgICByZXR1
cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgqdGhpcywgaW1hZ2UpOwogICAgIH0p
OwogICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBkMmNh
Nzg0YjM5MDRiNjZiNmViNjhiOTE0OGY0Y2NhYWRlNDE2YWQxLi43YzU0MDE4NzMyMGViYmU3ZmQ4
ZDI3YmY0ODEwMTcyNjM0YTIyNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICBib29sIGlzRmx1c2hp
bmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRmx1c2hpbmdMYXll
ckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2lu
Zz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSBvdmVycmlkZTsK
KyAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFj
a2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXRhY2hM
YXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICBi
b29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgLyogYXRsYXNJRCAqLywgV2ViQ29yZTo6
SW50UG9pbnQmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFw
aGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4IDc2MWIyYTI0NDYxYTM0MWNkY2NlNzkyMDJhYzNj
ZTdjOTI1MzE2NjkuLjJkZjQyZTk0NzMwZjE2MzgzZjliNWE3MzJlODI5NmNiNWMxYTI1ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyQ0FSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpmaWx0ZXJz
Q2FuQmVDb21wb3NpdGVkKGZpbHRlcnMpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lciwgbV9jb250ZXh0KTsKIApAQCAtNTIs
MTIgKzUyLDEyIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FS
ZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJuIFdURk1vdmUo
cmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lciwg
bV9jb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGlj
c0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1h
dGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitSZWY8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
OjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAppbmRl
eCA4MzVlNGI3MzQ4OTQ4OGM5ZDE2MzYxZWEwMmQxYTU4OWJhMDQ5ZjhiLi5lNGE5MjU3YTY5YWIy
YWVmZDFlYTg2ZDBjOGJjNTZjODU2NzhhNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgK
QEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NM
YXllckNBUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9u
KFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4g
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUgY2FuJ3QgY3VycmVudGx5IHByb3h5IGRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2UgY29u
dGVudHMsIHNvIG9wdCBvdXQgb2YgdGhpcyBvcHRpbWl6YXRpb24uCiAgICAgYm9vbCBzaG91bGRE
aXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKaW5kZXggZmY3
NGM3MzNiNmM0M2FmMjFiYjBlODFlOWI5NDMyZjY2NmNjZGY5Yi4uNjMzOWIyMjMwNjYzOGUwMmYw
ZjA5ZjFjZmU4NzJlMTU2M2I3NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3Ry
aW5nIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLm1tCmluZGV4IDE2M2E3MmIyMDIyZGQ4YTkwMDU5NzU2MDRkNmE0OGUxODQ4MWE0ZWYu
LmIxMDAzNzA0OTAyMWUyNjgyZmNkOWFhYzNhMTNhMTFjOGM2Nzg3NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTMwNiw5ICszMDYsOSBAQCBSZWY8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtQ0FB
bmltYXRpb246OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAorUmVmPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogewot
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb24gPSBjcmVhdGUoYW5pbWF0
aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAgIGF1dG8gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1h
dGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAgICAKICAgICBhbmltYXRpb24tPnNldEJlZ2luVGlt
ZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbigpKTsK
QEAgLTMyMiw3ICszMjIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRp
bWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9u
KHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlPigqYW5pbWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNFeHBsaWNpdEJlZ2lu
VGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPihhbmltYXRp
b24uZ2V0KCkpLnNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGhhc0V4cGxpY2l0QmVnaW5UaW1lKCkp
OwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVl
cy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309777</attachid>
            <date>2017-05-11 13:59:47 -0700</date>
            <delta_ts>2017-05-11 15:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511135946.patch</filename>
            <type>text/plain</type>
            <size>177274</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5lYzczZTU4ZWY2MmUyY2FkYWYyOTI4
MmZlNjkzOGQ0ZTFiOGI3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRy
KTsKICAgICB9CiAKICAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJp
dmF0ZToKICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8v
IEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1v
dW50LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KGFtb3VudCgpLCB0eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAg
ICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2
YXRlOgogLy8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFy
aWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBl
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3Vu
dCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbW91bnQ7IH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RG
TW92ZShzdGREZXZpYXRpb24pKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb247IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9j
YXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRp
b24oKSwgY29sb3IoKSkpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi54KCk7IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1v
dmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4
MzA2ZmM0NWQ4MWEwNWNlNjEuLmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3Jt
YXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVT
aXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNz
UmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0
ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZm
YWZlZTdiZTI2MmM0NDUwZC4uNTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlPiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4
LCBCR1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lk
IGxvYWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGJkMThlNWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3
MmFhN2RkZGQ1ZjM0OTRlZWMzNDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBH
UmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4s
IGluZGV4LCBwYWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3
MjhkM2MwZWM3Mi4uZDNlMDRmNmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAg
c3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAot
ICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcElt
YWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJh
MmM1ZmMwN2U3YjBhYTU2NTEzMWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3
Zjc4ZWI5OWMxM2EwNTBkNGZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9y
bWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBp
ZCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoKSB7IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5h
ZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGN1ZUZvcm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1
ZSgqZGF0YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGNjM2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEu
LjZhOTA3NDRlNTkwOTAxOTM5MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2Jj
MGRlZmM5ZGY1NGViM2Y1Li43OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7
CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlf
Z2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2No
YXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBn
c3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAg
ICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkq
PihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZh
ODRjZi4uYzI3MDcyNjBmMzEwNzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
ODUyLDcgKzg1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBp
bWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFp
bnRpbmdPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBiYTQ2YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41
ZWE3NmUzZmVhMTNkYzg3YTJjYWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBp
bmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
Y3BwCmluZGV4IDY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmNiNmRm
ZjVmMTUwNDM3NTEzZDU5YWYxMWYwZWJlNjM2YWYyZjc4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIg
KzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlw
ZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkK
K3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1f
cGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3Bs
YXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSkpOwogfQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQx
Mjc1NGVlMTZiYTkwMjJjZWFkZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNl
ZjkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhcios
IHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7
Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQ
bGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggOTIwOTViNjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYy
Y2Q1NmE4NDZiMzQ3NjEyMzQ0ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgogI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmNwcAppbmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhj
YTE2ZjIwLi44YTJmZjQzYWNhYmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXli
YWNrUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9E
RUJVRygidHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1w
bGUoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6Omlz
TWFpblRocmVhZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdz
dEVsZW1lbnQqIGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5x
dWV1ZWRUaW1lID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVk
aWFTYW1wbGUqIHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVk
aWFTYW1wbGUuZ2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0
aWNfY2FzdDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBp
ZiAoc2FtcGxlLT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1w
bGUoKSkpIHsKICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+
c2FtcGxlKCk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVm
ZmVyKGdzdFNhbXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmlu
ZGV4IDA4ZjBlNjBkMzMzMmY2ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZm
YzE2NGY2MjgxYjY5Yzc4NDc3Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQ
aXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0g
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdl
YmJlNWQ0Li44NDY0NWI3ZDUxOWMxNzJhNTNmMGMzNGI3YmE3NzU2MjdhMmEyYTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAg
LTM2LDE3ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlPiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQor
c3RhdGljIFJlZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29u
TmFtZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNl
cy9pbWFnZXMvJXMiLCBpY29uTmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRv
cHRHUmVmKGdfcmVzb3VyY2VzX2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9P
S1VQX0ZMQUdTX05PTkUsIG51bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+
c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0
X3NpemUoZGF0YS5nZXQoKSkpLCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIFdURk1vdmUoaWNvbik7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBmaWxlbmFtZSkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdz
aXplIGxlbmd0aDsKQEAgLTYwLDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlk
YXRlUGxhdGZvcm1EYXRhKCkKIHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRN
aXNzaW5nSW1hZ2VJY29uRnJvbVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPElt
YWdlPiBsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewog
ICAgIGludCBpY29uU2l6ZSA9IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAx
NjsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CisgICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8
R3RrSWNvbkluZm8+IGljb25JbmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29u
X3RoZW1lX2dldF9kZWZhdWx0KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwg
R1RLX0lDT05fTE9PS1VQX05PX1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3Rr
X2ljb25faW5mb19nZXRfZmlsZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+
c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVs
ZWFzZSgpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihn
dGtfaWNvbl9pbmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29u
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KGljb24pOwogICAgIH0KIAogICAgIHJldHVybiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUp
OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29u
c3QgY2hhciogbmFtZSkKK1JlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1p
c3NpbmdJbWFnZSIpID8gbG9hZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAz
Y2FjZThlZDliZWQ4MmIzOGNjMzgxOWQzM2JmZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThk
NTc1YmFlZjE3YzY3NTY1NmMyMTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCAr
NDgsMTAgQEAgY29uc3QgaGJfdGFnX3QgSGFyZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdr
JywgJ2UnLCAncicsICduJyk7CiAKIGNsYXNzIEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNv
dW50ZWQ8RmFjZUNhY2hlRW50cnk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
YWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2ZhY2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZh
Y2VDYWNoZUVudHJ5PiBjcmVhdGUoaGJfZmFjZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGZhY2UpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZh
Y2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkp
OwogICAgIH0KICAgICB+RmFjZUNhY2hlRW50cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5k
ZXggNjMxNzlmZTgxNWU0MDU0NzMzZDQ5OWQ3NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0
YWYxYzA5NDhjZGU4ZWVhZTkxMjU4MDY5OWRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0
aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZC
dXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3Qg
dW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZv
cm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRh
LCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3
Yzk2OGYzNmY1ODgwZGQ0MGZjNWUwM2U5ZGJiYmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlm
OWU4NzA5MTE4OTNiMmIyY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAK
LVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFy
ICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hh
ciAqbmFtZSkKIHsKICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlQnVuZGxlRmluZGVyIGNsYXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0
aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
ZzpuYW1lXSBvZlR5cGU6QCJwbmciXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3
NTRkMDJhNDJkZTVlMzM0NmUxZDMwYTM2ZDU0NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2Iy
NDJhOGEyNDY0ZGJiMDFlNzU3YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3
ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAg
Y2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PE9wZW5UeXBlTWF0aERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVu
VHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBz
dGF0aWMgUmVmPE9wZW5UeXBlTWF0aERhdGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBmb250KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhE
YXRhKGZvbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0
YShmb250KSk7CiAgICAgfQogICAgIH5PcGVuVHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5o
CmluZGV4IDMyNDU2MzhhOGVmZTdhNTI5YTIzNmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVk
ZmM1YjY1NzdiOGU5MTIwOTU5MjEyZWUyN2EwNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAs
OCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQg
bnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhl
aWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3Qg
eyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBt
X2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5
OWI2YmNiZmI4YTI3M2U4ZjA1YzI1ZWQyLi40NTA5NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUy
ZjdjZjM4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQs
NyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0UGFzc2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBp
ZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0
MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZp
bHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0
U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5m
byhmaWx0ZXIsIGosIHNwYXJlU3VyZmFjZSk7CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0
dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVH
TDo6RmlsdGVySW5mbyhmaWx0ZXIuY29weVJlZigpLCBqLCBzcGFyZVN1cmZhY2UuY29weVJlZigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5oCmluZGV4IGM0YTgwMjI0YTg3ZWM1Y2E4YjViYWYwNjkyZGQ0MTE0NGZjYzZhYWEuLjNhNGQ4
MDQ3MzQyNmYyMTZmYzllZDFlYjNhMGI2N2NmZDY4NGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgK
QEAgLTU5LDE2ICs1OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dp
enpsZShjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYg
c291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0g
NCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsK
ICAgICBib29sIGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBzdHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAg
ICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZp
bHRlckluZm8oUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0g
MCwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVy
KGYpCisgICAgICAgIEZpbHRlckluZm8oUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVs
bHB0ciwgdW5zaWduZWQgcCA9IDAsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRy
KQorICAgICAgICAgICAgOiBmaWx0ZXIoV1RGTW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhw
KQotICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50
VGV4dHVyZShXVEZNb3ZlKHQpKQogICAgICAgICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBG
aWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3
ZjU1MDg4MmMzMGQ1ZmQwNmEyNDIyMmVlYzgwYWMwNC4uYTAyNmY0YzUwOGM4ZjRlMmQyMzI0MDQ1
YzMzNzA0Yzk1Njg2ZmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRl
cnMoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1f
bGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNl
dERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCks
IGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggOTczMDQ3ZjQ5MDU3OWIyZmEyYzFmM2QzZjg0ODkyN2ExOTAxNmMxOS4u
MWY5ZTY4MjdkYTVkM2E1NTYzZjdkZWFkOWU1ZTIzZjNjOGFmZWZjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcApAQCAtMzIsMTEgKzMyLDExIEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIoKSA9
IGRlZmF1bHQ7CiAKIFRleHR1cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0Owog
Ci1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJl
RnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3Mg
ZmxhZ3MpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1
cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFn
cyBmbGFncykKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0g
bV90ZXh0dXJlUG9vbC0+YWNxdWlyZVRleHR1cmUoc2l6ZSwgZmxhZ3MpOwogICAgIHNlbGVjdGVk
VGV4dHVyZS0+cmVzZXQoc2l6ZSwgZmxhZ3MpOwotICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmUu
cmVsZWFzZSgpOworICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgK
aW5kZXggNzIzM2QwZGNjZDVjOGI1ZjVhOWM3NTAzMGU1NTkxYmI0YjM1MjM0MC4uNjczMGQ4ZTdi
ZGFmZjE2NWUwNzg4NzI2MTBjOTE4MDk3MjBkMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBlbmRDbGlwKCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAw
OworICAgIHZpcnR1YWwgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29s
KGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFj
cXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzID0gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBh
dHRlcm5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJu
VHJhbnNmb3JtID0gcDsgfQogICAgIHZvaWQgc2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dy
YXBNb2RlID0gbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNWMwNmQz
YjRiYWIyZjc1MWY5ODFmZjdiNTgyZTZkLi45OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVm
YzIxMjY1ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogCkBAIC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVy
R0w6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3Nv
ckJveDsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNy
ZWF0ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRl
VGV4dHVyZSgpCiB7CiAgICAgcmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRl
eHQzRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTFlYzY3ZmEyMGRmYjM4
NTBjN2Q1N2UyYzQ2YTlhOS4uZTdjODBlOTI2OTQ1YTBlNWNjOWE0Zjk0OWM4ODU3ZDAxZTM5NGJk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmRDbGlwKCkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7
CiAgICAgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIElu
dFNpemUoMjAwMCwgMjAwMCk7IH0KLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0
ZVRleHR1cmUoKSBvdmVycmlkZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVy
ZSgpIG92ZXJyaWRlOwogICAgIGlubGluZSBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250
ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQogCiAgICAgdm9pZCBk
cmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0
bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYsIGludCBw
YXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZDM5Y2ZmY2JiNzg4OTFmZTEx
ZTVlOGM0YmExOGVjODcyOWExNGM2Mi4uYWIzNzdmZTM5NTFkYzdhZTgyMmYzZTBjNjUyZTNjNDI5
NzlkM2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tN
b2RlKGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0
dXJlOjpGQk9BdHRhY2htZW50KTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50
T3B0aW9ucyhvcHRpb25zKTsKQEAgLTM3NiwxNiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1
cmVNYXBwCiAgICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAg
ICAgc3VyZmFjZSA9IHN1cmZhY2UtPmFwcGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIs
IG1fY3VycmVudEZpbHRlcnMpOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFj
ZShzdXJmYWNlLmdldCgpKTsKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHN1cmZhY2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBz
dXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQg
Y29tbWl0U3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBC
aXRtYXBUZXh0dXJlJiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5
KQogewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZh
Y2UuZ2V0KCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAg
ICB0YXJnZXRUcmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlv
bnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9u
cy50cmFuc2Zvcm0pOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3Vy
ZmFjZS5nZXQoKSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25z
LnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoc3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3Jt
LCBvcGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVy
bWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRPcAogICAgIH0KIAogICAgIGlmIChyZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNp
dHkgPT0gMSkgewotICAgICAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNl
LCByZWN0LCAxKTsKKyAgICAgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZh
Y2UsIHJlY3QsIDEpOwogICAgICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQog
CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aElu
dGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3AKICAgICAgICAgbWFp
blN1cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsKICAgICB9CiAKLSAgICBjb21taXRTdXJmYWNlKG9w
dGlvbnMsIG1haW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOworICAgIGNvbW1pdFN1
cmZhY2Uob3B0aW9ucywgKm1haW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOwogfQog
CiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKQEAgLTYzNyw5ICs2MzcsOSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQog
ICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0OwogfQogCi12b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tpbmdTdG9yZShSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4mJiBiYWNraW5nU3Rv
cmUpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbV9iYWNraW5n
U3RvcmUgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxh
eWVyOjpkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggM2IxYzE2YjBiMTMyZjUwYzY4MzMwMmUzZWIzN2I2ZTE2
MmIxNTRlNy4uYmVkMWY2Y2Q2NWIxOTZiYmQ2OTk4ZmRjMTM2ZDhjMTE4NjY3ZTExNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lk
IHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNv
bnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRC
YWNraW5nU3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAg
dm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVu
bmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7
CiAgICAgdm9pZCBwYWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYpOwotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oCmluZGV4IDg1MTRhNGY3MzZhNTZkMzU4ZTRkMTI3ZGJlODI2OGQ3MjkxNmRhZDQu
LjQyMzhjNWQ4ZTRkYTAyYTkzNDc0MDIzMmU1ZjBhMWEwNDNlNjdlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xh
c3MgVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
IDogcHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAg
ICBzdGF0aWMgUmVmPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAg
ICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCBmODk3MTQ4OWFmZDhlNThlNTdiNDMzOTY1YmEwZDJmY2JlNDk0NzVkLi5hMjY2MmVmMGI5NjU2
Mjk4Yjg2ZTA1ODFlNjE1MWVhNjg3ZGI5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKCkKICAgICAg
ICAgICAgIHJlbGVhc2VJbWFnZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgICAgIGlmICghbV9j
b29yZGluYXRlZEltYWdlQmFja2luZykgewotICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdl
QmFja2luZyA9IG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29t
cG9zaXRlZEltYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcgPSBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCgqbV9jb21wb3Np
dGVkSW1hZ2UpOwogICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+YWRkSG9z
dCh0aGlzKTsKICAgICAgICAgICAgIG1fbGF5ZXJTdGF0ZS5pbWFnZUlEID0gbV9jb29yZGluYXRl
ZEltYWdlQmFja2luZy0+aWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGJmMjUxMTFkYmU1NDJmY2Jj
MzViNzdmZjA5ZTNmZmJhYTMxMzI4N2YuLmI3NzRlMDA1ZmMwMTVjNDUwMmNmZGVjZTQ4MDE3ZDEx
NzJjMzZjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVy
Q2hhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVu
dHNSZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFs
IFJlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQo
SW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3Qg
SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJ
bnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBm
NTI5NDc1NWEyMzM2NTVjMzA2NjU3MWNmNjM5YmVjYjUwYzAzMDUwLi41NjBjMmUxNjcyMWM2Njgy
NzNlZmZkMjdlYzE5MjlhMTUyNmJjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQ+KGltYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVu
dCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+
IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFn
ZT4mJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nKGNsaWVudCwgaW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGlu
YXRlZEltYWdlQmFja2luZyhjbGllbnQsIFdURk1vdmUoaW1hZ2UpKSk7CiB9CiAKLUNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBt
X2ltYWdlKGltYWdlKQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nKENsaWVudCYgY2xpZW50LCBSZWY8SW1hZ2U+JiYgaW1hZ2UpCisgICAgOiBtX2NsaWVu
dCgmY2xpZW50KQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1faWQoZ2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJD
b250ZW50c1RpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNsZWFyQ29udGVu
dHNUaW1lckZpcmVkKQogICAgICwgbV9pc0RpcnR5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCBiODYwM2M2OGU2MzY4
NGNiN2VlNGRjZThkMjUyNjI2ZTlmMWZkYWVjLi40YzY5ZTU4MjY2OWZlMjc4OWFhYzZhYTEyYzMz
YjU1YWFhNzI3YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUJhY2tpbmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCosIFBhc3NS
ZWZQdHI8SW1hZ2U+KTsKKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGUoQ2xpZW50JiwgUmVmPEltYWdlPiYmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZElt
YWdlQmFja2luZygpOwogCiAgICAgc3RhdGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgZ2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSopOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdl
QmFja2luZyhDbGllbnQqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAgQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcoQ2xpZW50JiwgUmVmPEltYWdlPiYmKTsKIAogICAgIHZvaWQgcmVsZWFzZVN1cmZh
Y2VJZk5lZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJpbGl0eUlmTmVlZGVkKGJvb2wmIGNo
YW5nZWRUb1Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMWU1OGJlZTBhZjAxNGU2MWZlNzBiZTk4ZTNlMzQyZDBm
OGY2NGU0Mi4uMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVu
Y3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1h
Z2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPElt
YWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5h
bWUpOwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwotICAgIGltZy0+c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4g
aW1nLnJlbGVhc2UoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIo
bmFtZSk7CisgICAgYXV0byBpbWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMjNjODk5
ZTRhZWIyN2I0ZjIwNTVmZTJiNjY2Y2M2Li4xNmI2YjVkZmY4MDA1YzRmYTRiODcyMjM4NWQyOTcz
MzQ4NGIyY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3cuY3BwCkBAIC05MywyMCArOTMsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpjcmVhdGVXaW5kb3coSFdORCBwYXJlbnRId25kKQogfQogCiAjaWYgVVNF
KENBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hp
bGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihSZWY8UGxh
dGZvcm1DQUxheWVyPiYmIHJvb3RDaGlsZCkKIHsKLSAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9v
dENoaWxkKQorICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hpbGQucHRyKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX3Jvb3RDaGlsZCkKICAgICAgICAgbV9yb290Q2hpbGQtPnJl
bW92ZUZyb21TdXBlcmxheWVyKCk7CiAKLSAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKLQot
ICAgIGlmICghbV9yb290Q2hpbGQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Jvb3RDaGlsZCA9IFdURk1vdmUocm9v
dENoaWxkKTsKIAogICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGNkZDBjYTMwNDEwYmE0YTZjOTI4
ZGZiOWU5ZmY2YTljNTVlOGQxOWQuLjRhMjBkOWUwYTdiY2NlMjA1MGM0NzRmMTc4NDBhMjBmMTZh
MmJmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0EpCiAgICAgUGxhdGZvcm1D
QUxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4pOworICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUmVmPFBsYXRmb3JtQ0FMYXllcj4mJik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKaW5kZXggMWI5MjI5ZTg2NjUyZDE5
NWRhYTdiMGRhZDIyNzNiYjNiYWYyMmFjMS4uOWRmYjVhZWQ1OTJiOWVhM2EwYzBlZmIyMjlmZThh
YjQ0NDU0OGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRt
YXBCcnVzaCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICAgICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAg
ICAgSUQyRDFCaXRtYXBCcnVzaCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxU
IGhyID0gcGxhdGZvcm1Db250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5h
dGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNo
UHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29u
dGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0
KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRl
cm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJu
QnJ1c2g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2hhcmVkR0RJT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2hhcmVkR0RJT2JqZWN0LmgKaW5kZXggODllNDIxOTNkZWYyMWI4ODhlMWEyMGUyYTFhMjc3
YjliN2Q0YzdlZi4uNGNlMzY3YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRH
RElPYmplY3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBTaGFyZWRHRElPYmplY3RfaAog
I2RlZmluZSBTaGFyZWRHRElPYmplY3RfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdESU9iamVjdDxUPj4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmpl
Y3QpCisgICAgc3RhdGljIFJlZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4g
b2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHRElPYmpl
Y3Q8VD4oV1RGTW92ZShvYmplY3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEdESU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKICAgICB9CiAKICAgICBUIGdldCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAppbmRleCA0MjU0ZWY5MDk3YjhkMjNjYzYwOWQ1MDM3NmIzOTA0MmI5NzFiNzllLi5l
NWJmMDRkYjIzZDJhY2I5Nzk1YTMyZTlhNDhlODNiMmIzODUyZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFOiB7CiAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24g
PSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAg
ICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihyZW5kZXJlciwgKnByZXZp
b3VzRWZmZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOwotICAgICAgICAgICAgcmVmZXJlbmNlT3Bl
cmF0aW9uLnNldEZpbHRlckVmZmVjdChlZmZlY3QpOworICAgICAgICAgICAgcmVmZXJlbmNlT3Bl
cmF0aW9uLnNldEZpbHRlckVmZmVjdChlZmZlY3QuY29weVJlZigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNw
cAppbmRleCBiZDFlNTVlNDA3NTc5MGI3NjEwZmQ1OWNiYmQ5ZWI4YTYwNTRiNzBmLi4xYTk0YTU2
MzBiMDcwNTQzMDA2MmQzNWMxZDI3NzRmZTcyMWJjODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+
IFJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAg
IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlciht
X3JlbmRlcmVyKSA6IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6
Om51bGxJbWFnZSgpOwogfQogCiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJy
ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
MDIzODI1MjkyZTNjNDMzYmJjNmFkOTUxOWMzZjZhZDY0YjNiNzM2Mi4uMjhmMDFmYmRhMDgzZGFm
OTllOTNkNDYzYTEyYjg3YjZiNjgzYmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0zNzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eW91CiAgICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUg
Y29ybmVyUmVzaXplclNpemU7CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdl
Kj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRl
eHRBcmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAg
ICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAg
Y29ybmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBj
b3JuZXJSZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxv
UmVzKCZJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIiku
bGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFn
ZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5z
aXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGVhOTM2YTRkYzgyZWJhYTRhNmFk
OTI1ZWE3YWNjNjgzNGY5NDA3ZDAuLjBmYjgyODBlMTllMTA3NmY2MTZmYjNhOGQ1YjM5OTljMzUw
ZjE5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBQYXR0ZXJuRGF0
YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIHVucwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KICAgICBhdXRvIHBhdHRlcm5E
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBwYXR0ZXJuRGF0YS0+
cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1ZSk7CisgICAg
cGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFz
ZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2Ug
dHJhbnNmb3JtYXRpb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzVmMjRjNGUyNjdhODM3NGE4YTI4ODA4NDJjNGQ2
Yzc5Y2U2MzljYS4uY2EwZjY4ZmE5YWI5NmY5NmFjNjNiZDZlZjE1YjIzNjJjYWZiMDdiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKQEAgLTExNSwzMSArMTE1LDMwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQogICAgICAgICByZXR1
cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkp
OwogCi0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJj
ZSo+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3Vy
Y2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oZGlmZnVzZUxpZ2h0aW5nLT5saWdodFNvdXJj
ZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVM
aWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291
cmNlKTsKICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6YXppbXV0aEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXpp
bXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+
c2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4g
bGlnaHRTb3VyY2Uuc2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS0+c2V0WChsaWdodEVsZW1lbnQtPngoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJj
ZS5zZXRYKGxpZ2h0RWxlbWVudC0+eCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLT5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLnNldFoobGlnaHRFbGVtZW50LT56KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2lu
dHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2UtPnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgp
KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAg
IHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRa
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVu
dC0+cG9pbnRzQXRaKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBv
bmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBv
bmVudCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xl
QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShs
aWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmds
ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4OCw4ICsxODcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgY29uc3QgQ29s
b3ImIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6
Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3Zl
KGxpZ2h0U291cmNlKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZm
dXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVz
ZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxp
Z2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA1NTY1Yjkx
ZDEyYjhkZWM3Nzc1NmU1MGUwZjBmOTU0MzJjYWUyYmIyLi4xNzA0MzdmMzJmYjMzYjRmZGVkNjNl
NGNmOWNmYzE0OGQ5Y2ZkMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjYsMzEgKzEyNiwzMCBAQCBib29sIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqIGVmZmVjdAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIpCiAgICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5zZXRTcGVjdWxh
ckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQoKSk7CiAKLSAgICBMaWdodFNvdXJjZSogbGlnaHRT
b3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlKj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRT
b3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNl
Jj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdo
dEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KHRoaXMpOwotICAgIEFTU0VSVChsaWdodFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxl
bWVudCk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRo
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQt
PmF6aW11dGgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRy
KQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQt
PmVsZXZhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihs
aWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54
KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLT5zZXRZKGxpZ2h0RWxlbWVudC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLnNldFkobGlnaHRFbGVtZW50LT55KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ekF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1l
bnQtPnooKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+
eigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRz
QXRYKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxl
bWVudC0+cG9pbnRzQXRYKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRz
QXRZQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRF
bGVtZW50LT5wb2ludHNBdFkoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2lu
dHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBv
aW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFyRXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxh
ckV4cG9uZW50KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBv
bmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdo
dFNvdXJjZS0+c2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVB
bmdsZSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xl
KGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25lQW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTksOCArMTk4LDcgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGUKICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+
c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3Is
IHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShm
aWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxh
ckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxp
Z2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAzOTlkNmJhZTVhNjA0ZTNkM2Rj
OTM5Mzc2NTQzZjI1NWEzNDAxZTNjLi40NGQwY2JhODFlYjE2NjgyMzJmMDRmZjY1YjYwYjIwMzM2
NTlmNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgYXV0byogaW1h
Z2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAgICAgQVNTRVJUKCFpbWFnZS0+c2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAg
cmV0dXJuIGltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAppbmRleCA4NTcxODUwODQxMDJkMGQ2NjFhMzA1YzZkZjFjNTk2Mjg1NmVh
ZTgwLi4zNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1MmIwNjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjg2LDcg
KzI4Niw3IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVu
KCkKICAgICA6OlNob3dXaW5kb3cobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cp
OwogCiAjaWYgVVNFKENBKQotICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5
ZXIobV9yb290Q2hpbGQpOworICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5
ZXIoKm1fcm9vdENoaWxkKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBs
YXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybUxh
eWVyKCkpOwogICAgIEFTU0VSVCh2aWRlb0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCmlu
ZGV4IGJkZDk0MThiN2YzMGE4NzE0OWU3YWExZGM3NGViMmQ2YzA5ZDdjYTYuLjdjM2ZiYjI3M2Y2
MTc0Yjc0ODFkNGM1NWM1YjczYTJlNTEyZmNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcApA
QCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBX
ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJv
amVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3Qg
Y2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsK
ICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApA
QCAtMjI1LDE3ICsyMjUsMTcgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKICAgICBlbHNlIGlmICghc3Ry
Y21wKG5hbWUsICJmc1ZpZGVvUGxheSIpKQogICAgICAgICBpZHIgPSBJRFJfRlNfVklERU9fUExB
WTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEhSU1JDIHJlc0luZm8gPSBGaW5kUmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtFSU5UUkVT
T1VSQ0UoaWRyKSwgTCJQTkciKTsKICAgICBpZiAoIXJlc0luZm8pCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIQU5ETEUgcmVzID0gTG9hZFJlc291cmNl
KGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAgICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiByZXNvdXJjZSA9IExvY2tSZXNvdXJj
ZShyZXMpOwogICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3Rh
bmNlLCByZXNJbmZvKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3NWEzMmE5
ZTM3Yzk5MWFmMmEyNmQ2NzhhMzBjNzVkOS4uNzYxNWYwOTFkZjM3M2M3YWU4YjU4Nzk1OWIxNGJm
ZmExNjE5ODdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CkBAIC0zNDksOSArMzQ5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAobV9i
YWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNr
aW5nU3RvcmUpOwotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKKyAg
ICBhdXRvIGJhY2tpbmdTdG9yZSA9IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
KyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUuY29weVJlZigpKTsK
KyAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKFdURk1vdmUoYmFja2luZ1N0b3JlKSk7CiB9CiAK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRl
ZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJl
TWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdT
dG9yZShudWxscHRyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlc2V0
QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IDdhZjY2NDhiMGUxNzg2NjNhYjc4Zjk3OGY4OTNjZTU1ZGQ2NDUyZmIuLjUzZjA1Y2UwMDIyYTM2
YTEyNTQyMmE1ZTUxOTRhYTRjMzZiYjg3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPEN1cnNvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFpc1ZhbGlkSW1hZ2VQcmVzZW50
KSB7Ci0gICAgICAgIGN1cnNvciA9IEN1cnNvcihJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50
KCkpOworICAgICAgICBjdXJzb3IgPSBDdXJzb3IoJkltYWdlOjpudWxsSW1hZ2UoKSwgSW50UG9p
bnQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlNTU3MmUx
NmQ1ZTBjNzgzMzlmNjZhMDNjNjUzOGE2NWMzNWI5Y2M3Li44MTFlZWVhMjBiNGM4MjM0YzY0Mzg5
NzQzMDJkZGU2YWNmYzYxMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQg
aWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0KIAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
PiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFn
ZSogaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRp
bmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAgICBD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewotICAg
ICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7
CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1faW1hZ2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZpbWFn
ZV0geworICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgqdGhp
cywgaW1hZ2UpOwogICAgIH0pOwogICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuaAppbmRleCBkMmNhNzg0YjM5MDRiNjZiNmViNjhiOTE0OGY0Y2NhYWRlNDE2YWQxLi43
YzU0MDE4NzMyMGViYmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC0xMTEsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQK
ICAgICBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6
SW1hZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKICAgICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgLyogYXRs
YXNJRCAqLywgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6
OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4IDc2MWIyYTI0NDYx
YTM0MWNkY2NlNzkyMDJhYzNjZTdjOTI1MzE2NjkuLjJkZjQyZTk0NzMwZjE2MzgzZjliNWE3MzJl
ODI5NmNiNWMxYTI1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0
ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGZpbHRlcnMpOwogfQogCi1QYXNzUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
UmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUg
bGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIGF1dG8gcmVz
dWx0ID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lciwgbV9j
b250ZXh0KTsKIApAQCAtNTIsMTIgKzUyLDEyIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9yCiAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FM
YXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0
Zm9ybUxheWVyLCBvd25lciwgbV9jb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRp
b24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlOjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xh
eWVyQ0FSZW1vdGUuaAppbmRleCA4MzVlNGI3MzQ4OTQ4OGM5ZDE2MzYxZWEwMmQxYTU4OWJhMDQ5
ZjhiLi5lNGE5MjU3YTY5YWIyYWVmZDFlYTg2ZDBjOGJjNTZjODU2NzhhNzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhp
Y3NMYXllckNBUmVtb3RlLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBib29sIGlzR3JhcGhpY3NMYXllckNBUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZVBsYXRmb3JtQ0FMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJp
ZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQ
bGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlv
blR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246
OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CiAKICAgICAv
LyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY2FuJ3QgY3VycmVudGx5IHByb3h5IGRpcmVjdGx5IGNv
bXBvc2l0ZWQgaW1hZ2UgY29udGVudHMsIHNvIG9wdCBvdXQgb2YgdGhpcyBvcHRpbWl6YXRpb24u
CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLmgKaW5kZXggZmY3NGM3MzNiNmM0M2FmMjFiYjBlODFlOWI5NDMyZjY2NmNjZGY5Yi4u
NjMzOWIyMjMwNjYzOGUwMmYwZjA5ZjFjZmU4NzJlMTU2M2I3NDliNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDE2M2E3MmIyMDIyZGQ4YTkwMDU5NzU2
MDRkNmE0OGUxODQ4MWE0ZWYuLmIxMDAzNzA0OTAyMWUyNjgyZmNkOWFhYzNhMTNhMTFjOGM2Nzg3
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTMwNiw5ICszMDYs
OSBAQCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6
Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBj
b25zdAorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRp
b24gPSBjcmVhdGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAgIGF1dG8gYW5pbWF0
aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAgICAKICAgICBhbmlt
YXRpb24tPnNldEJlZ2luVGltZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJh
dGlvbihkdXJhdGlvbigpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogICAg
IGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9u
LT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPigqYW5pbWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGlt
ZShoYXNFeHBsaWNpdEJlZ2luVGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlPihhbmltYXRpb24uZ2V0KCkpLnNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGhhc0V4
cGxpY2l0QmVnaW5UaW1lKCkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2lj
IG9yIEtleWZyYW1lIHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1l
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309791</attachid>
            <date>2017-05-11 14:57:49 -0700</date>
            <delta_ts>2017-05-11 15:07:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511145748.patch</filename>
            <type>text/plain</type>
            <size>179698</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5lYzczZTU4ZWY2MmUyY2FkYWYyOTI4
MmZlNjkzOGQ0ZTFiOGI3YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRy
KTsKICAgICB9CiAKICAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJp
dmF0ZToKICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8v
IEZvciBIVUVfUk9UQVRFLCB0aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1v
dW50LgogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAot
ICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KGFtb3VudCgpLCB0eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAg
ICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2
YXRlOgogLy8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFy
aWF0aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBl
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3Vu
dCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbW91bnQ7IH0KIAogICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RG
TW92ZShzdGREZXZpYXRpb24pKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0K
IAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGRE
ZXZpYXRpb247IH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGlu
dCBzdGREZXZpYXRpb24sIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9j
YXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRp
b24oKSwgY29sb3IoKSkpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi54KCk7IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1v
dmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4
MzA2ZmM0NWQ4MWEwNWNlNjEuLmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3Jt
YXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVT
aXplID0gMDsKICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNz
UmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0
ZXh0dXJlSWRzLT5hdChpKSA9IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZm
YWZlZTdiZTI2MmM0NDUwZC4uNTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlPiB7CiBwdWJsaWM6CiAgICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4
LCBCR1JBOCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lk
IGxvYWQodm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGJkMThlNWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3
MmFhN2RkZGQ1ZjM0OTRlZWMzNDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBH
UmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4s
IGluZGV4LCBwYWQpKTsKICAgICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3
MjhkM2MwZWM3Mi4uZDNlMDRmNmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAg
c3RhdGljIFJlZjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFt
ZXIoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKICAgICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAot
ICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcElt
YWdlKiBpbWFnZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJh
MmM1ZmMwN2U3YjBhYTU2NTEzMWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3
Zjc4ZWI5OWMxM2EwNTBkNGZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9y
bWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBp
ZCkpOwogICAgIH0KIAogICAgIH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoKSB7IH0KQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5h
ZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBh
ZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGN1ZUZvcm1hdCgpID09IEdlbmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1
ZSgqZGF0YSk7CisgICAgICAgIGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGNjM2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEu
LjZhOTA3NDRlNTkwOTAxOTM5MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAs
OSBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
LCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2Jj
MGRlZmM5ZGY1NGViM2Y1Li43OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTE3Nyw3ICsxMTc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogCi0gICAgUmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3Vl
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7
CiAKICAgICBnaW50NjQgc3RhcnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlf
Z2V0X3N0YXJ0X3N0b3BfdGltZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2hhcHRlcnNUcmFjay0+YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2No
YXB0ZXJzVHJhY2stPmFkZEdlbmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBn
c3RfdG9jX2VudHJ5X2dldF9zdWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAg
ICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkq
PihpLT5kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZh
ODRjZi4uYzI3MDcyNjBmMzEwNzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
ODUyLDcgKzg1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBp
bWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFp
bnRpbmdPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBiYTQ2YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41
ZWE3NmUzZmVhMTNkYzg3YTJjYWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBp
bmRleCwgcGFkKSk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0Uu
Y3BwCmluZGV4IDY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmNiNmRm
ZjVmMTUwNDM3NTEzZDU5YWYxMWYwZWJlNjM2YWYyZjc4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIg
KzE4MywxMiBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlw
ZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFOjplbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkK
K3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1f
cGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3Bs
YXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSkpOwogfQogCiBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRTo6d2ViS2l0TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQx
Mjc1NGVlMTZiYTkwMjJjZWFkZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNl
ZjkwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyTVNFLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhcios
IHVuc2lnbmVkKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7
Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQ
bGF5ZXJQcml2YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggOTIwOTViNjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYy
Y2Q1NmE4NDZiMzQ3NjEyMzQ0ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgogI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5
YmFja1BpcGVsaW5lLmNwcAppbmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhj
YTE2ZjIwLi44YTJmZjQzYWNhYmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXli
YWNrUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lk
IFBsYXliYWNrUGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9E
RUJVRygidHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1w
bGUoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6Omlz
TWFpblRocmVhZCgpKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGlu
ZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdz
dEVsZW1lbnQqIGFwcHNyYyA9IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5x
dWV1ZWRUaW1lID0gc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVk
aWFTYW1wbGUqIHNhbXBsZSA9IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVk
aWFTYW1wbGUuZ2V0KCkpOworICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0
aWNfY2FzdDxHU3RyZWFtZXJNZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBp
ZiAoc2FtcGxlLT5zYW1wbGUoKSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1w
bGUoKSkpIHsKICAgICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+
c2FtcGxlKCk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVm
ZmVyKGdzdFNhbXBsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmlu
ZGV4IDA4ZjBlNjBkMzMzMmY2ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZm
YzE2NGY2MjgxYjY5Yzc4NDc3Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQ
aXBlbGluZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0g
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ltYWdlR3RrLmNwcAppbmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdl
YmJlNWQ0Li44NDY0NWI3ZDUxOWMxNzJhNTNmMGMzNGI3YmE3NzU2MjdhMmEyYTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAg
LTM2LDE3ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlPiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQor
c3RhdGljIFJlZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29u
TmFtZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNl
cy9pbWFnZXMvJXMiLCBpY29uTmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRv
cHRHUmVmKGdfcmVzb3VyY2VzX2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9P
S1VQX0ZMQUdTX05PTkUsIG51bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+
c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0
X3NpemUoZGF0YS5nZXQoKSkpLCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIFdURk1vdmUoaWNvbik7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBmaWxlbmFtZSkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdz
aXplIGxlbmd0aDsKQEAgLTYwLDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlk
YXRlUGxhdGZvcm1EYXRhKCkKIHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRN
aXNzaW5nSW1hZ2VJY29uRnJvbVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPElt
YWdlPiBsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewog
ICAgIGludCBpY29uU2l6ZSA9IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAx
NjsKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CisgICAgYXV0byBpY29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8
R3RrSWNvbkluZm8+IGljb25JbmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29u
X3RoZW1lX2dldF9kZWZhdWx0KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwg
R1RLX0lDT05fTE9PS1VQX05PX1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3Rr
X2ljb25faW5mb19nZXRfZmlsZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+
c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVs
ZWFzZSgpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihn
dGtfaWNvbl9pbmZvX2dldF9maWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29u
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KGljb24pOwogICAgIH0KIAogICAgIHJldHVybiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUp
OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29u
c3QgY2hhciogbmFtZSkKK1JlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1p
c3NpbmdJbWFnZSIpID8gbG9hZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAz
Y2FjZThlZDliZWQ4MmIzOGNjMzgxOWQzM2JmZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThk
NTc1YmFlZjE3YzY3NTY1NmMyMTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCAr
NDgsMTAgQEAgY29uc3QgaGJfdGFnX3QgSGFyZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdr
JywgJ2UnLCAncicsICduJyk7CiAKIGNsYXNzIEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNv
dW50ZWQ8RmFjZUNhY2hlRW50cnk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
YWNlQ2FjaGVFbnRyeT4gY3JlYXRlKGhiX2ZhY2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZh
Y2VDYWNoZUVudHJ5PiBjcmVhdGUoaGJfZmFjZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGZhY2UpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZh
Y2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkp
OwogICAgIH0KICAgICB+RmFjZUNhY2hlRW50cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5k
ZXggNjMxNzlmZTgxNWU0MDU0NzMzZDQ5OWQ3NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0
YWYxYzA5NDhjZGU4ZWVhZTkxMjU4MDY5OWRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlIDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0
aWMgY29uc3QgaGJfdGFnX3Qga2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZC
dXp6RmFjZT4gY3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3Qg
dW5pcXVlSUQpCisgICAgc3RhdGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZv
cm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRh
LCB1bmlxdWVJRCkpOwogICAgIH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3
Yzk2OGYzNmY1ODgwZGQ0MGZjNWUwM2U5ZGJiYmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlm
OWU4NzA5MTE4OTNiMmIyY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAK
LVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFy
ICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hh
ciAqbmFtZSkKIHsKICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlQnVuZGxlRmluZGVyIGNsYXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0
aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
ZzpuYW1lXSBvZlR5cGU6QCJwbmciXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3
NTRkMDJhNDJkZTVlMzM0NmUxZDMwYTM2ZDU0NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2Iy
NDJhOGEyNDY0ZGJiMDFlNzU3YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3
ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAg
Y2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PE9wZW5UeXBlTWF0aERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVu
VHlwZU1hdGhEYXRhPiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBz
dGF0aWMgUmVmPE9wZW5UeXBlTWF0aERhdGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBmb250KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhE
YXRhKGZvbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0
YShmb250KSk7CiAgICAgfQogICAgIH5PcGVuVHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5o
CmluZGV4IDMyNDU2MzhhOGVmZTdhNTI5YTIzNmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVk
ZmM1YjY1NzdiOGU5MTIwOTU5MjEyZWUyN2EwNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAs
OCArMzAsOCBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQg
bnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhl
aWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3Qg
eyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBt
X2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5
OWI2YmNiZmI4YTI3M2U4ZjA1YzI1ZWQyLi40NTA5NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUy
ZjdjZjM4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQs
NyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0UGFzc2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYg
dGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBp
ZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0
MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZp
bHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0
U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5m
byhmaWx0ZXIsIGosIHNwYXJlU3VyZmFjZSk7CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0
dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVH
TDo6RmlsdGVySW5mbyhmaWx0ZXIuY29weVJlZigpLCBqLCBzcGFyZVN1cmZhY2UuY29weVJlZigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5oCmluZGV4IGM0YTgwMjI0YTg3ZWM1Y2E4YjViYWYwNjkyZGQ0MTE0NGZjYzZhYWEuLjNhNGQ4
MDQ3MzQyNmYyMTZmYzllZDFlYjNhMGI2N2NmZDY4NGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgK
QEAgLTU5LDE2ICs1OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dp
enpsZShjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYg
c291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0g
NCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsK
ICAgICBib29sIGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBzdHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAg
ICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZp
bHRlckluZm8oUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0g
MCwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVy
KGYpCisgICAgICAgIEZpbHRlckluZm8oUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVs
bHB0ciwgdW5zaWduZWQgcCA9IDAsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRy
KQorICAgICAgICAgICAgOiBmaWx0ZXIoV1RGTW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhw
KQotICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50
VGV4dHVyZShXVEZNb3ZlKHQpKQogICAgICAgICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBG
aWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3
ZjU1MDg4MmMzMGQ1ZmQwNmEyNDIyMmVlYzgwYWMwNC4uYTAyNmY0YzUwOGM4ZjRlMmQyMzI0MDQ1
YzMzNzA0Yzk1Njg2ZmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRl
cnMoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1f
bGF5ZXIuc2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNl
dERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCks
IGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggOTczMDQ3ZjQ5MDU3OWIyZmEyYzFmM2QzZjg0ODkyN2ExOTAxNmMxOS4u
MWY5ZTY4MjdkYTVkM2E1NTYzZjdkZWFkOWU1ZTIzZjNjOGFmZWZjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcApAQCAtMzIsMTEgKzMyLDExIEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIoKSA9
IGRlZmF1bHQ7CiAKIFRleHR1cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0Owog
Ci1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJl
RnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3Mg
ZmxhZ3MpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1
cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFn
cyBmbGFncykKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0g
bV90ZXh0dXJlUG9vbC0+YWNxdWlyZVRleHR1cmUoc2l6ZSwgZmxhZ3MpOwogICAgIHNlbGVjdGVk
VGV4dHVyZS0+cmVzZXQoc2l6ZSwgZmxhZ3MpOwotICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmUu
cmVsZWFzZSgpOworICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgK
aW5kZXggNzIzM2QwZGNjZDVjOGI1ZjVhOWM3NTAzMGU1NTkxYmI0YjM1MjM0MC4uNjczMGQ4ZTdi
ZGFmZjE2NWUwNzg4NzI2MTBjOTE4MDk3MjBkMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBlbmRDbGlwKCkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAw
OworICAgIHZpcnR1YWwgUmVmPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29s
KGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFj
cXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6
OkZsYWdzID0gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBh
dHRlcm5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJu
VHJhbnNmb3JtID0gcDsgfQogICAgIHZvaWQgc2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dy
YXBNb2RlID0gbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNWMwNmQz
YjRiYWIyZjc1MWY5ODFmZjdiNTgyZTZkLi45OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVm
YzIxMjY1ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogCkBAIC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVy
R0w6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3Nv
ckJveDsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNy
ZWF0ZVRleHR1cmUoKQorUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRl
VGV4dHVyZSgpCiB7CiAgICAgcmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRl
eHQzRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTFlYzY3ZmEyMGRmYjM4
NTBjN2Q1N2UyYzQ2YTlhOS4uZTdjODBlOTI2OTQ1YTBlNWNjOWE0Zjk0OWM4ODU3ZDAxZTM5NGJk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmRDbGlwKCkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7
CiAgICAgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIElu
dFNpemUoMjAwMCwgMjAwMCk7IH0KLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0
ZVRleHR1cmUoKSBvdmVycmlkZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVy
ZSgpIG92ZXJyaWRlOwogICAgIGlubGluZSBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250
ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQogCiAgICAgdm9pZCBk
cmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0
bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYsIGludCBw
YXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggZDM5Y2ZmY2JiNzg4OTFmZTEx
ZTVlOGM0YmExOGVjODcyOWExNGM2Mi4uYWIzNzdmZTM5NTFkYzdhZTgyMmYzZTBjNjUyZTNjNDI5
NzlkM2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tN
b2RlKGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0
dXJlOjpGQk9BdHRhY2htZW50KTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50
T3B0aW9ucyhvcHRpb25zKTsKQEAgLTM3NiwxNiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1
cmVNYXBwCiAgICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAg
ICAgc3VyZmFjZSA9IHN1cmZhY2UtPmFwcGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIs
IG1fY3VycmVudEZpbHRlcnMpOwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFj
ZShzdXJmYWNlLmdldCgpKTsKLSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHN1cmZhY2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBz
dXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQg
Y29tbWl0U3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBC
aXRtYXBUZXh0dXJlJiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5
KQogewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZh
Y2UuZ2V0KCkpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAg
ICB0YXJnZXRUcmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlv
bnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9u
cy50cmFuc2Zvcm0pOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3Vy
ZmFjZS5nZXQoKSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25z
LnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoc3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3Jt
LCBvcGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVy
bWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRPcAogICAgIH0KIAogICAgIGlmIChyZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNp
dHkgPT0gMSkgewotICAgICAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNl
LCByZWN0LCAxKTsKKyAgICAgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZh
Y2UsIHJlY3QsIDEpOwogICAgICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQog
CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aElu
dGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3AKICAgICAgICAgbWFp
blN1cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsKICAgICB9CiAKLSAgICBjb21taXRTdXJmYWNlKG9w
dGlvbnMsIG1haW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOworICAgIGNvbW1pdFN1
cmZhY2Uob3B0aW9ucywgKm1haW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOwogfQog
CiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKQEAgLTYzNyw5ICs2MzcsOSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQog
ICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0OwogfQogCi12b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tpbmdTdG9yZShSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4mJiBiYWNraW5nU3Rv
cmUpCiB7Ci0gICAgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbV9iYWNraW5n
U3RvcmUgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZSk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxh
eWVyOjpkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggM2IxYzE2YjBiMTMyZjUwYzY4MzMwMmUzZWIzN2I2ZTE2
MmIxNTRlNy4uYmVkMWY2Y2Q2NWIxOTZiYmQ2OTk4ZmRjMTM2ZDhjMTE4NjY3ZTExNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lk
IHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNv
bnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRC
YWNraW5nU3RvcmUoUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAg
dm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVu
bmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7
CiAgICAgdm9pZCBwYWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYpOwotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oCmluZGV4IDg1MTRhNGY3MzZhNTZkMzU4ZTRkMTI3ZGJlODI2OGQ3MjkxNmRhZDQu
LjQyMzhjNWQ4ZTRkYTAyYTkzNDc0MDIzMmU1ZjBhMWEwNDNlNjdlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xh
c3MgVGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
IDogcHVibGljIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAg
ICBzdGF0aWMgUmVmPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAg
ICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCBmODk3MTQ4OWFmZDhlNThlNTdiNDMzOTY1YmEwZDJmY2JlNDk0NzVkLi5hMjY2MmVmMGI5NjU2
Mjk4Yjg2ZTA1ODFlNjE1MWVhNjg3ZGI5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKCkKICAgICAg
ICAgICAgIHJlbGVhc2VJbWFnZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgICAgIGlmICghbV9j
b29yZGluYXRlZEltYWdlQmFja2luZykgewotICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdl
QmFja2luZyA9IG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29t
cG9zaXRlZEltYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcgPSBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCgqbV9jb21wb3Np
dGVkSW1hZ2UpOwogICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+YWRkSG9z
dCh0aGlzKTsKICAgICAgICAgICAgIG1fbGF5ZXJTdGF0ZS5pbWFnZUlEID0gbV9jb29yZGluYXRl
ZEltYWdlQmFja2luZy0+aWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGJmMjUxMTFkYmU1NDJmY2Jj
MzViNzdmZjA5ZTNmZmJhYTMxMzI4N2YuLmI3NzRlMDA1ZmMwMTVjNDUwMmNmZGVjZTQ4MDE3ZDEx
NzJjMzZjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVy
Q2hhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVu
dHNSZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFs
IFJlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQo
SW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3Qg
SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJ
bnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBm
NTI5NDc1NWEyMzM2NTVjMzA2NjU3MWNmNjM5YmVjYjUwYzAzMDUwLi41NjBjMmUxNjcyMWM2Njgy
NzNlZmZkMjdlYzE5MjlhMTUyNmJjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQ+KGltYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVu
dCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+
IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFn
ZT4mJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nKGNsaWVudCwgaW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGlu
YXRlZEltYWdlQmFja2luZyhjbGllbnQsIFdURk1vdmUoaW1hZ2UpKSk7CiB9CiAKLUNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBt
X2ltYWdlKGltYWdlKQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nKENsaWVudCYgY2xpZW50LCBSZWY8SW1hZ2U+JiYgaW1hZ2UpCisgICAgOiBtX2NsaWVu
dCgmY2xpZW50KQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1faWQoZ2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJD
b250ZW50c1RpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNsZWFyQ29udGVu
dHNUaW1lckZpcmVkKQogICAgICwgbV9pc0RpcnR5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCBiODYwM2M2OGU2MzY4
NGNiN2VlNGRjZThkMjUyNjI2ZTlmMWZkYWVjLi40YzY5ZTU4MjY2OWZlMjc4OWFhYzZhYTEyYzMz
YjU1YWFhNzI3YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUJhY2tpbmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCosIFBhc3NS
ZWZQdHI8SW1hZ2U+KTsKKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBj
cmVhdGUoQ2xpZW50JiwgUmVmPEltYWdlPiYmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZElt
YWdlQmFja2luZygpOwogCiAgICAgc3RhdGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgZ2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSopOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdl
QmFja2luZyhDbGllbnQqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAgQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcoQ2xpZW50JiwgUmVmPEltYWdlPiYmKTsKIAogICAgIHZvaWQgcmVsZWFzZVN1cmZh
Y2VJZk5lZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJpbGl0eUlmTmVlZGVkKGJvb2wmIGNo
YW5nZWRUb1Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMWU1OGJlZTBhZjAxNGU2MWZlNzBiZTk4ZTNlMzQyZDBm
OGY2NGU0Mi4uMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVu
Y3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1h
Z2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPElt
YWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5h
bWUpOwotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwotICAgIGltZy0+c2V0RGF0YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4g
aW1nLnJlbGVhc2UoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIo
bmFtZSk7CisgICAgYXV0byBpbWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMjNjODk5
ZTRhZWIyN2I0ZjIwNTVmZTJiNjY2Y2M2Li4xNmI2YjVkZmY4MDA1YzRmYTRiODcyMjM4NWQyOTcz
MzQ4NGIyY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3cuY3BwCkBAIC05MywyMCArOTMsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpjcmVhdGVXaW5kb3coSFdORCBwYXJlbnRId25kKQogfQogCiAjaWYgVVNF
KENBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hp
bGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihSZWY8UGxh
dGZvcm1DQUxheWVyPiYmIHJvb3RDaGlsZCkKIHsKLSAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9v
dENoaWxkKQorICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hpbGQucHRyKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX3Jvb3RDaGlsZCkKICAgICAgICAgbV9yb290Q2hpbGQtPnJl
bW92ZUZyb21TdXBlcmxheWVyKCk7CiAKLSAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKLQot
ICAgIGlmICghbV9yb290Q2hpbGQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3Jvb3RDaGlsZCA9IFdURk1vdmUocm9v
dENoaWxkKTsKIAogICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGNkZDBjYTMwNDEwYmE0YTZjOTI4
ZGZiOWU5ZmY2YTljNTVlOGQxOWQuLjRhMjBkOWUwYTdiY2NlMjA1MGM0NzRmMTc4NDBhMjBmMTZh
MmJmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0EpCiAgICAgUGxhdGZvcm1D
QUxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgp
OyB9Ci0gICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4pOworICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUmVmPFBsYXRmb3JtQ0FMYXllcj4mJik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKaW5kZXggMWI5MjI5ZTg2NjUyZDE5
NWRhYTdiMGRhZDIyNzNiYjNiYWYyMmFjMS4uOWRmYjVhZWQ1OTJiOWVhM2EwYzBlZmIyMjlmZThh
YjQ0NDU0OGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRt
YXBCcnVzaCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICAgICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAg
ICAgSUQyRDFCaXRtYXBCcnVzaCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxU
IGhyID0gcGxhdGZvcm1Db250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5h
dGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNo
UHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29u
dGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0
KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRl
cm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJu
QnJ1c2g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2hhcmVkR0RJT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2hhcmVkR0RJT2JqZWN0LmgKaW5kZXggODllNDIxOTNkZWYyMWI4ODhlMWEyMGUyYTFhMjc3
YjliN2Q0YzdlZi4uNGNlMzY3YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRH
RElPYmplY3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBTaGFyZWRHRElPYmplY3RfaAog
I2RlZmluZSBTaGFyZWRHRElPYmplY3RfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdESU9iamVjdDxUPj4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmpl
Y3QpCisgICAgc3RhdGljIFJlZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4g
b2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHRElPYmpl
Y3Q8VD4oV1RGTW92ZShvYmplY3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEdESU9iamVjdDxUPihXVEZNb3ZlKG9iamVjdCkpKTsKICAgICB9CiAKICAgICBUIGdldCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAppbmRleCA0MjU0ZWY5MDk3YjhkMjNjYzYwOWQ1MDM3NmIzOTA0MmI5NzFiNzllLi5l
NWJmMDRkYjIzZDJhY2I5Nzk1YTMyZTlhNDhlODNiMmIzODUyZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFOiB7CiAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24g
PSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAg
ICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihyZW5kZXJlciwgKnByZXZp
b3VzRWZmZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOwotICAgICAgICAgICAgcmVmZXJlbmNlT3Bl
cmF0aW9uLnNldEZpbHRlckVmZmVjdChlZmZlY3QpOworICAgICAgICAgICAgcmVmZXJlbmNlT3Bl
cmF0aW9uLnNldEZpbHRlckVmZmVjdChlZmZlY3QuY29weVJlZigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNw
cAppbmRleCBiZDFlNTVlNDA3NTc5MGI3NjEwZmQ1OWNiYmQ5ZWI4YTYwNTRiNzBmLi4xYTk0YTU2
MzBiMDcwNTQzMDA2MmQzNWMxZDI3NzRmZTcyMWJjODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+
IFJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAg
IHJldHVybiBtX2NhY2hlZEltYWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlciht
X3JlbmRlcmVyKSA6IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFn
ZSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6
Om51bGxJbWFnZSgpOwogfQogCiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJy
ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
MDIzODI1MjkyZTNjNDMzYmJjNmFkOTUxOWMzZjZhZDY0YjNiNzM2Mi4uMjhmMDFmYmRhMDgzZGFm
OTllOTNkNDYzYTEyYjg3YjZiNjgzYmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0zNzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eW91CiAgICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUg
Y29ybmVyUmVzaXplclNpemU7CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdl
Kj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRl
eHRBcmVhUmVzaXplQ29ybmVyQDJ4IikubGVha1JlZigpKTsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAg
ICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAg
Y29ybmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBj
b3JuZXJSZXNpemVyU2l6ZS5zY2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxv
UmVzKCZJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIiku
bGVha1JlZigpKTsKICAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFn
ZUxvUmVzOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5z
aXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAKaW5kZXggZTk4ZmYzMDdkZjk0NjA3ZjI4MzI3NGZmMmYxZjA1Nzg1YmQ2ZGNkYS4uNTIyMjA5
MDhjYTI0Mzc4NWI3ZjkyMTMwZGRmMGMzZjcxMDNlOTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC04OTAsOSArODkwLDkgQEAgYm9vbCBSZW5k
ZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gm
IG8sIGNvbnN0IFBhaW4KICAgICAvLyBiZSBvbmUgcGl4ZWwgY2xvc2VyIHRvIHRoZSBib3R0b20g
b2YgdGhlIGZpZWxkLiAgVGhpcyB0ZW5kcyB0byBsb29rIGJldHRlciB3aXRoIHRoZSB0ZXh0Lgog
ICAgIGJvdW5kcy5zZXRZKHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91
bmRzLmhlaWdodCgpICsgMSkgLyAyKTsKIAotICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsSW1hZ2Ug
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsK
LSAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdJbWFnZShpc1ByZXNzZWQobykgPyAqY2FuY2VsUHJlc3NlZEltYWdl
IDogKmNhbmNlbEltYWdlLCBib3VuZHMpOworICAgIHN0YXRpYyBJbWFnZSYgY2FuY2VsSW1hZ2Ug
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsK
KyAgICBzdGF0aWMgSW1hZ2UmIGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdJbWFnZShpc1ByZXNzZWQobykgPyBjYW5jZWxQcmVzc2VkSW1hZ2Ug
OiBjYW5jZWxJbWFnZSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzOSw4
ICs5MzksOCBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlckJveCYgbywgYwogICAgIC8vIGJlIG9uZSBwaXhlbCBj
bG9zZXIgdG8gdGhlIGJvdHRvbSBvZiB0aGUgZmllbGQuICBUaGlzIHRlbmRzIHRvIGxvb2sgYmV0
dGVyIHdpdGggdGhlIHRleHQuCiAgICAgYm91bmRzLnNldFkocGFyZW50Qm94LnkoKSArIChwYXJl
bnRCb3guaGVpZ2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkgKyAxKSAvIDIpOwogICAgIAotICAgIHN0
YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InNlYXJjaE1hZ25pZmllciIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdJbWFnZSgqbWFnbmlmaWVySW1hZ2UsIGJvdW5kcyk7CisgICAgc3RhdGljIEltYWdlJiBtYWdu
aWZpZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoTWFnbmlmaWVy
IikubGVha1JlZigpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25pZmll
ckltYWdlLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTc0LDggKzk3NCw4
IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNv
bnN0IFJlbmRlckJveCYgbywgY29uc3QgUGFpCiAgICAgLy8gYmUgb25lIHBpeGVsIGNsb3NlciB0
byB0aGUgYm90dG9tIG9mIHRoZSBmaWVsZC4gIFRoaXMgdGVuZHMgdG8gbG9vayBiZXR0ZXIgd2l0
aCB0aGUgdGV4dC4KICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5o
ZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAKLSAgICBzdGF0aWMgSW1hZ2Uq
IG1hZ25pZmllckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWdu
aWZpZXJSZXN1bHRzIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0lt
YWdlKCptYWduaWZpZXJJbWFnZSwgYm91bmRzKTsKKyAgICBzdGF0aWMgSW1hZ2UmIG1hZ25pZmll
ckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1
bHRzIikubGVha1JlZigpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25p
ZmllckltYWdlLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGVhOTM2YTRkYzgyZWJhYTRhNmFkOTI1ZWE3YWNjNjgzNGY5NDA3ZDAuLjBmYjgy
ODBlMTllMTA3NmY2MTZmYjNhOGQ1YjM5OTljMzUwZjE5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVucwogCiAgICAgLy8gQnVp
bGQgcGF0dGVybi4KICAgICBhdXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0
ZXJuRGF0YT4oKTsKLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShj
b3BpZWRJbWFnZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAK
ICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXgg
NzVmMjRjNGUyNjdhODM3NGE4YTI4ODA4NDJjNGQ2Yzc5Y2U2MzljYS4uY2EwZjY4ZmE5YWI5NmY5
NmFjNjNiZDZlZjE1YjIzNjJjYWZiMDdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTExNSwzMSArMTE1LDMwIEBAIGJv
b2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZm
dXNlQ29uc3RhbnRBdHRyKQogICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZm
dXNlQ29uc3RhbnQoZGlmZnVzZUNvbnN0YW50KCkpOwogCi0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0
U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSo+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRT
b3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNl
Jj4oZGlmZnVzZUxpZ2h0aW5nLT5saWdodFNvdXJjZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0
RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1l
bnQodGhpcyk7Ci0gICAgQVNTRVJUKGxpZ2h0U291cmNlKTsKICAgICBBU1NFUlQobGlnaHRFbGVt
ZW50KTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0dHIpCi0gICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgo
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+
YXppbXV0aCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIp
Ci0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+
ZWxldmF0aW9uKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0RWxldmF0aW9uKGxp
Z2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0WChsaWdodEVsZW1lbnQtPngo
KSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRYKGxpZ2h0RWxlbWVudC0+eCgpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55KCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp6QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRaKGxpZ2h0RWxlbWVu
dC0+eigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFoobGlnaHRFbGVtZW50LT56
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAg
ICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNB
dFgoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFgobGlnaHRFbGVt
ZW50LT5wb2ludHNBdFgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNB
dFlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WShsaWdodEVs
ZW1lbnQtPnBvaW50c0F0WSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50
c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9p
bnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOwogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFy
RXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRTcGVjdWxhckV4cG9u
ZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBvbmVudCgpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFu
Z2xlKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUo
bGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCw4ICsxODcsNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlcgogCiAgICAgY29uc3QgQ29sb3ImIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxVbml0TGVuZ3RoWCgp
LCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAppbmRleCA1NTY1YjkxZDEyYjhkZWM3Nzc1NmU1MGUwZjBmOTU0MzJj
YWUyYmIyLi4xNzA0MzdmMzJmYjMzYjRmZGVkNjNlNGNmOWNmYzE0OGQ5Y2ZkMWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CkBAIC0xMjYsMzEgKzEyNiwzMCBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdAogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCiAgICAgICAgIHJldHVy
biBzcGVjdWxhckxpZ2h0aW5nLT5zZXRTcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQo
KSk7CiAKLSAgICBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291
cmNlKj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRT
b3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRT
b3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNW
R0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFTU0VSVChsaWdo
dFNvdXJjZSk7CiAgICAgQVNTRVJUKGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNl
dEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3Vy
Y2UtPnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICAgICAgcmV0
dXJuIGxpZ2h0U291cmNlLnNldEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOworICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2Uuc2V0WChsaWdodEVsZW1lbnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxpZ2h0RWxlbWVu
dC0+eSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRFbGVtZW50LT55
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0
UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOworICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2Uuc2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOwogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CisgICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNB
dFkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50
c0F0WigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WihsaWdodEVs
ZW1lbnQtPnBvaW50c0F0WigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFy
RXhwb25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgICAgICByZXR1
cm4gbGlnaHRTb3VyY2Uuc2V0U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFy
RXhwb25lbnQoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVB
bmdsZUF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRpbmdDb25lQW5n
bGUobGlnaHRFbGVtZW50LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAgcmV0dXJuIGxp
Z2h0U291cmNlLnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25l
QW5nbGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xOTksOCArMTk4LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBj
b25zdCBDb2xvciYgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5n
Q29sb3IoKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNv
bnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCks
IFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qg
PSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUo
KSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmNwcAppbmRleCAzOTlkNmJhZTVhNjA0ZTNkM2RjOTM5Mzc2NTQzZjI1NWEzNDAxZTNjLi40NGQw
Y2JhODFlYjE2NjgyMzJmMDRmZjY1YjYwYjIwMzM2NTlmNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEltYWdl
KiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIGNvbnN0CiB7CiAgICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihy
ZW5kZXJlcik7CiAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgQVNTRVJUKCFp
bWFnZS0+c2l6ZSgpLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA4NTcxODUw
ODQxMDJkMGQ2NjFhMzA1YzZkZjFjNTk2Mjg1NmVhZTgwLi4zNTcyMDcxMTJjYTIxMThmZDAyZjc2
MWFjYWE1MTFkODY1MmIwNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICA6OlNob3dXaW5kb3cobV9mdWxs
c2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cpOwogCiAjaWYgVVNFKENBKQotICAgIG1fZnVs
bHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQpOworICAgIG1fZnVs
bHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIoKm1fcm9vdENoaWxkKTsKIAogICAgIFBs
YXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxh
eWVyKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIEFTU0VSVCh2aWRlb0xh
eWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IGJkZDk0MThiN2YzMGE4NzE0OWU3YWEx
ZGM3NGViMmQ2YzA5ZDdjYTYuLjdjM2ZiYjI3M2Y2MTc0Yjc0ODFkNGM1NWM1YjczYTJlNTEyZmNm
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgc2h1
dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRo
aXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRf
QVBJIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBv
cmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApAQCAtMjI1LDE3ICsyMjUsMTcgQEAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3Qg
Y2hhciogbmFtZSkKICAgICBlbHNlIGlmICghc3RyY21wKG5hbWUsICJmc1ZpZGVvUGxheSIpKQog
ICAgICAgICBpZHIgPSBJRFJfRlNfVklERU9fUExBWTsKICAgICBlbHNlCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEhSU1JDIHJlc0luZm8gPSBGaW5k
UmVzb3VyY2UoZ0luc3RhbmNlLCBNQUtFSU5UUkVTT1VSQ0UoaWRyKSwgTCJQTkciKTsKICAgICBp
ZiAoIXJlc0luZm8pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBIQU5ETEUgcmVzID0gTG9hZFJlc291cmNlKGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAgICAg
aWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB2b2lkKiByZXNvdXJjZSA9IExvY2tSZXNvdXJjZShyZXMpOwogICAgIGlmICghcmVzb3VyY2Up
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25l
ZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3RhbmNlLCByZXNJbmZvKTsKIAogICAgIHJldHVy
biBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihyZXNvdXJjZSksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKaW5kZXggNDAwNjU1ODY3NWEzMmE5ZTM3Yzk5MWFmMmEyNmQ2NzhhMzBjNzVkOS4u
NzYxNWYwOTFkZjM3M2M3YWU4YjU4Nzk1OWIxNGJmZmExNjE5ODdlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0zNDksOSArMzQ5LDkgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1
cmVNYXBwZXJMYXllciogbGEKICAgICBpZiAobV9iYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVy
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBt
X2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUpOwotICAgIGxheWVyLT5zZXRC
YWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxh
eWVyLCBiYWNraW5nU3RvcmUuY29weVJlZigpKTsKKyAgICBsYXllci0+c2V0QmFja2luZ1N0b3Jl
KFdURk1vdmUoYmFja2luZ1N0b3JlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
KQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1v
dmVCYWNraW5nU3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYgKCFi
YWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheWVyLT5zZXRCYWNraW5nU3Rv
cmUoMCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZShudWxscHRyKTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXpl
KFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdhZjY2NDhiMGUxNzg2NjNhYjc4Zjk3OGY4
OTNjZTU1ZGQ2NDUyZmIuLjUzZjA1Y2UwMDIyYTM2YTEyNTQyMmE1ZTUxOTRhYTRjMzZiYjg3ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC05NjQsNyArOTY0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFpc1ZhbGlkSW1hZ2VQcmVzZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IEN1cnNv
cihJbWFnZTo6bnVsbEltYWdlKCksIEludFBvaW50KCkpOworICAgICAgICBjdXJzb3IgPSBDdXJz
b3IoJkltYWdlOjpudWxsSW1hZ2UoKSwgSW50UG9pbnQoKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlNTU3MmUxNmQ1ZTBjNzgzMzlmNjZhMDNjNjUzOGE2NWMz
NWI5Y2M3Li44MTFlZWVhMjBiNGM4MjM0YzY0Mzg5NzQzMDJkZGU2YWNmYzYxMTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5j
TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0
YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0K
IAotUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpj
cmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSogaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lm
TmVlZGVkKEltYWdlJiBpbWFnZSkKIHsKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRChpbWFnZSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJl
KGltYWdlSUQsIFt0aGlzLCBpbWFnZV0gewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQoJmltYWdlKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCYWNraW5n
cy5lbnN1cmUoaW1hZ2VJRCwgW3RoaXMsICZpbWFnZV0geworICAgICAgICByZXR1cm4gQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSgqdGhpcywgaW1hZ2UpOwogICAgIH0pOwogICAgIHJl
dHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBkMmNhNzg0YjM5MDRi
NjZiNmViNjhiOTE0OGY0Y2NhYWRlNDE2YWQxLi43YzU0MDE4NzMyMGViYmU3ZmQ4ZDI3YmY0ODEw
MTcyNjM0YTIyNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICBib29sIGlzRmx1c2hpbmdMYXllckNo
YW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7
IH0KICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRl
SW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKFdlYkNvcmU6OkltYWdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICBib29sIHBhaW50
VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgLyogYXRsYXNJRCAqLywgV2ViQ29yZTo6SW50UG9pbnQm
LCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuY3BwCmluZGV4IDc2MWIyYTI0NDYxYTM0MWNkY2NlNzkyMDJhYzNjZTdjOTI1MzE2
NjkuLjJkZjQyZTk0NzMwZjE2MzgzZjliNWE3MzJlODI5NmNiNWMxYTI1ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBo
aWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21w
b3NpdGVkKGZpbHRlcnMpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhp
Y3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQorUmVmPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5
ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lciwgbV9jb250ZXh0KTsKIApAQCAtNTIsMTIgKzUyLDEy
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNy
ZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9yCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsK
IH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xh
eWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIHJldHVybiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lciwgbV9jb250ZXh0
KTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0FS
ZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5p
bWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9u
KFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjcmVhdGUo
dHlwZSwga2V5UGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAppbmRleCA4MzVlNGI3
MzQ4OTQ4OGM5ZDE2MzYxZWEwMmQxYTU4OWJhMDQ5ZjhiLi5lNGE5MjU3YTY5YWIyYWVmZDFlYTg2
ZDBjOGJjNTZjODU2NzhhNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKQEAgLTQ3LDkg
KzQ3LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBUmVt
b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6
OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxh
dGZvcm1DQUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9u
KFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY2Fu
J3QgY3VycmVudGx5IHByb3h5IGRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2UgY29udGVudHMsIHNv
IG9wdCBvdXQgb2YgdGhpcyBvcHRpbWl6YXRpb24uCiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNv
bXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKaW5kZXggZmY3NGM3MzNiNmM0
M2FmMjFiYjBlODFlOWI5NDMyZjY2NmNjZGY5Yi4uNjMzOWIyMjMwNjYzOGUwMmYwZjA5ZjFjZmU4
NzJlMTU2M2I3NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGtleVBh
dGgoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1t
CmluZGV4IDE2M2E3MmIyMDIyZGQ4YTkwMDU5NzU2MDRkNmE0OGUxODQ4MWE0ZWYuLmIxMDAzNzA0
OTAyMWUyNjgyZmNkOWFhYzNhMTNhMTFjOGM2Nzg3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUubW0KQEAgLTMwNiw5ICszMDYsOSBAQCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246
OgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodHlw
ZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0
cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb24gPSBjcmVhdGUoYW5pbWF0aW9uVHlwZSgp
LCBrZXlQYXRoKCkpOworICAgIGF1dG8gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUo
KSwga2V5UGF0aCgpKTsKICAgICAKICAgICBhbmltYXRpb24tPnNldEJlZ2luVGltZShiZWdpblRp
bWUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbigpKTsKQEAgLTMyMiw3
ICszMjIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0
aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVu
Y3Rpb24oKSk7CiAKLSAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPigqYW5p
bWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNFeHBsaWNpdEJlZ2luVGltZSgpKTsK
KyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPihhbmltYXRpb24uZ2V0KCkp
LnNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGhhc0V4cGxpY2l0QmVnaW5UaW1lKCkpOwogICAgIAog
ICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVlcy4KICAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309793</attachid>
            <date>2017-05-11 15:07:26 -0700</date>
            <delta_ts>2017-05-11 16:40:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171977-20170511150726.patch</filename>
            <type>text/plain</type>
            <size>179737</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyMGVmYzI5MTkyMDli
YmEzNzdhNzBhNjA2MjdiMDA4NzdmMWUwMy4uNzBiYjc1NDlkNmQyYTJjM2JhNzRhOGY2MDE4ZDlh
MjIzNWY0ZWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzOCBAQAogMjAxNy0wNS0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciBpbiBwbGF0Zm9ybS9ncmFwaGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2dyYXBo
aWNzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6
aW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRy
YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0
ZU91dE9mQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrOjpjYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRh
Q3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZDRi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWQ0Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJl
bGVhc2VNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlU3ByaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbToKKyAgICAgICAg
KFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9z
dDo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpj
b3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25G
b3JLZXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6Y2xp
cEZvclBhdHRlcm5GaWxsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6
RkVTcGVjdWxhckxpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvUGxheWJhY2tQaXBlbGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkTWlzc2luZ0ltYWdlSWNvbkZyb21UaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGYWNl
Q2FjaGVFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6ekZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6RmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlTWF0aERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpGaWx0ZXJJbmZv
OjpGaWx0ZXJJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJ
bnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2U6OmltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRy
YXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKToKKworMjAxNy0wNS0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciBpbiBwbGF0
Zm9ybS9hdWRpbwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxOTY2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YTRiMTE5M2JiMzIzMDMzMDhiZjFmMmI3
MmRiNjhiZTFmMjVkZmMwLi4zNWExNDk2NWE3YjUzMTcwZTRiMWQ5YjU1YzE1ZGQ0MGRiMmRmNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDUtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIg
aW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
SW50b0J1ZmZlcik6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzNGYyZjRmN2YzMGZhYTFlMGFiOGRmYzI5NTE4YTJmNzExYzVjMWE4Li4yZGM4NGU4
ZGU1ZDEzYzQ3MDUyZmU3NjczOWI4MTQ2MTVjOTM5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTctMDUtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIHVzaW5nIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxD
dXJzb3I+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllckNBUmVtb3Rl
OjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
Q0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5KToKKwogMjAxNy0w
NS0xMSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFJlbW92ZSBub3RpZmljYXRpb25zIGd1YXJkcyBmcm9tIEdUSyBBUEkgbGF5ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGMzMjRkYzExMmZmY2Zm
N2ZkOTdlNjRiNDRlNTRjNGFkNjUyNDQ5MDMuLmY5MGY3ZDk1MDlmMzVmOWI1MjZkODA3YTJjZGFm
ZGIxNzU5N2ZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApA
QCAtMTg2LDEzICsxODYsMTMgQEAgSW1hZ2UqIENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGF1dG8qIGNh
Y2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZSwgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogCiAgICAgaWYgKCFjYWNoZWRGcm9tSW1hZ2UgfHwgIWNh
Y2hlZFRvSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisgICAgICAg
IHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byogZnJvbUltYWdlID0gY2Fj
aGVkRnJvbUltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJlcik7CiAgICAgYXV0byogdG9J
bWFnZSA9IGNhY2hlZFRvSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRlcmVyKTsKIAogICAg
IGlmICghZnJvbUltYWdlIHx8ICF0b0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIG1fZ2Vu
ZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2Us
ICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAxNWMzY2FmODY5YzY5
ZmY0YWQ5MWQ5Yzc3ZmI4N2E5Y2UyNmEzMTIwLi43MzU2Y2U1ODRjZmVlYzY5MzcwMTgwNjE1OGEx
ZWM4YzQ1YTM1MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLCBvcHRpb25zKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQotICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIAogICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZTo6
bnVsbEltYWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAg
Ly8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQy
NCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuCiAgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybiBJbWFnZTo6bnVsbElt
YWdlKCk7CisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgYXV0byBp
bWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICB0ZXh0dXJlLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFNpegogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJl
Y3QoaW1hZ2VSZWN0KTsKICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0RmlsdGVyUmVnaW9uKGltYWdl
UmVjdCk7CiAgICAgaWYgKCFmaWx0ZXJSZW5kZXJlci0+YnVpbGQoKnJlbmRlcmVyLCBtX2ZpbHRl
ck9wZXJhdGlvbnMsIEZpbHRlckZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVy
UmVuZGVyZXItPmFwcGx5KCk7CiAKICAgICByZXR1cm4gZmlsdGVyUmVuZGVyZXItPm91dHB1dCgp
LT5jb3B5SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGIwYWRmMDVkMWVkYjJmNTQ1YWU4YzljODRmYjRiMDAwYTFkOWJiYTYuLjc5Yjgw
ODYxNmVkNGJmZWM4ZTk1YzgyZTgyODNlYWY5ZWU4MDU3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTY3LDE2ICsxNjcsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+
IENhY2hlZEltYWdlOjpicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMykgewotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZVZlcnlIaVJlcyhJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKCZJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZUAzeCIpLmxlYWtSZWYoKSk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZVZlcnlIaVJlcywgMyk7CiAgICAgfQog
CiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKLSAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoIm1pc3NpbmdJbWFnZUAyeCIpLmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlSGlSZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5sZWFrUmVmKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlTG9SZXMoJkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibWlzc2luZ0ltYWdlIikubGVha1JlZigpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoYnJva2VuSW1hZ2VMb1JlcywgMSk7CiB9CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBJbWFnZSog
Q2FjaGVkSW1hZ2U6OmltYWdlKCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7CiAKLSAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIxMCwxMSArMjEwLDEx
IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmICghbV9pbWFnZSkKLSAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZS0+aXNTVkdJbWFnZSgpKSB7CiAgICAgICAgIEltYWdlKiBpbWFn
ZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWFnZSAhPSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgICAgIGlmIChpbWFnZSAhPSAm
SW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKaW5kZXggOTNkMzc3N2FhMWE5ZjA3OWY3MTA0Yzk3NDVkN2RhMWNjYmJmZDU4MC4uZWMxMGNk
NWZmZjBmZTRkNWNmOTJiMTFmZjM2ZWI1OTdkNjQ4NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCog
aW1hZwogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IGIxOThhN2M0NGVmN2Q4ZmIzY2VlMmQ0OTRjZWVhMDc4NmI0NjhhOTAu
LjdkZGI3NTMyMDQ5N2YxNWYzNjBjODY2MTdhOTEwOTM4MWVkYjE3MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTU3LDEzICsxMTU3LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNv
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKLSAg
ICBpZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgSW1hZ2Um
IHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5s
ZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2lu
dDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndp
bmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5T
Y3JvbGxJY29uLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xs
SWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDNjYzc3MGM3NjgwYTdjNmVlMzNjZjM1NzM4MmE2M2Q3NGMxYzIzM2EuLjNkMDUyNjRm
ZmZhMzMwZjJmODVlYWFkZDlmYjViZWExOTllYTJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIgb2YgdGhlIGltYWdlcyBoYXNuJ3Qg
bG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFn
ZSgpIHx8IG1fdG9JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisgICAgaWYgKG1f
ZnJvbUltYWdlLnB0cigpID09ICZJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBiMTU0YjY1
ZDRhOTY5MGMyYjI0ZmJjZDM5ZDE0OTRiZTkyMTNlNmRlLi5kNDc3MWE5NjlmMjQ4Njc5YzhhYTEx
NjU1OWZjNzBlY2Y3NGZkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
MjBiYzEyMDkwYWZjNzM4ZTNhYWY4MzZkYzAzMGRhYzFjNWYxNGZiLi5jNDcwNzQ2NDhkZTdmNGIw
NzhjYTJmMWE2YWZhZWE4NDllZTc5NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTA3LDcgKzUwNyw2IEBAIHB1Ymxp
YzoKICAgICBIREMgaGRjKCkgY29uc3Q7CiAjaWYgUExBVEZPUk0oV0lOKQogI2lmIFVTRShXSU5H
REkpCi0gICAgdm9pZCBzZXRCaXRtYXAoUGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSYgYWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgdm9pZCByZXNldEFmZmluZVRyYW5z
Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IDUzYTIyYWE2ODQxZDgyN2E1ZDU0YTNmZWE3MjMwZDdhNjc2ZWRmMTcuLmU4NTNiZmViZTI2NTVj
ZGQzMTAyY2Y1ODlhZjA3MWMzODIzNzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBJbWFnZTo6fkltYWdlKCkKIHsK
IH0KIAotSW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQorSW1hZ2UmIEltYWdlOjpudWxsSW1hZ2Uo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIEltYWdlJiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmbnVs
bEltYWdlOworICAgIHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAppbmRleCBkZjlmMDQyNmY2ZTk3YjY3ZDU0MzNjNWRkZTRiOWE4NjYxYzYxYTYzLi43
MDY0MzAzYjI3NDZjODc1ODkzZDFhOTM4OWZlNzI1NmFhYjM3MmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTc5LDggKzc4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlKCk7CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElt
YWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
OCw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFpbnMgb25seSByZXNv
dXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSW1hZ2UmIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemUoY29uc3QgRmxvYXRTaXplJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNjQ5YjY4NjdkNDA0YzFhNTIzMjZhODEx
ZWM5MTkzMWNmODNhZDkyMi4uNTUwM2Q3YTE3YzVlOGZjMTQxMGQ2ZGMyNjBjZTgwNjhlNmI3MzVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxh
eWVyOjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCitSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCA1NDY2ZTIyMmQwNzkxNTRlNGYyZDY1MGJmYmQyYTg1NTEzZGNjYmIy
Li40NzJkNzU2OWIzMTk2YWE4MmNmOWYzYjhkMzNhZDE1ZmIwNzcxNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBwdWJsaWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKCk7
CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VM
b2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJh
Y2soQXVkaW9UcmFja1ByaXZhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggYTlhY2NjMjg0NjgwODU3MmQ0OGRlYTg0ZTdlNDEyYzZmOGYw
MDRhOC4uMjUxZTA3NjY1YWVjNzMzMmZkMWI1MjRjNTI2YmEyNDA2MzJkYjk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDE3ICszMSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVh
dGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGF0dGVybih0aWxlSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOwog
fQogCi1QYXR0ZXJuOjpQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVh
dFgsIGJvb2wgcmVwZWF0WSkKLSAgICA6IG1fdGlsZUltYWdlKGltYWdlKQorUGF0dGVybjo6UGF0
dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorICAg
IDogbV90aWxlSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAgLCBtX3JlcGVhdFgocmVwZWF0WCkK
ICAgICAsIG1fcmVwZWF0WShyZXBlYXRZKQogewotICAgIEFTU0VSVChtX3RpbGVJbWFnZSk7CiB9
CiAKIFBhdHRlcm46On5QYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCAyNTZmYTJkNWZiNGM1NTUwMzYxMjdlYmI5MmY0YWY5YjQyNTQ0Y2I2
Li40ODM4NmZhZGNmZDY0ZjRlNjAyNjczNmI1ODBjYzQwNmQyNjVjMjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01NSwxMCArNTUsMTAgQEAgY2xhc3MgSW1hZ2U7CiAK
IGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0
ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpOwogICAgIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CiAKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVwZWF0WSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUGFzc1Jl
ZlB0cjxJbWFnZT4sIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQYXR0ZXJuKFJl
ZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBtX3RpbGVJbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdlOwogICAgIGJvb2wg
bV9yZXBlYXRYOwogICAgIGJvb2wgbV9yZXBlYXRZOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggMjBiZTNkMTdhZmYzNjE3ZGYw
MGQ4ZGVhZWM1OTQwMjkwMTU3NjExNC4uOTVmNjU1M2VmZGNiY2UyODU1Y2ZiODBlZWUwN2NlN2Q0
MGRjNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC02NSwxNCArNjUsMTQgQEAgcHVibGljOgogICAgICAgICBT
aG93aW5nCiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gY3JlYXRlKFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgVHJhY2tUeXBlIHR5cGUsIGludCB1bmlxdWVJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXRmb3JtVGV4dFRyYWNrPiBjcmVhdGUoUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVHJhY2tNb2RlIG1v
ZGUsIFRyYWNrS2luZCBraW5kLCBUcmFja1R5cGUgdHlwZSwgaW50IHVuaXF1ZUlkKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGllbnQsIGxh
YmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlkLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhjbGll
bnQsIGxhYmVsLCBsYW5ndWFnZSwgU3RyaW5nKCksIG1vZGUsIGtpbmQsIHR5cGUsIHVuaXF1ZUlk
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tpbmQga2lu
ZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3Jt
VGV4dFRyYWNrPiBjcmVhdGVPdXRPZkJhbmQoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiB1cmwsIFRyYWNrTW9kZSBtb2RlLCBUcmFja0tp
bmQga2luZCwgaW50IHVuaXF1ZUlkLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1UZXh0VHJhY2sobnVsbHB0ciwgbGFiZWwsIGxhbmd1
YWdlLCB1cmwsIG1vZGUsIGtpbmQsIE91dE9mQmFuZCwgdW5pcXVlSWQsIGlzRGVmYXVsdCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybVRleHRUcmFjayhudWxscHRyLCBs
YWJlbCwgbGFuZ3VhZ2UsIHVybCwgbW9kZSwga2luZCwgT3V0T2ZCYW5kLCB1bmlxdWVJZCwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1UZXh0VHJhY2soKSB7IH0K
QEAgLTg3LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZDsgfQogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RlZmF1bHQ7IH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRleHRUcmFjayogY2FwdGlvbk1l
bnVPZmZJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2smIGNhcHRpb25NZW51T2Zm
SXRlbSgpCiAgICAgewotICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sqIG9mZiA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCAiIiwgU2hv
d2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxh
dGZvcm1UZXh0VHJhY2smIG9mZiA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gb2ZmOwogICAgIH0KIAotICAgIHN0YXRpYyBQbGF0Zm9ybVRl
eHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKKyAgICBzdGF0aWMgUGxhdGZvcm1U
ZXh0VHJhY2smIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgewotICAgICAgICBzdGF0
aWMgUGxhdGZvcm1UZXh0VHJhY2sqIGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUs
IEluQmFuZCwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgUGxhdGZvcm1UZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCAiIiwgU2hvd2luZywgU3VidGl0bGUsIEluQmFuZCwgMCkubGVha1JlZigp
OwogICAgICAgICByZXR1cm4gYXV0b21hdGljOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBi
NDliZDFlMzdmMGM3ZDA2YTllYjM4YmNkMGMxYzNjMGJjMzg3OTJkLi4yYzkzNTIwNjExY2E1MDNi
OTBjNmYzMGE1YjBmOTJlZjcyOTE4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitSZWY8SW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGPiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kIGtpbmQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYoa2luZCwgY3VlRm9ybWF0LCBpZCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihraW5kLCBjdWVGb3JtYXQsIGlk
KSk7CiB9CiAKIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6SW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQga2luZCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKQEAgLTU1LDcgKzU1LDcgQEAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOjp+SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKCkKIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gcHJwQ3VlRGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IERhdGEpOwog
ICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpAQCAtNjMsMTEgKzYz
LDEwIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjdWVEYXRhID0gcHJwQ3VlRGF0YTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBzdGFy
dDsKICAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQotICAgICAgICBtX2luY29tcGxl
dGVDdWVzLmFwcGVuZChJbmNvbXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLmdldCgpLCBzdGFy
dCB9KTsKLSAgICBjbGllbnQoKS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBjdWVEYXRhLnJlbGVh
c2VOb25OdWxsKCksIHR5cGUpOworICAgICAgICBtX2luY29tcGxldGVDdWVzLmFwcGVuZChJbmNv
bXBsZXRlTWV0YURhdGFDdWUgeyBjdWVEYXRhLnB0cigpLCBzdGFydCB9KTsKKyAgICBjbGllbnQo
KS0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBXVEZNb3ZlKGN1ZURhdGEpLCB0eXBlKTsKIH0KIAog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVF
bmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggZmY0MmZhMmY0NGY5
ZDZmZjFlODU3MzJlYjViN2U1ZTUxYWJhNzM5Ny4uNTJmZDlhNmExN2I4NDRjMWFjZGFiYTViZGEy
YzE1MjY2Mzk0ODRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgSW5jb21w
bGV0ZU1ldGFEYXRhQ3VlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
QVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEtp
bmQsIEN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSk7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0ZShLaW5k
LCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20pOwogCiAgICAg
fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlh
VGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAppbmRleCA5NTk2ZjhjYTNjMTdlNDVkZmNlMThkN2FkMDI0ZTBjNTFkNTJk
MGQyLi5hN2NhYTZlYzk4MjNjYmNlMmJhMDM4NmQwZjNhZGVlYzMxYTY4MzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRl
ZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5n
IGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJm
LCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAg
Y2xpZW50KCktPmFkZEdlbmVyaWNDdWUoV1RGTW92ZShjdWVEYXRhKSk7CisgICAgICAgIGNsaWVu
dCgpLT5hZGRHZW5lcmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIAogICAgIG1fcGVuZGluZ0N1ZVN0
YXR1cyA9IHNlZWtpbmcoKSA/IERlbGl2ZXJlZER1cmluZ1NlZWsgOiBWYWxpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNl
bGVjdGlvbkdyb3VwQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKaW5kZXggOTY0NTMzNzU5
ZGQ4MDg2NjExMjM2MGM1Y2QxZGE5MGJmODAwOGMzZC4uNzg2MzU0MTQxYTRiMWVlYTFiM2M3NTc1
Y2JhNmUzY2NmYzQyNGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGNyZWF0ZShNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQyYsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKik7CiAKICAgICB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdDsKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDPiBjcmVhdGUo
QVZQbGF5ZXJJdGVtKiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNoYXJhY3RlcmlzdGljcyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0ZXJpc3RpY3MpOwogICAgIH5NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQygpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RlZE9wdGlvbihNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5tbQppbmRleCA4ZGVlMDljZTA4NmFkYWY1YmUyN2MyMDA4YWNiMjVkZDg5
MmMzNWVlLi4zMGY4MWFkY2FmOGYyMzczOTA5OTZlZDY1MGU3ZThiMWNmNmE1Y2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCkBAIC00OCw5
ICs0OCw5IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxlY3Rpb25P
cHRpb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakM+IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0
aW9uKQorUmVmPE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMmIGdyb3VwLCBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uICpvcHRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMoZ3JvdXAsIG9wdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyhncm91cCwgb3B0aW9uKSk7
CiB9CiAKIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzo6TWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDKE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDJiBncm91cCwgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqb3B0aW9uKQpAQCAtODUsOSArODUsOSBAQCBpbnQgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjppbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIFtbbV9ncm91cC0+YXZNZWRpYVNl
bGVjdGlvbkdyb3VwKCkgb3B0aW9uc10gaW5kZXhPZk9iamVjdDptX21lZGlhU2VsZWN0aW9uT3B0
aW9uLmdldCgpXTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQz4g
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShBVlBsYXllckl0ZW0gKml0ZW0sIEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjaGFyYWN0
ZXJpc3RpY3MpCitSZWY8TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM+IE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOjpjcmVhdGUoQVZQbGF5ZXJJdGVtICppdGVtLCBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmdyb3VwLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMoaXRlbSwg
Z3JvdXAsIGNoYXJhY3RlcmlzdGljcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKGl0ZW0sIGdyb3VwLCBjaGFyYWN0ZXJpc3RpY3MpKTsKIH0K
IAogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpD
KEFWUGxheWVySXRlbSAqaXRlbSwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwICpncm91cCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzdGljcykKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjaGFyYWN0ZXJpcwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYWRk
ZWRBVk9wdGlvbiBpbiBhZGRlZEFWT3B0aW9ucy5nZXQoKSkgewogICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
LSAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5wdHIoKTsKICAgICAgICAgbV9v
cHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBXVEZNb3ZlKGFkZGVkT3B0aW9uKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5o
CmluZGV4IDkwYTE4NjE5ZTAyNzE2Zjc2ZjFmMGJiMjkwNjQ0ZjRlZDU3Nzc2NDMuLjFhM2RmOTE3
Y2RhNDdhMDE0Y2JmMzc5OTFkNTI5MGVlYmE5Y2Q0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y+IGNyZWF0ZShBVkZJbmJhbmRUcmFj
a1BhcmVudCogcGxheWVyLCAgQVZDRk1lZGlhU2VsZWN0aW9uT3B0aW9uUmVmIHNlbGVjdGlvbiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgUmVm
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJlbnQq
IHBsYXllciwgIEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvblJlZiBzZWxlY3Rpb24sIEluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWQ0YocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAgIH5J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaAppbmRleCAwYzljMzMy
NjgwZTBhYWVmOWYyMzMzYWQxNTZjNTRhMmNiMGViMTZlLi5jM2EwZTg4ZjRjMGJmMjQzZDI5ZjA4
OTgyOTBmMTI2NzA3ZGJmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0YgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGxheWVy
LCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiogcGxheWVyLCBBVkNGUGxheWVySXRlbVRyYWNrUmVmIHRyYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
RihwbGF5ZXIsIHRyYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwNWZkMDI2YTM0
ZDM1MTczZGUyZWYxYzYzNmM4OWQxNzQ1NDA0MTJlLi4yOWM0N2EwNjJiOTM0YTRiMDc4NDM5ZjBi
YTY1ZGNiZWM1MDBmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVB
VkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGF2UmVxdWVzdCkK
K1JlZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBhcmVudCwgQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBhdlJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGF2
UmVxdWVzdCk7CiAgICAgQVNTRVJUKHBhcmVudCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyKHBhcmVudCwgYXZSZXF1ZXN0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVz
dCkpOwogfQogCiBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBwYXJlbnQsIEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgYXZSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXggYTBmMGRkOGIwODQwMDNl
ZjI0ZjBlODQyZWQ0NzZkODE1NmYzMjBjMy4uZGFlMDZlMTkyMzg2ODY5NjEwZjcwZmI4MTVmMWUx
MmVkYTYwYmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOwogY2xhc3MgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+LCBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiogcGFyZW50LCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmKTsKICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggNzFlNzEy
ZWI3OWI5MDA5MDAxYjg0MmIyNzVjOTIzZTg0YTFjY2M3MC4uMGRhMmFkMDZiODU4NGVhZjRmZGQ1
MDc3ZmVmMWYwZjU5ZTJjMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBz
eXN0ZW1Db2RlKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVz
c2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CiAK
ICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCmluZGV4IDU1MTNmM2RmZjViYmNiZDNhZTk1ZDkyNzc1MWJkMWE0YTM0
NzUzN2QuLmMyMjQzNDcwMjQwZGQwNTJlYjI1ZTI2YzQ2YTdjZGZlYWM1MGE4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogICAgIFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBBU1NFUlQobV9tb2RlID09IEtleVJlbGVh
c2UpOwogICAgIG1fY2VydGlmaWNhdGUgPSBtX2luaXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCmluZGV4IGI4YzdkOWI5ZTEz
MjdkZmEwMzlhZTRjOWQxZGYzZTNiOTViZjRkYzkuLmIwYjUzZThkZjcxMGVlNDdhZmQzMmFjZGQ4
MTEyMzQyMTUwZTk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24qKTsKIAogcHJvdGVjdGVkOgotICAgIFBh
c3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSk7CisgICAgUmVmUHRyPFVpbnQ4
QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8QVZTdHJl
YW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlODUxOWUyNmE2YjdkMGUwMDI2
ZDFlOTZmZmJhYjZlNmQxODZjNDhhLi42ZWFjNjk4OGUxY2FlNTMyYmVhOTdiZmYwNDZjMjQyZGQy
YzQyMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24ubW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKICAgICAg
ICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CiAK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkKK1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVp
bnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIEFTU0VSVChtX21vZGUgPT0gS2V5UmVsZWFzZSk7
CiAgICAgbV9jZXJ0aWZpY2F0ZSA9IG1faW5pdERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmLi4xOGE5NGFkM2NjMTU4ZjAxNDIwOTg1
M2MzNTJmYWMwMGY0Y2I1ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRy
YWNrUGFyZW50KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFJlZjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50
KiBwbGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24sIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBmb3JtYXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDKHBsYXllciwgc2VsZWN0aW9u
LCBmb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMocGxheWVyLCBzZWxlY3Rpb24sIGZvcm1hdCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpD
LmgKaW5kZXggZjM4NWEzZjJjNmIyMDMwZWIyMmZlM2IyMDI3MWI5OGM5MGY3N2YwMi4uYjg0MTU0
YzY5ZTcwYjhiOWJiMDVkZDk4MTg2MDdhMDZhYjE3YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDIDogcHVi
bGljIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayAq
dHJhY2spCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBsYXllciwgQVZQ
bGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQyhwbGF5ZXIsIHRyYWNrKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKHBsYXllciwgdHJhY2spKTsKICAgICB9CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCBhMTRjNDFlM2VkZWFiNDY2Nzc2
ZGIyOWY1NTM1ZDIyY2ViZGM0YTVmLi5iN2EyNGI2ODIyYWYzYWViYjgyZDFhZWQ3NDJiNTVlZGE3
OWU3MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9PdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3V0
T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gY3JlYXRlKEFWRkluYmFuZFRyYWNrUGFyZW50KiBw
bGF5ZXIsICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3Rpb24pCisgICAgc3RhdGljIFJl
ZjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiBjcmVhdGUoQVZGSW5iYW5kVHJhY2tQYXJl
bnQqIHBsYXllciwgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24qIHNlbGVjdGlvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihw
bGF5ZXIsIHNlbGVjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKHBsYXllciwgc2VsZWN0aW9uKSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgcHJvY2Vzc0N1ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2Q3Zjc3MzZlODA3ZjVkMTAyYzI2M2E0ZmQxMjA5OWJk
YzRhYjhiNy4uZjVlMzc0MDQyOTQyYWY1OWYyMDliOWMxNWU2YWY4OWI3YTZlYWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4sIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopOworICAgIHN0YXRpYyBS
ZWY8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJiMjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUy
NTU3Ny4uNGY3ZDQxZDVhYzU5NGNkMGY5MTE1MjY2MGM1ZGE0MDU3NTIxNWM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
NDIsMTEgKzQyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKmF2UmVxdWVzdCkKK1JlZjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKmF2UmVx
dWVzdCkKIHsKICAgICBBU1NFUlQoYXZSZXF1ZXN0KTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2
UmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwogfQogCiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6
OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICphdlJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAppbmRleCBmOTFkZDNlYmFmNDk2NGQ0NmEyZTNiMzczMWEyMDY0YTdmMzkxYzdj
Li42NTExM2IwZDJhYjg1ZTI3NTA1ZTc2NWY4NjFjNmMzOTllNjBkZmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRm
b3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVy
VHlwZSwgb3duZXIpOwpAQCAtMzU2LDEzICszNTYsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXkKICAgICBpZiAocmVzdWx0LT5jYW5IYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJlc3Vs
dC0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkpOwogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyV2lu
OjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKIH0KICAgICAKLVBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxh
dGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlv
bihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHR5cGUsIGtleVBhdGgpOwpA
QCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXll
ciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKS5wdHIoKSkgOiBu
dWxscHRyOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVy
cG9zZSA6IE5vQ29udGVudHNMYXllcjsKIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
ciAmJiBtX2NvbnRlbnRzTGF5ZXIpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBHcmFwaGljc0xheWVy
Q0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNh
U3RhdGUpCiB7CiAgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhw
bG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgogICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwg
cmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURl
cHRoKQpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFu
aW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBp
ZiAoIXZhbHVlc09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVP
ZmZzZXQpKTsKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTM0LDcgKzI5MzQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbAogICAgIGlmICghdmFsaWRNYXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5h
cHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgp
LCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAs
IHRpbWVPZmZzZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzAxNSw3ICszMDE1LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1
ZXNPSyk7CiAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgsIHRpbWVP
ZmZzZXQpKTsKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAt
MzA1NCwyNCArMzA1NCwyNCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlRmlsdGVyQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpcwogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJD
QTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3Jh
cGhpY3NMYXllckNBOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYmFzaWNBbmltID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24o
YmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgYXV0byBiYXNpY0FuaW0gPSBj
cmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBrZXlQ
YXRoKTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZl
KTsKICAgICByZXR1cm4gYmFzaWNBbmltOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
ZGRpdGl2ZSkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFt
ZSwga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmlt
LCBhZGRpdGl2ZSk7CisgICAgYXV0byBrZXlmcmFtZUFuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBrZXlQYXRoKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0ucHRyKCksIGFuaW0sIGFkZGl0aXZlKTsKICAgICByZXR1
cm4ga2V5ZnJhbWVBbmltOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCitSZWY8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVTcHJpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpCiB7CiAgICAg
YXV0byBiYXNpY0FuaW0gPSBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNwcmluZywga2V5UGF0aCk7Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdl
dCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLnB0cigp
LCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJhc2ljQW5pbTsKIH0KIApAQCAtMzc0MCw3
ICszNzQwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiAgICAgc2V0TGF5ZXJEZWJ1Z0JvcmRlcigqY29u
dGVudHNMYXllciwgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSksIGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpz
b3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewog
ICAgIGlmICghc291cmNlTGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzg1Myw3
ICszODUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcyhTY2hlZHVsZUZsdXNoT3JOb3Qgc2NoZWR1bGUKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9u
ZUxldmVsIGNsb25lTGV2ZWwpCitSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVy
Q0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FT
dGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHN0cnVjdHVyYWxMYXllcjsKQEAgLTM5NjcsMTYgKzM5NjcsMTYgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5
ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBsYXll
ci0+Y2xvbmUodGhpcyk7CisgICAgYXV0byBuZXdMYXllciA9IGxheWVyLT5jbG9uZSh0aGlzKTsK
IAogICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKICAgICAg
ICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7Ci0gICAgICAgIGNvcHlB
bmltYXRpb25zKGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25z
KGxheWVyLCBuZXdMYXllci5wdHIoKSk7CiAgICAgfQogCi0gICAgc2V0TGF5ZXJEZWJ1Z0JvcmRl
cigqbmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9y
ZGVyKCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOworICAgIHNldExheWVyRGVidWdCb3JkZXIo
bmV3TGF5ZXIsIGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkpLCBjbG9uZUxheWVyQm9yZGVyV2lkdGgpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAppbmRleCBiOWIxODQyZmZlZjdjYWNlNDk0OTAxMDIxMGZjMzZiZDBjMDAwMjEzLi41
MTM5ZmFmODJlN2Y4MmU4ZmNmZGI1YzVmZDE2NWE1MDA5ZTdjYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAt
MjE5LDkgKzIxOSw5IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVy
RGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAg
IHZpcnR1YWwgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKKyAg
ICB2aXJ0dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgdmlydHVhbCBS
ZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOwogCiAg
ICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQo
KTsgfQogICAgIFBsYXRmb3JtQ0FMYXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7
CkBAIC0yNDAsOSArMjQwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZUZpbHRlckFuaW1h
dGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAK
ICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0g
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGFkZGl0aXZlKTsKKyAgICBSZWY8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVNwcmluZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBib29s
IGFkZGl0aXZlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24q
LCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKICAgICAKICAgICBjb25zdCBUaW1p
bmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsK
ICAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwogICAgIH07Ci0gICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7
CiAKICAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCB9OwotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVs
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAq
LCBDbG9uZUxldmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xv
bmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAK
ICAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgY29udGVudHNTaGFwZU1hc2tMYXllciwKQEAgLTU2MCw4ICs1NjAsOCBAQCBw
cml2YXRlOgogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0
aW9uKQorICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1l
T2Zmc2V0KQorICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgICAgICAgICAsIG1fcHJv
cGVydHkocHJvcGVydHkpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgKaW5kZXggY2M4ZDgzZmUyZjNkYWE2NmUxMzk5MDg4ZWY0MTBmYWRmYjExYzAwOC4uYTAy
YjMxNThmOGUzMGQ5YTI5MjAyOGMyMmQ0OTUzNjQ2YmYzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1D
QUFuaW1hdGlvbldpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNv
bnN0ID0gMDsKICAgICAKICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBiZTQzYTk5NDZh
NDg2YTg0MDJkOWE3MjVkOWI2ZDhhYTdlZTY2MTkyLi41MWVhODMzYzM1MmFlMThhOGMwZjRkYzE5
MThkZWE0OGVjYmU3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2Eu
aApAQCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoQ0FBbmlt
YXRpb24gKiwgYm9vbCk7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVhbCB+
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKCk7CiAKICAgICBib29sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRm
b3JtQW5pbWF0aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXggMzUyNmQ2M2ZlZTYzYWM4YTNk
YWIwNTAxZmQ0MDIyYThmMTM4YjE2Zi4uNjYxY2Q0MTI1OTY3ZjZmMTM1YWIwOTRiMTg4NTE5YTU1
MjdjNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQpAQCAt
MTQ5LDE0ICsxNDksMTQgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBXZWJDb3JlOjp0b0NBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGkKICAgICByZXR1cm4gW0NB
TWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rp
b25MaW5lYXJdOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKHR5cGUs
IGtleVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EodHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVm
IGFuaW1hdGlvbikKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoYW5pbWF0aW9uKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKGFuaW1hdGlv
bikpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OlBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAgLTE5Niw5
ICsxOTYsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6On5QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EoKQogewogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y29weSgpIGNvbnN0CitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5
UGF0aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtl
eVBhdGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkp
OwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CkBAIC0yMTIsNyArMjEy
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJv
bSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24o
KSk7CiAKLSAgICBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhhc0V4cGxpY2l0
QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBzZXRIYXNFeHBsaWNpdEJlZ2lu
VGltZShkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbi5nZXQoKSku
cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRp
b24oKSkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1l
IHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0Fic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaAppbmRleCAzOWZjOGIwOTg2NmFjZDRkNjQwNzcw
MmQyOThjZjM0YTQ0Yzk0YmRkLi4wYWI1OGU3ZTJjZmRiZmUwMzc4YmQ4NzEyMTUwN2Q2NjA1MWI3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9BYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNOb3coKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRh
ZWIxNDBjNWNhYTVhZDM0YmJmOTU4NmVjOTg1YzU5OWRmYjQyZmMuLjRhOGY1OTcyN2M2NjEyZTNj
MWFjOWRlNWMzMTI5NzliNmViYjZmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQorUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsOSArMjA4LDkgQEAgUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9z
dDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmFkZFBl
bmRpbmdBbmltYXRlZExheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpCiB7Ci0gICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVy
cy5hZGQoJmxheWVyKTsKIH0KIAogdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKaW5kZXgg
OWU0ZWQ4MjVlZTU1NzQ4NTlkYWIwZjJmYjllZGQxMDQ5YmZjNDg4MS4uNTQyNGIwMDUwNTNlM2Zh
ZGRiMTYwYjAyZDA3ZmEyNTA3NTgwNDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTU3LDcgKzU2LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nOwogCiBjbGFzcyBDQUNGTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiwgcHJpdmF0ZSBB
YnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+Q0FDRkxheWVyVHJlZUhvc3QoKTsK
IAogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKQEAg
LTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
Ly8gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdAotICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5n
QW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRMYXllcihQbGF0Zm9ybUNBTGF5ZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDI3ZGUyYjVkNTc2YjJkODc1MWFmNDI0Y2QxYTAwYmFhNDJmNjI3
ZjEuLjkwYTgzZjBhNTIxYTJhZTBmMmU3MGMwNTBkYTExMmFlZGUzMTU1MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FDRlRpbWluZ0Z1bmN0aW9uUmVmPiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvCiAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7CiB9CiAKLVBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKEFuaW1hdGlv
blR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorUmVmPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4odHlwZSwga2V5UGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5p
bWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bihhbmltYXRpb24pKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbldpbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKQEAg
LTE3Nyw5ICsxNzcsOSBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKICAgICBtX2FuaW1hdGlvbiA9
IGFuaW1hdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKK1JlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0
aCgpKTsKKyAgICBhdXRvIGFuaW1hdGlvbiA9IGNyZWF0ZShhbmltYXRpb25UeXBlKCksIGtleVBh
dGgoKSk7CiAgICAgCiAgICAgYW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYmVnaW5UaW1lKCkpOwog
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaAppbmRleCBlZmM2ZGJhMTYzNDAxZDgzOGFkY2M0Y2E4NTM2Mzk4Zjg5Yzk3
NzkyLi4xNjJkNjI2YTY2ODUwNTBhYjc3ZTdlMWFkODdjYjYxYWVkOGM4NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4gZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1DQUFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBs
YXRmb3JtQW5pbWF0aW9uUmVmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmKTsK
IAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25XaW4oKTsKIAogICAgIGJvb2wgaXNQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkMzdmMjQxYWE4YWI4MmQ0
NDkzYmFmMjY1ZDc3MmVkOGE2NmQ2NDQwLi41ZTE0OWZkNGE4MWZlNTA4NjZhZWEwNTBhMTdjYmRk
Zjk2MzQzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBp
dCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CiAgICAgQWJzdHJhY3RD
QUNGTGF5ZXJUcmVlSG9zdCogaG9zdCA9IGxheWVyVHJlZUhvc3RGb3JMYXllcih0aGlzKTsKICAg
ICBpZiAoaG9zdCkKLSAgICAgICAgaG9zdC0+YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIodGhpcyk7
CisgICAgICAgIGhvc3QtPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKCp0aGlzKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJmMTM0YTAz
YWUyMDEwNWUyYmVkODNiYmRhNjNjNWY3NzY1NGNiMzIuLjgyNWE4ZDAxNjFiMjFjNDlkNGRiYTQ0
NmQ0ZjkwMjI4NDgwYzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cApAQCAtNjYsMTAgKzY2LDEwIEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
LCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsCiBTT0ZUX0xJTktf
T1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNob3VsZElu
dmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29sIHNob3Vs
ZEludmVydENvbG9ycykpCiBTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCi1QYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKK1JlZlB0cjxXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdD4gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAg
aWYgKCFXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zTGlicmFyeSgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdL
Q0FDRlZpZXdMYXllclRyZWVIb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmgKaW5kZXggZTRkYjJjNDQ4MjkxZGQ3Nzg4ZmNhOTdjY2Q1MmQzZDhiMTgzOGQ0OS4uMzdjYTA3
MzMxZDZlNjVhNjNlMzBjZGJiZTkxOThlYzY2NDUzNWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdM
YXllclRyZWVIb3N0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQUNGTGF5ZXJUcmVlSG9zdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCmluZGV4IDgxYmM3Y2U5NmJhYjJmYjUwMTZkYTIyNWFmZGRmOTYxY2Q0MWU4ZTguLjdlNWRm
MDQ0YzhkMGMyN2Y3ZDNmZGY3ZDhlMDMwOGMwY2ViNTE5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAt
MzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
Zm9yX3N1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAppbmRleCBhMGU3ZmY4NzNiY2IzNWMzMDU5YmRhNmNkM2Y0M2UzNzAxNmY5YzdlLi44NzYzNDgw
MjQ4NmM5NGYzOWQ4NGQ1ZjhmZTUzYzQxNWY3OTEzYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uY3BwCkBAIC0zMTQsMTAgKzMxNCw5IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmNsaXBGb3JQYXR0ZXJuRmlsbGluZyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhCiAg
ICAgY2Fpcm9fY2xpcF9leHRlbnRzKG1fY3IuZ2V0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAg
ICAgRmxvYXRSZWN0IGNsaXBSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKLSAgICBJ
bWFnZSogcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAg
IEFTU0VSVChwYXR0ZXJuSW1hZ2UpOworICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IHN0YXRlLmZp
bGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+Z2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KCk7Ci0gICAgRmxvYXRSZWN0IHBhdHRlcm5SZWN0ID0gcGF0dGVyblRyYW5zZm9ybS5tYXBSZWN0
KEZsb2F0UmVjdCgwLCAwLCBwYXR0ZXJuSW1hZ2UtPndpZHRoKCksIHBhdHRlcm5JbWFnZS0+aGVp
Z2h0KCkpKTsKKyAgICBGbG9hdFJlY3QgcGF0dGVyblJlY3QgPSBwYXR0ZXJuVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2Uu
aGVpZ2h0KCkpKTsKIAogICAgIGJvb2wgcmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRYKCk7CiAgICAgYm9vbCByZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaAppbmRleCBmM2MxYWU0OWQ1Mzg1NzAwZGQ4ZDc4Y2VkNmM3MGZkMDkwMmQ4MjMz
Li45NmViODNjYTVlN2RhYmY5NjEwNjA2NDRlYzdmOTA3ZDBlZDE3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5o
CkBAIC00OCw5ICs0OCw5IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisg
ICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJ
bWFnZShvYnNlcnZlcikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA3MTg2MDA5MjBhOWM3NGYwMDJjNGJh
ZjUwYTAyMGY4ZjdhNjcxYjY0Li45OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEz
NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCktPnJlY3QoKTsKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9u
VW5pZm9ybSgxLCAtMSk7CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
d2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1
LDcgKzg1LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAK
ICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0
dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IDFiNDMwM2M5ODE4
NGJlNjk0NDZmMmU1Y2E2MmJhNzFlYWM3YTI4YWUuLjZiOWFlOWU1NGM5NWZlYTQ4ZGM5MmMxYzgz
NjY1OGExZDM4NTZkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxNyAr
MjcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9y
LCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIERpZmZ1c2VM
aWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNlQ29uc3RhbnQsIDAs
IDAsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpCitG
RURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VD
b25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZ
LCBSZWY8TGlnaHRTb3VyY2U+JiYgbGlnaHRTb3VyY2UpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRl
ciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VD
b25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZN
b3ZlKGxpZ2h0U291cmNlKSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IGRpZmZ1c2VDb25zdGFudCwgZmxv
YXQga2VybmVsVW5pdExlbmd0aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NS
ZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRGlm
ZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBkaWZmdXNl
Q29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgbGlnaHRTb3Vy
Y2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRURpZmZ1c2VMaWdodGluZyhmaWx0ZXIs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpKSk7CiB9CiAK
IEZFRGlmZnVzZUxpZ2h0aW5nOjp+RkVEaWZmdXNlTGlnaHRpbmcoKQpAQCAtMTA5LDE2ICsxMDYs
MTEgQEAgYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQg
a2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IExpZ2h0U291
cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRT
b3VyY2UmIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbGlnaHRTb3VyY2UuZ2V0KCk7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQoteyAgICAK
LSAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7Ci19Ci0KIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmR1bXAoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IDVmZTJiZTlm
NGE1ZTdmMmRlODYzYzBmYTU5YzNhYTY1ZjQ2YTdlMGEuLjcwMzdjMzMyNTQ2N2ZhNTUzM2U1NGVh
ODIzYmRjZmFmOTIxNjE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDggKzMw
LDcgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiAKIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVi
bGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRp
bmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAg
ZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgc3RhdGljIFJlZjxG
RURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmlydHVhbCB+RkVE
aWZmdXNlTGlnaHRpbmcoKTsKIAogICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29u
c3Q7CkBAIC00OSwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CiAKLSAg
ICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKLSAgICB2b2lkIHNldExp
Z2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBjb25zdCBMaWdodFNvdXJj
ZSYgbGlnaHRTb3VyY2UoKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcCgpIG92ZXJyaWRlOwogCiAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGlnaHRp
bmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFz
c1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4m
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCAyOTI1
YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mYTBmMjhhZmE5NTFmZGY2NDVi
YjhiYzA5ZDM3OWExMzg3ZGFkMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDEyICszMiwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiBsaWdodGlu
Z0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LAotICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxM
aWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCitGRUxpZ2h0aW5nOjpGRUxpZ2h0aW5nKEZpbHRlciYg
ZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZsb2F0IGtlcm5lbFVuaXRM
ZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0U291cmNlPiYmIGxpZ2h0
U291cmNlKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fbGlnaHRpbmdUeXBl
KGxpZ2h0aW5nVHlwZSkKLSAgICAsIG1fbGlnaHRTb3VyY2UobGlnaHRTb3VyY2UpCisgICAgLCBt
X2xpZ2h0U291cmNlKFdURk1vdmUobGlnaHRTb3VyY2UpKQogICAgICwgbV9saWdodGluZ0NvbG9y
KGxpZ2h0aW5nQ29sb3IpCiAgICAgLCBtX3N1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUpCiAgICAg
LCBtX2RpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQpCkBAIC0yOTQsOSArMjkyLDYgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFp
bnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwogCi0gICAgaWYgKCFtX2xpZ2h0U291
cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5n
IGlmIHdpZHRoIG9yIGhlaWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMg
c3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVy
bnMuCiAgICAgaWYgKHdpZHRoIDw9IDIgfHwgaGVpZ2h0IDw9IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IGJh
ZmJmNDdjNDVlZjQ4MDMyNzgwYWI5YWUzOWJjMjZjMDEwYmU4NzkuLjM5MjAyOTgxN2RjODRlOTY4
YTI3ZTFiZDQ0NzQ5NWZlNmU3NDg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0
Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMqKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVM
aWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwor
ICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7
CiAKICAgICBib29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsK
ICAgICBpbmxpbmUgdm9pZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEm
LCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oTGlnaHRpbmdEYXRhJiwgTGln
aHRTb3VyY2U6OlBhaW50aW5nRGF0YSYpOwogCiAgICAgTGlnaHRpbmdUeXBlIG1fbGlnaHRpbmdU
eXBlOwotICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNvdXJjZTsKKyAgICBSZWY8TGln
aHRTb3VyY2U+IG1fbGlnaHRTb3VyY2U7CiAKICAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CiAg
ICAgZmxvYXQgbV9zdXJmYWNlU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKaW5k
ZXggZTJlODM0ZjIxYmVhNTNkYzA4NzZlMGVjMzU5YjlmYzBjN2EyNzNmNC4uOGMxNDA4MzU0ZWMx
Mzg4MDFjYmQ5ZGNhZTg5NDhjMGEyYzRlMzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5n
LmNwcApAQCAtMjcsMTkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVTcGVj
dWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCi0gICAgZmxvYXQgc3BlY3Vs
YXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFgsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFyTGlnaHRpbmcs
IGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBsaWdodFNv
dXJjZSkKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmls
dGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9h
dCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBs
aWdodFNvdXJjZSkKKyAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBs
aWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFy
RXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShs
aWdodFNvdXJjZSkpCiB7CiB9CiAKLVJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
ciwKLSAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQsCi0gICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtl
cm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKK1Jl
ZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLCBm
bG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4m
JiBsaWdodFNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1bGFyTGln
aHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyRXhwb25lbnQsCi0gICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgbGlnaHRTb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNw
ZWN1bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAogRkVTcGVjdWxhckxpZ2h0
aW5nOjp+RkVTcGVjdWxhckxpZ2h0aW5nKCkKQEAgLTEyNCwxNiArMTE5LDExIEBAIGJvb2wgRkVT
cGVjdWxhckxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgTGlnaHRTb3VyY2UqIEZFU3BlY3Vs
YXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAorY29uc3QgTGlnaHRTb3VyY2UmIEZFU3Bl
Y3VsYXJMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpZ2h0
U291cmNlLmdldCgpOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCi17Ci0gICAgbV9saWdodFNv
dXJjZSA9IGxpZ2h0U291cmNlOwotfQotCiB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6ZHVtcCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRleCBlMDRmNDQzNmFhNjgyMjgxN2Nk
NjlhNjUxNDEzNWM2OGQ1NzY1YTBhLi45ZjkyN2YyNTAyMzFiZTUxZjZkYmU0NjMzMTliZGZlNWRm
YzEwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKQEAgLTI4LDggKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVM
aWdodGluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNy
ZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIHN0YXRpYyBSZWY8
RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJik7CiAgICAgdmly
dHVhbCB+RkVTcGVjdWxhckxpZ2h0aW5nKCk7CiAKICAgICBjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvcigpIGNvbnN0OwpAQCAtNTAsMTUgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBrZXJu
ZWxVbml0TGVuZ3RoWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQpOwogCi0gICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRMaWdodFNvdXJjZShQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgY29uc3Qg
TGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAKICAgICB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKIAogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFU3Bl
Y3VsYXJMaWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJM
aWdodGluZyhGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhMGUyZTFiZjZhY2M1ODBmZmYxODNiODczNTYwODUxNTYwYzFhOTc1Li43
ODkyMGVjNTA4ODBlNGQzY2JiOTVhZjI0YjJlYmQ3NDY2YjE3MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUsIHRydWUpOworICAgIGF1
dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCAyZjc0MmNhMTc5ZDIzOWEz
MGZjZjNiNDc1MDRhNmUxMTE0MDE3ZDM4Li45OGI4NmQwMTc1YWQ2NTg2OTUwMWNkOGIyYTQyMWU1
MzA3NjQ2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzIsMjQgKzIzMiwyNCBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFn
ZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
U2l6ZSkpOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgY29weVVubXVsdGlw
bGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBJbnRTaXplIHNjYWxl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOwogICAg
IGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKLSAgICByZXR1
cm4gV1RGTW92ZShpbWFnZURhdGEpOworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggZWE0ZWM3NzZmNTA5NGJmYzU3MzQ5ZmE2YjhhOTJkOTAwZjBi
NDEzNS4uNmQzMTdjYWIzMmY1NWQxNjg2Yjg0NWViZGMzN2I1NGEzNGIzMWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0c1Jl
Y3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJ
bWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1Vu
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKICAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVk
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAppbmRleCAwMzVlNDViYjA3YTIxZDNiNGU1NzE4MWU5MmIyYzRiZWRmOTg4MDIyLi5kNzli
OGIyYWZkMTRjYTY1NDQ5MjA5MTY0NDRiZjUyMjU4OWYwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCkBAIC03MiwxMiArNzIsMTIgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKIH0KIAotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVm
ZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KQordm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnNldEZpbHRlckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYm
IGZpbHRlckVmZmVjdCkKIHsKLSAgICBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsKKyAg
ICBtX2ZpbHRlckVmZmVjdCA9IFdURk1vdmUoZmlsdGVyRWZmZWN0KTsKIH0KIAotUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAh
ZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhy
b3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9t
LT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgb3BlcmF0aW9uKSBjb25zdAogICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSBk
b3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihvcGVyYXRpb24pLnN0ZERldmlhdGlvbigpOwog
fQogICAgIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+
aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIGJvb2wgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG9wZXJhdGlvbikgY29uCiAgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3Ro
ZXIubV9sb2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAm
JiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7CiB9CiAgICAgCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQor
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA0Y2FlYjQ5
YjBhYWJhYTdhZTg5NjE0Yjg1ZmY2NDFkMTQ2ZWI3NTk5Li5hNWFkNmQ4MWNlNDUwYjcxODAxZDA4
YjdhYTBiZTg4ZTE4NDY3NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY4LDIxICs2OCwy
MSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9
IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91Ymxl
IC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIC8qZnJvbSovLCBkb3VibGUgLypwcm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJv
dWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0
IExheW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExheW91dFNpemUmLCBib29s
IC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChi
bGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTksMTQgKzExOSwxNCBAQCBwcm90ZWN0ZWQ6CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWZhdWx0RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCisgICAgc3Rh
dGljIFJlZjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSByZXBy
ZXNlbnRlZFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRG
aWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24ocmVwcmVz
ZW50ZWRUeXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEZpbHRl
ck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KIAogICAgIE9wZXJhdGlvblR5
cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0K
QEAgLTE0NSwxNCArMTQ1LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFBhc3N0aHJvdWdoRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkp
OwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFzc3Rocm91Z2hGaWx0
ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY5LDE3ICsxNjksMTcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJh
Z21lbnQpCisgICAgc3RhdGljIFJlZjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKHVybCwgZnJhZ21lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKCk7CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQorICAgIFJlZjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
ICpzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb24qPihudWxscHRyKTsKICAgICB9CiAKICAgICBi
b29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
MTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSog
Y2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CiAKICAgICBGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRG
aWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKKyAgICB2b2lkIHNldEZpbHRl
ckVmZmVjdChSZWZQdHI8RmlsdGVyRWZmZWN0PiYmKTsKIAogcHJpdmF0ZToKICAgICBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnQpOwpAQCAtMjEzLDE5ICsyMTMsMTkgQEAgcHJpdmF0ZToKIC8vIEZvciBIVUVfUk9UQVRFLCB0
aGUgYW5nbGUgb2Ygcm90YXRpb24gaXMgc3RvcmVkIGluIG1fYW1vdW50LgogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5
cGUpCisgICAgc3RhdGljIFJlZjxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPiBjcmVh
dGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwg
dHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPEZpbHRlck9wZXJh
dGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9w
ZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAgICAgZG91YmxlIGFtb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CkBAIC0yNDQsMjEgKzI0NCwyMSBAQCBwcml2YXRlOgogLy8gSU5WRVJULCBC
UklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2lj
IGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
KyAgICBzdGF0aWMgUmVmPEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+IGNy
ZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24o
YW1vdW50LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CiAgICAgfQogCi0gICAg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24oYW1vdW50KCksIHR5cGUoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkpKTsKICAg
ICB9CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAog
ICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUg
PT0gT1BBQ0lUWTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9Q
YXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9v
bCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtMjc2LDE0ICsyNzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmx1
ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3Rk
RGV2aWF0aW9uKQorICAgIHN0YXRpYyBSZWY8Qmx1ckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKExl
bmd0aCBzdGREZXZpYXRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJs
dXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24pKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oV1RGTW92ZShzdGREZXZpYXRpb24p
KSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRp
b24oc3RkRGV2aWF0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmx1ckZp
bHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24oKSkpOwogICAgIH0KIAogICAgIGNvbnN0IExlbmd0
aCYgc3RkRGV2aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KQEAgLTI5
MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtMzA3LDE0ICszMDcsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGludCBzdGREZXZpYXRpb24sIGNv
bnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGludCBzdGREZXZpYXRpb24sIGNv
bnN0IENvbG9yJiBjb2xvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxv
Y2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8RmlsdGVyT3Bl
cmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9jYXRpb24oKSwgc3RkRGV2aWF0
aW9uKCksIGNvbG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJvcFNoYWRv
d0ZpbHRlck9wZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRpb24oKSwgY29sb3IoKSkpOwog
ICAgIH0KIAogICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KQEAg
LTMyNiw3ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBi
b29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rl
eHR1cmUuY3BwCmluZGV4IGFhZDEzZjM0ZDY5Y2YyZjFkYTJkZWE4MzA2ZmM0NWQ4MWEwNWNlNjEu
LmFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgc3RhdGljIHZvaWQgY29udmVydEZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW4KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VGV4
dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQg
Zm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiB7CiAgICAgaW50IG1heFRleHR1cmVTaXplID0gMDsKICAgICBjb250
ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRSwgJm1h
eFRleHR1cmVTaXplKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRl
eHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwg
aQogICAgICAgICBpZiAoIXRleHR1cmVJZCkgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1UaWxlczsgaSsrKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1
cmUodGV4dHVyZUlkcy0+YXQoaSkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICB0ZXh0dXJlSWRzLT5hdChpKSA9
IHRleHR1cmVJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmgKaW5kZXggM2FhNTVmODIxNzEwNzEwNmE1NjEzNzZmYWZlZTdiZTI2MmM0NDUwZC4u
NTdhNjgzMjdiZGNmMmI1ZmQwMGRhM2I5NmFhM2U5NDNkMjU3NDQxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCkBAIC00NSw3ICs0NSw3IEBA
IGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7CiBwdWJsaWM6CiAg
ICAgflRleHR1cmUoKTsKICAgICBlbnVtIEZvcm1hdCB7IFJHQkE4LCBCR1JBOCB9OwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1h
dCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFRleHR1cmU+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
ICAgICB2b2lkIGJpbmRUaWxlKGludCB0aWxlKTsKICAgICB2b2lkIGxvYWQodm9pZCogcGl4ZWxz
KTsKICAgICB2b2lkIHVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGJkMThl
NWM1OGM1MjM2MTRhOTY4ZjYwMzk2M2UxYzUxYTcwMDc5YTkuLjQ3MmFhN2RkZGQ1ZjM0OTRlZWMz
NDk2YjQ4YjczZmJmMTAyZGFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1By
aXZhdGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQ
dHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkK
KyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoR1Jl
ZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVy
LmgKaW5kZXggMWVjZDMzNGJhMGYyNjY1M2Y5NDA2ZTQ5NGMwNmY3MjhkM2MwZWM3Mi4uZDNlMDRm
NmI3MjRhY2RkOGE1MTdhZTJlZmQ0Y2FiOTllNjlhZjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVy
LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0
L3ZpZGVvL3ZpZGVvLWZyYW1lLmg+CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtMzgsMTMgKzM4LDEzIEBAIGNsYXNzIEludFNpemU7CiAKIGNs
YXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFtZXI+IHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBj
cmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZUdT
dHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFtZXIoc2FtcGxlKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUdTdHJlYW1lcihzYW1wbGUpKTsKICAg
ICAgICAgfQogICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKIAotICAgICAgICBQYXNzUmVmUHRy
PEJpdG1hcEltYWdlPiBpbWFnZSgpCisgICAgICAgIEJpdG1hcEltYWdlKiBpbWFnZSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAgICAgICAgICAgIHJldHVybiBt
X2ltYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU5NDJhMmM1ZmMwN2U3YjBhYTU2NTEz
MWZhMTg1MThjYzVjNDRjZjIuLjRkNGRiNGVkZjlmYmExMDI1ODk3Zjc4ZWI5OWMxM2EwNTBkNGZk
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoS2luZCBr
aW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZW1wdHlB
dG9tKQorICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyPiBjcmVhdGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkID0gZW1wdHlBdG9tKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0
LCBpZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIoa2luZCwgY3VlRm9ybWF0LCBpZCkpOwogICAgIH0KIAogICAg
IH5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoKSB7IH0KQEAgLTUyLDEw
ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNsaWVudCgpLT5hZGREYXRhQ3VlKHN0YXJ0LCBl
bmQsIGRhdGEsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRHZW5lcmljQ3VlKFBhc3NS
ZWZQdHI8R2VuZXJpY0N1ZURhdGE+IGRhdGEpCisgICAgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVy
aWNDdWVEYXRhJiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKGN1ZUZvcm1hdCgpID09IEdl
bmVyaWMpOwotICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSgqZGF0YSk7CisgICAgICAg
IGNsaWVudCgpLT5hZGRHZW5lcmljQ3VlKGRhdGEpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGNj
M2E2ZjBlOWZjMjQ4ZDFlZDdhMGZjYmI3ZTIxYjc2ODMzZGQxYzEuLjZhOTA3NDRlNTkwOTAxOTM5
MGVhYjdlN2U4ZDY5OTg4YWU0MTE2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDAsOSArNDAsOSBAQCB0eXBlZGVmIHN0cnVj
dCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lciA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0
UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRl
eCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlzY29ubmVj
dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBiMzU2MDM4Y2RiNzIwYzhjZmQ2MjU1N2JjMGRlZmM5ZGY1NGViM2Y1Li43
OWMxNTFiYTZiY2I5YmFjMzFmYmNmOWYwOTI5NzY2NzUzZWE2ZDE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE3Nyw3ICsxMTc3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVu
dHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKIHsKICAgICBBU1NFUlQoZW50cnkpOwogCi0gICAg
UmVmUHRyPEdlbmVyaWNDdWVEYXRhPiBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBjdWUgPSBHZW5lcmljQ3VlRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBnaW50NjQgc3Rh
cnQgPSAtMSwgc3RvcCA9IC0xOwogICAgIGdzdF90b2NfZW50cnlfZ2V0X3N0YXJ0X3N0b3BfdGlt
ZXMoZW50cnksICZzdGFydCwgJnN0b3ApOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RU
b2NFbnRyeSogZW50cnkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2hhcHRlcnNUcmFjay0+
YWRkR2VuZXJpY0N1ZShjdWUucmVsZWFzZSgpKTsKKyAgICBtX2NoYXB0ZXJzVHJhY2stPmFkZEdl
bmVyaWNDdWUoY3VlKTsKIAogICAgIGZvciAoR0xpc3QqIGkgPSBnc3RfdG9jX2VudHJ5X2dldF9z
dWJfZW50cmllcyhlbnRyeSk7IGk7IGkgPSBpLT5uZXh0KQogICAgICAgICBwcm9jZXNzVGFibGVP
ZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkqPihpLT5kYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5k
ZXggY2E0ZjA5MDc0NzdlNWQwNGExZGRkMmRlNjEzNjY2ODY1YzZhODRjZi4uYzI3MDcyNjBmMzEw
NzViNzg3ZGQxZjNjOTI2Zjc1YTQ3YjNmYWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODUyLDcgKzg1Miw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJ
bWFnZS0+aW1hZ2UoKS5nZXQoKSkpCisgICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKSkpCiAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFpbnRpbmdPcHRpb25zKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBiYTQ2
YTY5YjIxMmRiNmZhN2Q4MDUxZGY2NzI4NTc0NzM0YTlhNDI1Li41ZWE3NmUzZmVhMTNkYzg3YTJj
YWM1NzliM2M4ZTYyNjJjZTM3OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQ
cml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVm
UHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQ
dHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIocGxheWJpbiwgaW5kZXgsIHBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7CiAgICAg
fQogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDY2M2M4MjVl
NWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcuLmNiNmRmZjVmMTUwNDM3NTEzZDU5YWYx
MWYwZWJlNjM2YWYyZjc4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xODMsMTIgKzE4MywxMiBAQCB2b2lkIE1l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9taWNTdHJpbmcgdHJhY2tJZCkK
ICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXliYWNrUGlwZWxpbmUtPmZsdXNoKHRyYWNr
SWQpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjplbnF1ZXVlU2Ft
cGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkKK3ZvaWQgTWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXJNU0U6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBs
ZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9wbGF5
ZXJQcml2YXRlKQotICAgICAgICBtX3BsYXllclByaXZhdGUtPm1fcGxheWJhY2tQaXBlbGluZS0+
ZW5xdWV1ZVNhbXBsZShwcnBTYW1wbGUpOworICAgICAgICBtX3BsYXllclByaXZhdGUtPm1fcGxh
eWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNhbXBsZSkpOwogfQogCiBHUmVm
UHRyPFdlYktpdE1lZGlhU3JjPiBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6d2ViS2l0
TWVkaWFTcmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRS5oCmluZGV4IGMzZDRhYzdiYzIxZmI1ZjNjYmQxMjc1NGVlMTZiYTkwMjJjZWFk
ZmYuLmRhNzk4Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNlZjkwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3Vy
Y2VDbGllbnRHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2
b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI+KTsKICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVl
U2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUo
UmVmPE1lZGlhU2FtcGxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTIwOTVi
NjEwNjcxNjQyMDA4NmJlYjI3MmQ0NDExNDRhZThkOTdkNy4uZTYyY2Q1NmE4NDZiMzQ3NjEyMzQ0
ODM1MjVhMmU2YTBmYjY4MGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIldlYktp
dE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcApp
bmRleCBiOTE5ZTU1MzA1MmU1MjhjNGMxNDkwOWIwZjkwZWJmMjhjYTE2ZjIwLi44YTJmZjQzYWNh
YmIyYjlkMDk3YmIyMmUyNWE2MzZiYWFhZWY5ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJh
Y2tQaXBlbGluZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6
OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogICAgIEdTVF9ERUJVRygidHJhY2tJZD0lcyBm
bHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBQbGF5
YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4gbWVkaWFTYW1w
bGUpCit2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxl
PiYmIG1lZGlhU2FtcGxlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIApA
QCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUGxheWJhY2tQaXBlbGluZTo6ZW5xdWV1ZVNhbXBsZShS
ZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQogICAgIEdzdEVsZW1lbnQqIGFwcHNyYyA9
IHN0cmVhbS0+YXBwc3JjOwogICAgIE1lZGlhVGltZSBsYXN0RW5xdWV1ZWRUaW1lID0gc3RyZWFt
LT5sYXN0RW5xdWV1ZWRUaW1lOwogCi0gICAgR1N0cmVhbWVyTWVkaWFTYW1wbGUqIHNhbXBsZSA9
IHN0YXRpY19jYXN0PEdTdHJlYW1lck1lZGlhU2FtcGxlKj4obWVkaWFTYW1wbGUuZ2V0KCkpOwor
ICAgIEdTdHJlYW1lck1lZGlhU2FtcGxlKiBzYW1wbGUgPSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJN
ZWRpYVNhbXBsZSo+KG1lZGlhU2FtcGxlLnB0cigpKTsKICAgICBpZiAoc2FtcGxlLT5zYW1wbGUo
KSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLT5zYW1wbGUoKSkpIHsKICAgICAgICAg
R1JlZlB0cjxHc3RTYW1wbGU+IGdzdFNhbXBsZSA9IHNhbXBsZS0+c2FtcGxlKCk7CiAgICAgICAg
IEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKGdzdFNhbXBsZS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCmluZGV4IDA4ZjBlNjBkMzMzMmY2
ODEzZDEzODY2ZDI3MjZkZWI3YmU1ZWVmYjIuLmRhNDk4ZDlmYjZmYzE2NGY2MjgxYjY5Yzc4NDc3
Y2UzNGQ5YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci4KICAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7Ci0gICAgdm9pZCBlbnF1ZXVlU2Ft
cGxlKFJlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVk
aWFTYW1wbGU+JiYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApp
bmRleCA0OWNjYzkxMThmNGY1NzA1Y2E0MWNjZjAzM2IzOTVjODdlYmJlNWQ0Li44NDY0NWI3ZDUx
OWMxNzJhNTNmMGMzNGI3YmE3NzU2MjdhMmEyYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTM2LDE3ICszNiwxNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkSW1h
Z2VGcm9tR1Jlc291cmNlKGNvbnN0IGNoYXIqIGljb25OYW1lKQorc3RhdGljIFJlZjxJbWFnZT4g
bG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkKIHsKLSAgICBSZWZQ
dHI8Qml0bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBp
Y29uID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChn
X3N0cmR1cF9wcmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNlcy9pbWFnZXMvJXMiLCBpY29u
TmFtZSkpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKGdfcmVzb3VyY2Vz
X2xvb2t1cF9kYXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdTX05PTkUsIG51
bGxwdHIpKTsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgaWNvbi0+c2V0RGF0YShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRf
ZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkp
LCB0cnVlKTsKLSAgICByZXR1cm4gaWNvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
aWNvbik7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQorc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBmaWxlbmFtZSkKIHsKICAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50OwogICAgIGdzaXplIGxlbmd0aDsKQEAgLTYw
LDIxICs2MCwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkK
IHsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRNaXNzaW5nSW1hZ2VJY29uRnJv
bVRoZW1lKGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgUmVmPEltYWdlPiBsb2FkTWlzc2luZ0lt
YWdlSWNvbkZyb21UaGVtZShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBpY29uU2l6ZSA9
IGdfc3RyX2hhc19zdWZmaXgobmFtZSwgIkAyeCIpID8gMzIgOiAxNjsKLSAgICBSZWZQdHI8Qml0
bWFwSW1hZ2U+IGljb24gPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpY29uID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIEdVbmlxdWVQdHI8R3RrSWNvbkluZm8+IGljb25J
bmZvKGd0a19pY29uX3RoZW1lX2xvb2t1cF9pY29uKGd0a19pY29uX3RoZW1lX2dldF9kZWZhdWx0
KCksIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBpY29uU2l6ZSwgR1RLX0lDT05fTE9PS1VQX05P
X1NWRykpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXIoZ3RrX2ljb25faW5mb19nZXRfZmls
ZW5hbWUoaWNvbkluZm8uZ2V0KCkpKTsKLSAgICAgICAgaWNvbi0+c2V0RGF0YShidWZmZXIucmVs
ZWFzZSgpLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIGljb24ucmVsZWFzZSgpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihndGtfaWNvbl9pbmZvX2dldF9m
aWxlbmFtZShpY29uSW5mby5nZXQoKSkpOworICAgICAgICBpY29uLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGljb24pOwogICAgIH0KIAog
ICAgIHJldHVybiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKG5hbWUpOwogfQogCi1QYXNzUmVmUHRy
PEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKK1Jl
ZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1pc3NpbmdJbWFnZSIpID8gbG9h
ZE1pc3NpbmdJbWFnZUljb25Gcm9tVGhlbWUobmFtZSkgOiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNl
KG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggZjAzY2FjZThlZDliZWQ4MmIzOGNj
MzgxOWQzM2JmZjI4YTViMTgzZS4uODNmZjI3ZWE1MjU2MjI4YThkNTc1YmFlZjE3YzY3NTY1NmMy
MTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgY29uc3QgaGJf
dGFnX3QgSGFyZkJ1enpGYWNlOjprZXJuVGFnID0gSEJfVEFHKCdrJywgJ2UnLCAncicsICduJyk7
CiAKIGNsYXNzIEZhY2VDYWNoZUVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RmFjZUNhY2hlRW50
cnk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWNlQ2FjaGVFbnRyeT4gY3Jl
YXRlKGhiX2ZhY2VfdCogZmFjZSkKKyAgICBzdGF0aWMgUmVmPEZhY2VDYWNoZUVudHJ5PiBjcmVh
dGUoaGJfZmFjZV90KiBmYWNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGZhY2UpOwotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZhY2VDYWNoZUVudHJ5KGZhY2UpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmFjZUNhY2hlRW50cnkoZmFjZSkpOwogICAgIH0KICAgICB+RmFj
ZUNhY2hlRW50cnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKaW5kZXggNjMxNzlmZTgxNWU0MDU0
NzMzZDQ5OWQ3NjVmMjRjN2ZhNTE1OTBhYS4uNTljZWU5YzNmMDA0YWYxYzA5NDhjZGU4ZWVhZTkx
MjU4MDY5OWRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
IDxoYi5oPgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgaGJfdGFnX3QgdnJ0MlRhZzsKICAgICBzdGF0aWMgY29uc3QgaGJfdGFnX3Qg
a2VyblRhZzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhhcmZCdXp6RmFjZT4gY3JlYXRlKEZv
bnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCisgICAgc3Rh
dGljIFJlZjxIYXJmQnV6ekZhY2U+IGNyZWF0ZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURh
dGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIYXJmQnV6ekZhY2UocGxhdGZvcm1EYXRhLCB1bmlxdWVJRCkpOwogICAg
IH0KICAgICB+SGFyZkJ1enpGYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmNWZhNjk3Yzk2OGYzNmY1ODgwZGQ0MGZj
NWUwM2U5ZGJiYmRkYzVlLi5lMWNmZTNmYmQ4YTIyOTdiODI3NDlmOWU4NzA5MTE4OTNiMmIyY2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9y
bURhdGEoKQogICAgIG1fdGlmZlJlcCA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdl
PiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBO
U0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQnVuZGxl
RmluZGVyIGNsYXNzXV07CiAgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZv
clJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJw
bmciXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCA5N2Q3NTRkMDJhNDJkZTVlMzM0NmUx
ZDMwYTM2ZDU0NWFlMDY1NGNmLi5kYzM0YmJiMzZmODIyM2QxN2IyNDJhOGEyNDY0ZGJiMDFlNzU3
YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkdseXBoLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgRm9udDsKIAogY2xh
c3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBjcmVh
dGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udCkKKyAgICBzdGF0aWMgUmVmPE9wZW5UeXBl
TWF0aERhdGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuVHlwZU1hdGhEYXRhKGZvbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BlblR5cGVNYXRoRGF0YShmb250KSk7CiAgICAgfQog
ICAgIH5PcGVuVHlwZU1hdGhEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDMyNDU2MzhhOGVm
ZTdhNTI5YTIzNmFjYTZlODU3ZDgwZDljMzEyOGQuLmRjNTkzMWVkZmM1YjY1NzdiOGU5MTIwOTU5
MjEyZWUyN2EwNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1
ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4g
MzsgfQogICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdz
ICYgU3VwcG9ydHNBbHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBw
bHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1
cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcAppbmRleCA1ODkwNjAyMjQxZjAyNjQ5OWI2YmNiZmI4YTI3M2U4ZjA1
YzI1ZWQyLi40NTA5NzdkMzQyOTA2NDIyNTAzZTc2Y2RkOGE2YTUyZjdjZjM4MDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0FJUk8pCiAjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgZ2V0UGFzc2VzUmVxdWlyZWRGb3JGaWx0ZXIoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRl
eHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFw
VGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChsYXN0KSB7Ci0g
ICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFjZS5nZXQoKSktPm1f
ZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0ZXIsIGosIHNwYXJl
U3VyZmFjZSk7CisgICAgICAgICAgICAgICAgdG9CaXRtYXBUZXh0dXJlR0wocmVzdWx0U3VyZmFj
ZS5nZXQoKSktPm1fZmlsdGVySW5mbyA9IEJpdG1hcFRleHR1cmVHTDo6RmlsdGVySW5mbyhmaWx0
ZXIuY29weVJlZigpLCBqLCBzcGFyZVN1cmZhY2UuY29weVJlZigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IGM0YTgwMjI0
YTg3ZWM1Y2E4YjViYWYwNjkyZGQ0MTE0NGZjYzZhYWEuLjNhNGQ4MDQ3MzQyNmYyMTZmYzllZDFl
YjNhMGI2N2NmZDY4NGIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTU5LDE2ICs1OSwxNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQg
Ynl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9iamVj
dCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICBib29sIGlzQmFja2Vk
QnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBzdHJ1Y3QgRmlsdGVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZpbHRlcjsKICAgICAgICAgdW5zaWduZWQgcGFzczsKICAgICAgICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IGNvbnRlbnRUZXh0dXJlOwogCi0gICAgICAgIEZpbHRlckluZm8oUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGYgPSAwLCB1bnNpZ25lZCBwID0gMCwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ID0gMCkKLSAgICAgICAgICAgIDogZmlsdGVyKGYpCisgICAgICAgIEZpbHRl
ckluZm8oUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mJiBmID0gbnVsbHB0ciwgdW5zaWduZWQgcCA9
IDAsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHQgPSBudWxscHRyKQorICAgICAgICAgICAgOiBm
aWx0ZXIoV1RGTW92ZShmKSkKICAgICAgICAgICAgICwgcGFzcyhwKQotICAgICAgICAgICAgLCBj
b250ZW50VGV4dHVyZSh0KQorICAgICAgICAgICAgLCBjb250ZW50VGV4dHVyZShXVEZNb3ZlKHQp
KQogICAgICAgICAgICAgeyB9CiAgICAgfTsKICAgICBjb25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNzhhMDI0NmY3ZjU1MDg4MmMzMGQ1ZmQwNmEy
NDIyMmVlYzgwYWMwNC4uYTAyNmY0YzUwOGM4ZjRlMmQyMzI0MDQ1YzMzNzA0Yzk1Njg2ZmMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC00NjgsNyAr
NDY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFu
Z2VzKCkKICAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAKICAgICBpZiAo
bV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQotICAgICAgICBtX2xheWVyLnNldEJh
Y2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CisgICAgICAgIG1fbGF5ZXIuc2V0QmFja2luZ1N0
b3JlKG1fYmFja2luZ1N0b3JlLmNvcHlSZWYoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYg
RGVidWdWaXN1YWxzQ2hhbmdlKQogICAgICAgICBtX2xheWVyLnNldERlYnVnVmlzdWFscyhpc1No
b3dpbmdEZWJ1Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgo
KSwgaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTcz
MDQ3ZjQ5MDU3OWIyZmEyYzFmM2QzZjg0ODkyN2ExOTAxNmMxOS4uMWY5ZTY4MjdkYTVkM2E1NTYz
ZjdkZWFkOWU1ZTIzZjNjOGFmZWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtMzIsMTEgKzMy
LDExIEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIFRleHR1
cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCi1QYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50
U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJ
bnRTaXplJiBzaXplLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncykKIHsKICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbC0+YWNx
dWlyZVRleHR1cmUoc2l6ZSwgZmxhZ3MpOwogICAgIHNlbGVjdGVkVGV4dHVyZS0+cmVzZXQoc2l6
ZSwgZmxhZ3MpOwotICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmUucmVsZWFzZSgpOworICAgIHJl
dHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
PiBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggNzIzM2QwZGNjZDVj
OGI1ZjVhOWM3NTAzMGU1NTkxYmI0YjM1MjM0MC4uNjczMGQ4ZTdiZGFmZjE2NWUwNzg4NzI2MTBj
OTE4MDk3MjBkMmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
Y29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgPSAwOwog
ICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIHZpcnR1YWwgUmVm
PEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBh
aW50aW5nKCkgeyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50
U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBj
b25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEp
OworICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBv
b2woY29uc3QgSW50U2l6ZSYsIGNvbnN0IEJpdG1hcFRleHR1cmU6OkZsYWdzID0gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAKICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHApIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0gcDsgfQog
ICAgIHZvaWQgc2V0V3JhcE1vZGUoV3JhcE1vZGUgbSkgeyBtX3dyYXBNb2RlID0gbTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcAppbmRleCA3NDY0ZDA0N2UzNWMwNmQzYjRiYWIyZjc1MWY5ODFmZjdi
NTgyZTZkLi45OGRjODQ1ZjAwZjI4MTYwZjQ0ODU4ZmQ0ODllYzVmYzIxMjY1ZDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBA
IC03NDYsNyArNzQ2LDcgQEAgSW50UmVjdCBUZXh0dXJlTWFwcGVyR0w6OmNsaXBCb3VuZHMoKQog
ICAgIHJldHVybiBjbGlwU3RhY2soKS5jdXJyZW50KCkuc2Npc3NvckJveDsKIH0KIAotUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQorUmVm
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAg
cmV0dXJuIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKCptX2NvbnRleHQzRCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmgKaW5kZXggYWNjNzhlOGM4NTFlYzY3ZmEyMGRmYjM4NTBjN2Q1N2UyYzQ2YTlhOS4u
ZTdjODBlOTI2OTQ1YTBlNWNjOWE0Zjk0OWM4ODU3ZDAxZTM5NGJkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRDbGlwKCkgb3ZlcnJp
ZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgSW50U2l6ZSBtYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUoMjAwMCwgMjAwMCk7
IH0KLSAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBvdmVycmlk
ZTsKKyAgICBSZWY8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlOwogICAg
IGlubGluZSBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQogCiAgICAgdm9pZCBkcmF3RmlsdGVyZWQoY29uc3Qg
Qml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVu
dFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYsIGludCBwYXNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggZDM5Y2ZmY2JiNzg4OTFmZTExZTVlOGM0YmExOGVjODcyOWEx
NGM2Mi4uYWIzNzdmZTM5NTFkYzdhZTgyMmYzZTBjNjUyZTNjNDI5NzlkM2E4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6YXBwbHlNYXNrKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0KIAot
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFj
ZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEJp
dG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgfCBCaXRtYXBUZXh0dXJlOjpGQk9BdHRhY2htZW50
KTsKICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsK
QEAgLTM3NiwxNiArMzc2LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwCiAgICAgICAgIG1f
c3RhdGUubWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7CiAgICAgc3VyZmFjZSA9IHN1cmZh
Y2UtPmFwcGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMp
OwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsK
LSAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAK
LXN0YXRpYyB2b2lkIGNvbW1pdFN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBzdXJm
YWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRUcmFuc2Zvcm0u
dHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgp
KTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwotICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVjdCwg
dGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJh
d1RleHR1cmUoc3VyZmFjZSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAog
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYgcmVj
dCkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRo
SW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcAogICAgIH0KIAog
ICAgIGlmIChyZXBsaWNhU3VyZmFjZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAgICAg
ICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIHJlcGxpY2FTdXJmYWNlLCByZWN0LCAxKTsKKyAgICAg
ICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwogICAg
ICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7CiAgICAgfQogCkBAIC00MTYsNyArNDE2LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3AKICAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNh
U3VyZmFjZTsKICAgICB9CiAKLSAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNl
LCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOworICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKm1h
aW5TdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKQEAgLTYzNyw5ICs2MzcsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQogICAgIG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZml4ZWRUb1ZpZXdwb3J0OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2lu
Z1N0b3JlKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShSZWZQdHI8
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4mJiBiYWNraW5nU3RvcmUpCiB7Ci0gICAgbV9iYWNr
aW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CisgICAgbV9iYWNraW5nU3RvcmUgPSBXVEZNb3ZlKGJh
Y2tpbmdTdG9yZSk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpkZXNjZW5kYW50c09y
U2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgK
aW5kZXggM2IxYzE2YjBiMTMyZjUwYzY4MzMwMmUzZWIzN2I2ZTE2MmIxNTRlNy4uYmVkMWY2Y2Q2
NWIxOTZiYmQ2OTk4ZmRjMTM2ZDhjMTE4NjY3ZTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29u
c3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9y
dChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4
ZWRUb1ZpZXdwb3J0OyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUmVmUHRy
PFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+JiYpOwogCiAgICAgdm9pZCBzeW5jQW5pbWF0aW9u
cygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBj
b25zdDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludFJlY3Vy
c2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFVz
aW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwotICAg
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50U2l6ZSYpOworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
LCBjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNl
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
dm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZv
aWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDg1
MTRhNGY3MzZhNTZkMzU4ZTRkMTI3ZGJlODI2OGQ3MjkxNmRhZDQuLjQyMzhjNWQ4ZTRkYTAyYTkz
NDc0MDIzMmU1ZjBhMWEwNDNlNjdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlcjsK
IAogY2xhc3MgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk7IH0KKyAgICBzdGF0aWMgUmVmPFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmODk3MTQ4OWFmZDhlNThl
NTdiNDMzOTY1YmEwZDJmY2JlNDk0NzVkLi5hMjY2MmVmMGI5NjU2Mjk4Yjg2ZTA1ODFlNjE1MWVh
Njg3ZGI5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKCkKICAgICAgICAgICAgIHJlbGVhc2VJbWFn
ZUJhY2tpbmdJZk5lZWRlZCgpOwogCiAgICAgICAgIGlmICghbV9jb29yZGluYXRlZEltYWdlQmFj
a2luZykgewotICAgICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZyA9IG1fY29vcmRp
bmF0b3ItPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29tcG9zaXRlZEltYWdlLmdldCgp
KTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcgPSBtX2Nvb3JkaW5hdG9y
LT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCgqbV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAg
ICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+YWRkSG9zdCh0aGlzKTsKICAgICAgICAg
ICAgIG1fbGF5ZXJTdGF0ZS5pbWFnZUlEID0gbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+aWQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IGJmMjUxMTFkYmU1NDJmY2JjMzViNzdmZjA5ZTNmZmJhYTMx
MzI4N2YuLmI3NzRlMDA1ZmMwMTVjNDUwMmNmZGVjZTQ4MDE3ZDExNzJjMzZjMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJh
Y2tpbmdJZk5lZWRlZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBmNTI5NDc1NWEyMzM2NTVjMzA2
NjU3MWNmNjM5YmVjYjUwYzAzMDUwLi41NjBjMmUxNjcyMWM2NjgyNzNlZmZkMjdlYzE5MjlhMTUy
NmJjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZElt
YWdlQmFja2luZy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+
KGltYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFJlZjxJbWFnZT4mJiBpbWFnZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgaW1h
Z2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEltYWdlQmFja2luZyhj
bGllbnQsIFdURk1vdmUoaW1hZ2UpKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpD
b29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCYgY2xp
ZW50LCBSZWY8SW1hZ2U+JiYgaW1hZ2UpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwg
bV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKICAgICAsIG1faWQoZ2V0Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJDb250ZW50c1RpbWVyKCp0aGlz
LCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKQogICAg
ICwgbV9pc0RpcnR5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCBiODYwM2M2OGU2MzY4NGNiN2VlNGRjZThkMjUyNjI2
ZTlmMWZkYWVjLi40YzY5ZTU4MjY2OWZlMjc4OWFhYzZhYTEyYzMzYjU1YWFhNzI3YjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbWFnZUJhY2tp
bmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENsaWVudCosIFBhc3NSZWZQdHI8SW1hZ2U+KTsKKyAg
ICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGUoQ2xpZW50JiwgUmVm
PEltYWdlPiYmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEltYWdlQmFja2luZygpOwogCiAg
ICAgc3RhdGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgZ2V0Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRChJbWFnZSopOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyhDbGllbnQqLCBQ
YXNzUmVmUHRyPEltYWdlPik7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50Jiwg
UmVmPEltYWdlPiYmKTsKIAogICAgIHZvaWQgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOwogICAg
IHZvaWQgdXBkYXRlVmlzaWJpbGl0eUlmTmVlZGVkKGJvb2wmIGNoYW5nZWRUb1Zpc2libGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAK
aW5kZXggMWU1OGJlZTBhZjAxNGU2MWZlNzBiZTk4ZTNlMzQyZDBmOGY2NGU0Mi4uMGQ4ODIwZTlm
M2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3Vy
Y2VzIGZyb20gV2ViS2l0Ci1QYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zOCwxMiArMzgsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0
ZVBsYXRmb3JtRGF0YSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQorUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKG5hbWUpOwotICAgIFJlZlB0cjxC
aXRtYXBJbWFnZT4gaW1nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgIGltZy0+c2V0RGF0
YShidWZmZXIucmVsZWFzZSgpLCB0cnVlKTsKLSAgICByZXR1cm4gaW1nLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGxvYWRSZXNvdXJjZUludG9CdWZmZXIobmFtZSk7CisgICAgYXV0byBp
bWcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1nLT5zZXREYXRhKFdURk1vdmUoYnVm
ZmVyKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGltZzsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0
SEJJVE1BUChIQklUTUFQIGJtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmNwcAppbmRleCAwZDA5OGJkZjNmMjNjODk5ZTRhZWIyN2I0ZjIwNTVmZTJi
NjY2Y2M2Li4xNmI2YjVkZmY4MDA1YzRmYTRiODcyMjM4NWQyOTczMzQ4NGIyY2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCkBAIC05Mywy
MCArOTMsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpjcmVh
dGVXaW5kb3coSFdORCBwYXJlbnRId25kKQogfQogCiAjaWYgVVNFKENBKQotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihSZWY8UGxhdGZvcm1DQUxheWVyPiYmIHJv
b3RDaGlsZCkKIHsKLSAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9vdENoaWxkKQorICAgIGlmICht
X3Jvb3RDaGlsZCA9PSByb290Q2hpbGQucHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3Jvb3RDaGlsZCkKICAgICAgICAgbV9yb290Q2hpbGQtPnJlbW92ZUZyb21TdXBlcmxheWVy
KCk7CiAKLSAgICBtX3Jvb3RDaGlsZCA9IHJvb3RDaGlsZDsKLQotICAgIGlmICghbV9yb290Q2hp
bGQpIHsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBtX3Jvb3RDaGlsZCA9IFdURk1vdmUocm9vdENoaWxkKTsKIAogICAgIGlm
ICghbV9sYXllclRyZWVIb3N0KSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENBQ0ZMYXll
clRyZWVIb3N0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5oCmluZGV4IGNkZDBjYTMwNDEwYmE0YTZjOTI4ZGZiOWU5ZmY2YTljNTVlOGQx
OWQuLjRhMjBkOWUwYTdiY2NlMjA1MGM0NzRmMTc4NDBhMjBmMTZhMmJmYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAKICNpZiBVU0UoQ0EpCiAgICAgUGxhdGZvcm1DQUxheWVyKiByb290Q2hpbGRM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRS
b290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZvaWQgc2V0
Um9vdENoaWxkTGF5ZXIoUmVmPFBsYXRmb3JtQ0FMYXllcj4mJik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0
ZXJuRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dHRlcm5EaXJlY3QyRC5jcHAKaW5kZXggMWI5MjI5ZTg2NjUyZDE5NWRhYTdiMGRhZDIyNzNiYjNi
YWYyMmFjMS4uOWRmYjVhZWQ1OTJiOWVhM2EwYzBlZmIyMjlmZThhYjQ0NDU0OGY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5E
aXJlY3QyRC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSUQyRDFCaXRtYXBCcnVzaCogUGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAg
ICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSUQyRDFCaXRtYXBCcnVz
aCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250
ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChwYXR0ZXJuSW1hZ2UtPm5hdGl2ZUltYWdlKCZjb250ZXh0
KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRl
cm5CcnVzaCk7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFw
QnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJy
dXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNT
RVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0
LmgKaW5kZXggODllNDIxOTNkZWYyMWI4ODhlMWEyMGUyYTFhMjc3YjliN2Q0YzdlZi4uNGNlMzY3
YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBTaGFyZWRHRElPYmplY3RfaAogI2RlZmluZSBTaGFyZWRHRElP
YmplY3RfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9i
amVjdC5oPgogCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlZEdESU9iamVjdDxUPj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmplY3QpCisgICAgc3RhdGljIFJl
ZjxTaGFyZWRHRElPYmplY3Q+IGNyZWF0ZShHRElPYmplY3Q8VD4gb2JqZWN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHRElPYmplY3Q8VD4oV1RGTW92ZShvYmpl
Y3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEdESU9iamVjdDxUPihX
VEZNb3ZlKG9iamVjdCkpKTsKICAgICB9CiAKICAgICBUIGdldCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MjU0
ZWY5MDk3YjhkMjNjYzYwOWQ1MDM3NmIzOTA0MmI5NzFiNzllLi5lNWJmMDRkYjIzZDJhY2I5Nzk1
YTMyZTlhNDhlODNiMmIzODUyZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucwogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7
CiAgICAgICAgICAgICBhdXRvJiByZWZlcmVuY2VPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBlZmZlY3Qg
PSBidWlsZFJlZmVyZW5jZUZpbHRlcihyZW5kZXJlciwgKnByZXZpb3VzRWZmZWN0LCByZWZlcmVu
Y2VPcGVyYXRpb24pOwotICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLnNldEZpbHRlckVm
ZmVjdChlZmZlY3QpOworICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLnNldEZpbHRlckVm
ZmVjdChlZmZlY3QuY29weVJlZigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAppbmRleCBiZDFlNTVlNDA3
NTc5MGI3NjEwZmQ1OWNiYmQ5ZWI4YTYwNTRiNzBmLi4xYTk0YTU2MzBiMDcwNTQzMDA2MmQzNWMx
ZDI3NzRmZTcyMWJjODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2VSZXNv
dXJjZTo6cmVzZXRBbmltYXRpb24oKQogCiBSZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3Vy
Y2U6OmltYWdlKGNvbnN0IEludFNpemUmKSBjb25zdAogewotICAgIHJldHVybiBtX2NhY2hlZElt
YWdlID8gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihtX3JlbmRlcmVyKSA6IEltYWdl
OjpudWxsSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSA/IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIobV9yZW5kZXJlcikgOiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQog
CiBib29sIFJlbmRlckltYWdlUmVzb3VyY2U6OmVycm9yT2NjdXJyZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMDIzODI1MjkyZTNjNDMzYmJj
NmFkOTUxOWMzZjZhZDY0YjNiNzM2Mi4uMjhmMDFmYmRhMDgzZGFmOTllOTNkNDYzYTEyYjg3YjZi
NjgzYmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0z
NzE0LDEyICszNzE0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJ
bWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgUmVmUHRyPElt
YWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7
CiAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpID49IDIp
IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gcmVzaXplQ29ybmVySW1h
Z2VIaVJlcyhJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVy
QDJ4IikubGVha1JlZigpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4g
cmVzaXplQ29ybmVySW1hZ2VIaVJlcygmSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0
QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxlYWtSZWYoKSk7CiAgICAgICAgIHJlc2l6ZUNvcm5lcklt
YWdlID0gcmVzaXplQ29ybmVySW1hZ2VIaVJlczsKICAgICAgICAgY29ybmVyUmVzaXplclNpemUg
PSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOwogICAgICAgICBjb3JuZXJSZXNpemVyU2l6ZS5z
Y2FsZSgwLjVmKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpOworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2UqPiByZXNpemVDb3JuZXJJbWFnZUxvUmVzKCZJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKTsKICAgICAg
ICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOwogICAgICAgICBj
b3JuZXJSZXNpemVyU2l6ZSA9IHJlc2l6ZUNvcm5lckltYWdlLT5zaXplKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggZTk4ZmYzMDdk
Zjk0NjA3ZjI4MzI3NGZmMmYxZjA1Nzg1YmQ2ZGNkYS4uNTIyMjA5MDhjYTI0Mzc4NWI3ZjkyMTMw
ZGRmMGMzZjcxMDNlOTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVXaW4uY3BwCkBAIC04OTAsOSArODkwLDkgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gmIG8sIGNvbnN0IFBhaW4KICAg
ICAvLyBiZSBvbmUgcGl4ZWwgY2xvc2VyIHRvIHRoZSBib3R0b20gb2YgdGhlIGZpZWxkLiAgVGhp
cyB0ZW5kcyB0byBsb29rIGJldHRlciB3aXRoIHRoZSB0ZXh0LgogICAgIGJvdW5kcy5zZXRZKHBh
cmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpICsgMSkg
LyAyKTsKIAotICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2Uq
IGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNo
Q2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJ
bWFnZShpc1ByZXNzZWQobykgPyAqY2FuY2VsUHJlc3NlZEltYWdlIDogKmNhbmNlbEltYWdlLCBi
b3VuZHMpOworICAgIHN0YXRpYyBJbWFnZSYgY2FuY2VsSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2Um
IGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNo
Q2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJ
bWFnZShpc1ByZXNzZWQobykgPyBjYW5jZWxQcmVzc2VkSW1hZ2UgOiBjYW5jZWxJbWFnZSwgYm91
bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzOSw4ICs5MzksOCBAQCBib29sIFJl
bmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlckJveCYgbywgYwogICAgIC8vIGJlIG9uZSBwaXhlbCBjbG9zZXIgdG8gdGhlIGJvdHRv
bSBvZiB0aGUgZmllbGQuICBUaGlzIHRlbmRzIHRvIGxvb2sgYmV0dGVyIHdpdGggdGhlIHRleHQu
CiAgICAgYm91bmRzLnNldFkocGFyZW50Qm94LnkoKSArIChwYXJlbnRCb3guaGVpZ2h0KCkgLSBi
b3VuZHMuaGVpZ2h0KCkgKyAxKSAvIDIpOwogICAgIAotICAgIHN0YXRpYyBJbWFnZSogbWFnbmlm
aWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllciIp
LmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqbWFnbmlmaWVy
SW1hZ2UsIGJvdW5kcyk7CisgICAgc3RhdGljIEltYWdlJiBtYWduaWZpZXJJbWFnZSA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoTWFnbmlmaWVyIikubGVha1JlZigpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25pZmllckltYWdlLCBib3VuZHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTc0LDggKzk3NCw4IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJveCYgbywg
Y29uc3QgUGFpCiAgICAgLy8gYmUgb25lIHBpeGVsIGNsb3NlciB0byB0aGUgYm90dG9tIG9mIHRo
ZSBmaWVsZC4gIFRoaXMgdGVuZHMgdG8gbG9vayBiZXR0ZXIgd2l0aCB0aGUgdGV4dC4KICAgICBi
b3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5o
ZWlnaHQoKSArIDEpIC8gMik7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmllckltYWdlID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1bHRzIikubGVh
a1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCptYWduaWZpZXJJbWFn
ZSwgYm91bmRzKTsKKyAgICBzdGF0aWMgSW1hZ2UmIG1hZ25pZmllckltYWdlID0gSW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1bHRzIikubGVha1JlZigpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25pZmllckltYWdlLCBib3VuZHMp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGVhOTM2YTRk
YzgyZWJhYTRhNmFkOTI1ZWE3YWNjNjgzNGY5NDA3ZDAuLjBmYjgyODBlMTllMTA3NmY2MTZmYjNh
OGQ1YjM5OTljMzUwZjE5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVucwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4KICAgICBh
dXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBw
YXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVk
SW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBh
dHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzVmMjRjNGUyNjdhODM3NGE4
YTI4ODA4NDJjNGQ2Yzc5Y2U2MzljYS4uY2EwZjY4ZmE5YWI5NmY5NmFjNjNiZDZlZjE1YjIzNjJj
YWZiMDdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKQEAgLTExNSwzMSArMTE1LDMwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQog
ICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3RhbnQoZGlmZnVz
ZUNvbnN0YW50KCkpOwogCi0gICAgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlID0gY29uc3RfY2Fz
dDxMaWdodFNvdXJjZSo+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0
byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oZGlmZnVzZUxpZ2h0aW5n
LT5saWdodFNvdXJjZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVt
ZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7Ci0gICAgQVNT
RVJUKGxpZ2h0U291cmNlKTsKICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsKIAogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS0+c2V0QXppbXV0aChsaWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CisgICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS5zZXRBemltdXRoKGxpZ2h0RWxlbWVudC0+YXppbXV0aCgpKTsKICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIpCi0gICAgICAgIHJldHVybiBs
aWdodFNvdXJjZS0+c2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0aW9uKCkpOworICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0RWxldmF0aW9uKGxpZ2h0RWxlbWVudC0+ZWxldmF0
aW9uKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS0+c2V0WChsaWdodEVsZW1lbnQtPngoKSk7CisgICAgICAgIHJldHVy
biBsaWdodFNvdXJjZS5zZXRYKGxpZ2h0RWxlbWVudC0+eCgpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGln
aHRFbGVtZW50LT55KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WShsaWdodEVs
ZW1lbnQtPnkoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAg
ICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRaKGxpZ2h0RWxlbWVudC0+eigpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldFoobGlnaHRFbGVtZW50LT56KCkpOwogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291
cmNlLT5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7CisgICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS5zZXRQb2ludHNBdFgobGlnaHRFbGVtZW50LT5wb2ludHNBdFgoKSk7
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQtPnBvaW50c0F0WSgp
KTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WShsaWdodEVsZW1lbnQt
PnBvaW50c0F0WSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0
dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRaKGxpZ2h0RWxlbWVu
dC0+cG9pbnRzQXRaKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRzQXRa
KGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRaKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0
U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAg
ICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+
c3BlY3VsYXJFeHBvbmVudCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0
aW5nQ29uZUFuZ2xlQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGlu
Z0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOworICAgICAgICBy
ZXR1cm4gbGlnaHRTb3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5saW1p
dGluZ0NvbmVBbmdsZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBmYWxzZTsKQEAgLTE4OCw4ICsxODcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAg
ICAgY29uc3QgQ29sb3ImIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdo
dGluZ0NvbG9yKCk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNl
Q29uc3RhbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2Nh
bGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApp
bmRleCA1NTY1YjkxZDEyYjhkZWM3Nzc1NmU1MGUwZjBmOTU0MzJjYWUyYmIyLi4xNzA0MzdmMzJm
YjMzYjRmZGVkNjNlNGNmOWNmYzE0OGQ5Y2ZkMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjYsMzEgKzEyNiwz
MCBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCiAgICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5n
LT5zZXRTcGVjdWxhckV4cG9uZW50KHNwZWN1bGFyRXhwb25lbnQoKSk7CiAKLSAgICBMaWdodFNv
dXJjZSogbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlKj4oc3BlY3VsYXJMaWdo
dGluZy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0
PExpZ2h0U291cmNlJj4oc3BlY3VsYXJMaWdodGluZy0+bGlnaHRTb3VyY2UoKSk7CiAgICAgY29u
c3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50Ojpm
aW5kTGlnaHRFbGVtZW50KHRoaXMpOwotICAgIEFTU0VSVChsaWdodFNvdXJjZSk7CiAgICAgQVNT
RVJUKGxpZ2h0RWxlbWVudCk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11
dGhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEF6aW11dGgobGlnaHRFbGVt
ZW50LT5hemltdXRoKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0QXppbXV0aChs
aWdodEVsZW1lbnQtPmF6aW11dGgoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpl
bGV2YXRpb25BdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihs
aWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNl
dEVsZXZhdGlvbihsaWdodEVsZW1lbnQtPmVsZXZhdGlvbigpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGln
aHRFbGVtZW50LT54KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0WChsaWdodEVs
ZW1lbnQtPngoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAg
ICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRZKGxpZ2h0RWxlbWVudC0+eSgpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldFkobGlnaHRFbGVtZW50LT55KCkpOwogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0
WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS5zZXRaKGxp
Z2h0RWxlbWVudC0+eigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0
WEF0dHIpCi0gICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxl
bWVudC0+cG9pbnRzQXRYKCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0UG9pbnRz
QXRYKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRYKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cG9pbnRzQXRZQXR0cikKLSAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2lu
dHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CisgICAgICAgIHJldHVybiBsaWdodFNv
dXJjZS5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50LT5wb2ludHNBdFkoKSk7CiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAgICAgICByZXR1cm4gbGlnaHRT
b3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0WigpKTsKKyAgICAgICAg
cmV0dXJuIGxpZ2h0U291cmNlLnNldFBvaW50c0F0WihsaWdodEVsZW1lbnQtPnBvaW50c0F0Wigp
KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQot
ICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFyRXhwb25lbnQobGlnaHRFbGVt
ZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0
U3BlY3VsYXJFeHBvbmVudChsaWdodEVsZW1lbnQtPnNwZWN1bGFyRXhwb25lbnQoKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCi0gICAgICAg
IHJldHVybiBsaWdodFNvdXJjZS0+c2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50LT5s
aW1pdGluZ0NvbmVBbmdsZSgpKTsKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNldExpbWl0
aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25lQW5nbGUoKSk7CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTksOCArMTk4LDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3Ig
PSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtl
cm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRp
bmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFu
dCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAzOTlkNmJh
ZTVhNjA0ZTNkM2RjOTM5Mzc2NTQzZjI1NWEzNDAxZTNjLi40NGQwY2JhODFlYjE2NjgyMzJmMDRm
ZjY1YjYwYjIwMzM2NTlmNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hlOjpp
bWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAg
ICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYg
KCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKKyAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgQVNTRVJUKCFpbWFnZS0+c2l6ZSgpLmlzRW1w
dHkoKSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA4NTcxODUwODQxMDJkMGQ2NjFhMzA1YzZk
ZjFjNTk2Mjg1NmVhZTgwLi4zNTcyMDcxMTJjYTIxMThmZDAyZjc2MWFjYWE1MTFkODY1MmIwNjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50
ZXJGdWxsc2NyZWVuKCkKICAgICA6OlNob3dXaW5kb3cobV9mdWxsc2NyZWVuV2luZG93LT5od25k
KCksIFNXX1NIT1cpOwogCiAjaWYgVVNFKENBKQotICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0
Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQpOworICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0
Um9vdENoaWxkTGF5ZXIoKm1fcm9vdENoaWxkKTsKIAogICAgIFBsYXRmb3JtQ0FMYXllciogdmlk
ZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1fdmlkZW9FbGVtZW50
LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIEFTU0VSVCh2aWRlb0xheWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXRETEwuY3BwCmluZGV4IGJkZDk0MThiN2YzMGE4NzE0OWU3YWExZGM3NGViMmQ2YzA5ZDdjYTYu
LjdjM2ZiYjI3M2Y2MTc0Yjc0ODFkNGM1NWM1YjczYTJlNTEyZmNmMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0RExMLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQog
CiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBm
b3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5h
bWUpOwotUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9C
dWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hh
ciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCBy
ZXNvdXJjZSBpZApAQCAtMjI1LDE3ICsyMjUsMTcgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKICAgICBl
bHNlIGlmICghc3RyY21wKG5hbWUsICJmc1ZpZGVvUGxheSIpKQogICAgICAgICBpZHIgPSBJRFJf
RlNfVklERU9fUExBWTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIEhSU1JDIHJlc0luZm8gPSBGaW5kUmVzb3VyY2UoZ0luc3RhbmNl
LCBNQUtFSU5UUkVTT1VSQ0UoaWRyKSwgTCJQTkciKTsKICAgICBpZiAoIXJlc0luZm8pCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIQU5ETEUgcmVzID0g
TG9hZFJlc291cmNlKGdJbnN0YW5jZSwgcmVzSW5mbyk7CiAgICAgaWYgKCFyZXMpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiByZXNvdXJjZSA9
IExvY2tSZXNvdXJjZShyZXMpOwogICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVz
b3VyY2UoZ0luc3RhbmNlLCByZXNJbmZvKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDAw
NjU1ODY3NWEzMmE5ZTM3Yzk5MWFmMmEyNmQ2NzhhMzBjNzVkOS4uNzYxNWYwOTFkZjM3M2M3YWU4
YjU4Nzk1OWIxNGJmZmExNjE5ODdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCkBAIC0zNDksOSArMzQ5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGEK
ICAgICBpZiAobV9iYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKLSAgICBtX2JhY2tpbmdTdG9yZXMuYWRk
KGxheWVyLCBiYWNraW5nU3RvcmUpOwotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGUoKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5nU3RvcmUu
Y29weVJlZigpKTsKKyAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKFdURk1vdmUoYmFja2luZ1N0
b3JlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5n
U3RvcmVJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXIt
PnNldEJhY2tpbmdTdG9yZShudWxscHRyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKFRleHR1cmVNYXBwZXJMYXll
ciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDdhZjY2NDhiMGUxNzg2NjNhYjc4Zjk3OGY4OTNjZTU1ZGQ2NDUyZmIuLjUz
ZjA1Y2UwMDIyYTM2YTEyNTQyMmE1ZTUxOTRhYTRjMzZiYjg3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC05NjQsNyArOTY0LDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBD
dXJzb3ImIGN1cnNvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFpc1ZhbGlk
SW1hZ2VQcmVzZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IEN1cnNvcihJbWFnZTo6bnVsbEltYWdl
KCksIEludFBvaW50KCkpOworICAgICAgICBjdXJzb3IgPSBDdXJzb3IoJkltYWdlOjpudWxsSW1h
Z2UoKSwgSW50UG9pbnQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCBlNTU3MmUxNmQ1ZTBjNzgzMzlmNjZhMDNjNjUzOGE2NWMzNWI5Y2M3Li44MTFlZWVhMjBi
NGM4MjM0YzY0Mzg5NzQzMDJkZGU2YWNmYzYxMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjExLDExICsyMTEs
MTEgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGlu
YXRlZExheWVySUQgaWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRl
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0KIAotUmVmPENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJ
Zk5lZWRlZChJbWFnZSogaW1hZ2UpCitSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlJiBpbWFn
ZSkKIHsKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAg
YXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBp
bWFnZV0gewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0
aGlzLCBpbWFnZSk7CisgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoJmltYWdl
KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCYWNraW5ncy5lbnN1cmUoaW1hZ2VJRCwg
W3RoaXMsICZpbWFnZV0geworICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OmNyZWF0ZSgqdGhpcywgaW1hZ2UpOwogICAgIH0pOwogICAgIHJldHVybiAqYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBkMmNhNzg0YjM5MDRiNjZiNmViNjhiOTE0OGY0Y2Nh
YWRlNDE2YWQxLi43YzU0MDE4NzMyMGViYmU3ZmQ4ZDI3YmY0ODEwMTcyNjM0YTIyNWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5o
CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJDbGllbnQKICAgICBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxX
ZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoV2ViQ29yZTo6SW1hZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50
MzJfdCYgLyogYXRsYXNJRCAqLywgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJTdGF0ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4
IDc2MWIyYTI0NDYxYTM0MWNkY2NlNzkyMDJhYzNjZTdjOTI1MzE2NjkuLjJkZjQyZTk0NzMwZjE2
MzgzZjliNWE3MzJlODI5NmNiNWMxYTI1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmZpbHRlcnND
YW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGUKICAgICByZXR1cm4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGZpbHRlcnMpOwog
fQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gR3Jh
cGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewog
ICAgIGF1dG8gcmVzdWx0ID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBl
LCBvd25lciwgbV9jb250ZXh0KTsKIApAQCAtNTIsMTIgKzUyLDEyIEBAIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRmb3JtQ0FMYXll
cihQbGF0Zm9yCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0
ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lciwgbV9jb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVyQ0FSZW1vdGU6OmNyZWF0ZVBsYXRm
b3JtQ0FBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCitSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NM
YXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRp
b246OkFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjcmVhdGUodHlwZSwga2V5UGF0aCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBo
aWNzTGF5ZXJDQVJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAppbmRleCA4MzVlNGI3MzQ4OTQ4OGM5ZDE2MzYxZWEw
MmQxYTU4OWJhMDQ5ZjhiLi5lNGE5MjU3YTY5YWIyYWVmZDFlYTg2ZDBjOGJjNTZjODU2NzhhNzZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBo
aWNzTGF5ZXJDQVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBUmVtb3RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7
Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3Jt
Q0FMYXllcihQbGF0Zm9ybUxheWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRp
b246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
PiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciosIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY2FuJ3QgY3VycmVudGx5IHByb3h5
IGRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2UgY29udGVudHMsIHNvIG9wdCBvdXQgb2YgdGhpcyBv
cHRpbWl6YXRpb24uCiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNv
cmU6OkltYWdlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLmgKaW5kZXggZmY3NGM3MzNiNmM0M2FmMjFiYjBlODFlOWI5NDMy
ZjY2NmNjZGY5Yi4uNjMzOWIyMjMwNjYzOGUwMmYwZjA5ZjFjZmU4NzJlMTU2M2I3NDliNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29w
eSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDE2M2E3MmIyMDIy
ZGQ4YTkwMDU5NzU2MDRkNmE0OGUxODQ4MWE0ZWYuLmIxMDAzNzA0OTAyMWUyNjgyZmNkOWFhYzNh
MTNhMTFjOGM2Nzg3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAg
LTMwNiw5ICszMDYsOSBAQCBSZWY8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246OgogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodHlwZSwga2V5UGF0aCkpOwogfQog
Ci1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGU6OmNvcHkoKSBjb25zdAorUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBhbmltYXRpb24gPSBjcmVhdGUoYW5pbWF0aW9uVHlwZSgpLCBrZXlQYXRoKCkpOworICAg
IGF1dG8gYW5pbWF0aW9uID0gY3JlYXRlKGFuaW1hdGlvblR5cGUoKSwga2V5UGF0aCgpKTsKICAg
ICAKICAgICBhbmltYXRpb24tPnNldEJlZ2luVGltZShiZWdpblRpbWUoKSk7CiAgICAgYW5pbWF0
aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbigpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHko
KSBjb25zdAogICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAg
ICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBk
b3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPigqYW5pbWF0aW9uKS5zZXRIYXNFeHBs
aWNpdEJlZ2luVGltZShoYXNFeHBsaWNpdEJlZ2luVGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPihhbmltYXRpb24uZ2V0KCkpLnNldEhhc0V4cGxpY2l0QmVn
aW5UaW1lKGhhc0V4cGxpY2l0QmVnaW5UaW1lKCkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNw
ZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVlcy4KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ID09IEtleWZyYW1lKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>