<?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>233516</bug_id>
          
          <creation_ts>2021-11-26 02:58:59 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 12/23] Make FilterEffects create FilterEffectAppliers which will be used by FilterEffect::apply()</short_desc>
          <delta_ts>2021-11-29 21:34:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817931</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-26 02:58:59 -0800</bug_when>
    <thetext>This is a step towards integrating CoreImage appliers in FilterEffect::apply().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817934</commentid>
    <comment_count>1</comment_count>
      <attachid>445185</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-26 03:11:44 -0800</bug_when>
    <thetext>Created attachment 445185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817995</commentid>
    <comment_count>2</comment_count>
      <attachid>445185</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-26 13:06:58 -0800</bug_when>
    <thetext>Comment on attachment 445185
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FilterEffectApplier.h:37
&gt; +    template&lt;typename FilterEffectApplierType, typename FilterEffectType&gt;
&gt; +    static std::unique_ptr&lt;FilterEffectApplierType&gt; create(const FilterEffectType&amp; effect)

Is there a need to allocate FilterEffectAppliers on the heap? Currently we don&apos;t let the applier object last longer than the function we create it in.

&gt; Source/WebCore/platform/graphics/filters/FilterEffectApplier.h:42
&gt;      FilterEffectApplier() = default;

If we do keep creating unique_ptrs for filterEffectAppliers, should this be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817996</commentid>
    <comment_count>3</comment_count>
      <attachid>445185</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-26 13:15:17 -0800</bug_when>
    <thetext>Comment on attachment 445185
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffectApplier.h:37
&gt;&gt; +    static std::unique_ptr&lt;FilterEffectApplierType&gt; create(const FilterEffectType&amp; effect)
&gt; 
&gt; Is there a need to allocate FilterEffectAppliers on the heap? Currently we don&apos;t let the applier object last longer than the function we create it in.

Yes this is correct. But the apply() method is virtual and we need to call it from FilterEffect::apply()

    auto applier = createApplier(filter);
    applier-&gt;apply(filter, inputFilterImages(), *m_filterImage);

I think this can&apos;t be achieved unless the applier is a pointer to the base class.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffectApplier.h:42
&gt;&gt;      FilterEffectApplier() = default;
&gt; 
&gt; If we do keep creating unique_ptrs for filterEffectAppliers, should this be private?

makeUnique() requires the constructor to be public. But std::make_unique() does not. But you are right FilterEffectApplier::FilterEffectApplier() should be protected at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817997</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-26 13:24:27 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #3)
&gt; Yes this is correct. But the apply() method is virtual and we need to call
&gt; it from FilterEffect::apply()
&gt; 
&gt;     auto applier = createApplier(filter);
&gt;     applier-&gt;apply(filter, inputFilterImages(), *m_filterImage);
&gt; 
&gt; I think this can&apos;t be achieved unless the applier is a pointer to the base
&gt; class.

Understood.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818007</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-26 15:51:23 -0800</bug_when>
    <thetext>Committed r286186 (244568@main): &lt;https://commits.webkit.org/244568@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445185.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818008</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-26 15:52:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85774904&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445185</attachid>
            <date>2021-11-26 03:11:44 -0800</date>
            <delta_ts>2021-11-26 15:51:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233516-20211126031143.patch</filename>
            <type>text/plain</type>
            <size>79274</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVlYzdhMDFjN2FmMzA3
OTAzNjVkYWFhMTk2YmEyMzAyOGI0N2Q3OC4uNjgzYjYxOTQ0OThmN2ExOTAwYzdjM2Y4YzA2MTg5
MDM1YWRkOTFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAyMS0xMS0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgRmlsdGVyRWZmZWN0cyBjcmVhdGUgRmlsdGVyRWZmZWN0QXBwbGllcnMgd2hpY2ggd2ls
bCBiZSB1c2VkIGJ5IEZpbHRlckVmZmVjdDo6YXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzdGVwIGlzIHJlcXVpcmVkIHRvIGFsbG93
IGludGVncmF0aW5nIENvcmVJbWFnZSBGaWx0ZXJFZmZlY3QgYXBwbGllcnMKKyAgICAgICAgaW4g
RmlsdGVyRWZmZWN0OjphcHBseSgpLiBDdXJyZW50bHkgYXBwbHlpbmcgQ29yZUltYWdlIEZpbHRl
ckVmZmVjdCBoYXMKKyAgICAgICAgdG8gZ28gdG8gYSBkaWZmZXJlbnQgY29kZSBwYXRoIGluIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNyZWF0
ZUFwcGxpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6Y3JlYXRlQXBwbGll
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5z
ZmVyOjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50
VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbXBvc2l0ZTo6Y3JlYXRlQXBwbGllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmNyZWF0ZUFwcGxpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGVBcHBsaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmNy
ZWF0ZUFwcGxpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmNyZWF0ZUFwcGxp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxv
b2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVBcHBsaWVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGln
aHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6Y3JlYXRlQXBwbGllciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVPZmZzZXQ6OmNyZWF0ZUFwcGxpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVP
ZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6Y3JlYXRl
QXBwbGllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmNyZWF0ZUFwcGxpZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBseSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEFwcGxpZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI6OkZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6Y3JlYXRlQXBwbGllciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmNyZWF0ZUFwcGxpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxl
bmRTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyOjpG
RUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JN
YXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFw
cGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVD
b21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5QXJpdGht
ZXRpYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGll
cjo6YXBwbHlOb25Bcml0aG1ldGljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9z
aXRlU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlBcml0aG1ldGljKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseU5vbkFyaXRobWV0
aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBs
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXhTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50
TWFwU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50
TWFwU29mdHdhcmVBcHBsaWVyOjpGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcjo6YXBwbHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFw
cGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVy
OjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3dTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kU29mdHdhcmVBcHBsaWVyOjphcHBseSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUZs
b29kU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1
c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdT
b2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29m
dHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neVNvZnR3YXJl
QXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5U29m
dHdhcmVBcHBsaWVyOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVB
cHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyOjph
cHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldFNvZnR3YXJlQXBwbGllcjo6
YXBwbHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBs
aWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1
cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1
cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGll
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNl
QWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGFT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFs
cGhhU29mdHdhcmVBcHBsaWVyOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhp
Y1NvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljU29m
dHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFw
aGljU29mdHdhcmVBcHBsaWVyOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUltYWdlU29mdHdhcmVBcHBsaWVyOjphcHBseSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUltYWdlOjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorCiAyMDIxLTExLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBGaWx0ZXJFZmZlY3QgcmVsYXRpdmUgYWJzb2x1dGVQYWludFJlY3QgY2FsY3VsYXRpb24g
dG8gRmlsdGVySW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDM1Y2Q2NTVmNmI2MjJiZTAwYzJjMTBhZGMwNDg5
ZWUzYzVkY2U0YTQuLjk0MTcyMTdmNGY5MTMwODJmYTA5YjIzMzBkNTlkNDBiNDM1ODJmZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcApAQCAtNTEsOSArNTEsOSBAQCBib29sIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVu
ZE1vZGUgbW9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGRUJsZW5kOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0QXBwbGllcj4gRkVCbGVuZDo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBj
b25zdAogewotICAgIHJldHVybiBGRUJsZW5kU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShm
aWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgpKTsKKyAgICByZXR1cm4g
RmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI+KCp0aGlz
KTsKIH0KIAogVGV4dFN0cmVhbSYgRkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaApp
bmRleCA0N2NmODVlOTg5NWE3MGY0MzQ2MWUxMGMyNDMyZGNmYTdkMGE0ZTlmLi44ODljNmY3YjE3
NGIyMDY5Y2Q5YzNmOGEyYTUxNjU5ODU4OGZlMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaApAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEZFQmxlbmQoQmxlbmRNb2RlKTsKIAotICAgIGJvb2wgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBj
aGFyKiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2ln
bmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjb2xvckFycmF5TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDVhYTg4MmE3
YTI5ZWZjN2ZmM2I2YTNmN2UxOGFhZDQ1OTM0ZTU0ZDEuLjYzMDU5OWY2ZDdkM2RkMzk1YmJhOWVl
NWMwMjM2YWI4N2JmMDgxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXhT
b2Z0d2FyZUFwcGxpZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk4LDkgKzk5LDE0IEBA
IGJvb2wgRkVDb2xvck1hdHJpeDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKICAgICByZXR1
cm4gbV90eXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOwogfQogCi1i
b29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZp
bHRlcikKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUNvbG9yTWF0cml4
OjpjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYgZmlsdGVyKSBjb25zdAogewotICAgIHJldHVy
biBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0
RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgpKTsKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAg
ICAvLyBGSVhNRTogcmV0dXJuIEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLgorICAgIGlm
IChmaWx0ZXIucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBGaWx0ZXJFZmZlY3RB
cHBsaWVyOjpjcmVhdGU8RkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcj4oKnRoaXMpOwogfQog
CiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29s
b3JNYXRyaXhUeXBlJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAppbmRleCBlMWFjNjg4ODA5YjU1MDg1
ZWIzYWM3ZWJhZjc0NTNmNjkyN2ViNTc2Li4wNGY1N2YxZGUzODkxMzA3N2M1ZDhlNDAxMGYyM2Nk
NjZkZGVmMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCByZXN1bHRJc0FscGhhSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJv
b2wgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNvbnN0IEZp
bHRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IGJiNTQyOGE1
N2U4M2I2MGFlYTI0OTc5YjFjYmUzOTc0MjA5NzY2ZWQuLmVhZmE2YjM4M2QxNWIxZDU0MmFhNzE3
NGQxYmIzYTc1NGU2NWQyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKIAogI2luY2x1
ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuaCIKKyNpbmNsdWRlICJGaWx0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ0LDkgKzQ1LDE0IEBAIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50
VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuCiB7CiB9CiAK
LWJvb2wgRkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZp
bHRlciYgZmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IEZFQ29t
cG9uZW50VHJhbnNmZXI6OmNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIoKnRoaXMp
LmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOworI2lm
IFVTRShDT1JFX0lNQUdFKQorICAgIC8vIEZJWE1FOiByZXR1cm4gRkVDb21wb25lbnRUcmFuc2Zl
ckNvcmVJbWFnZUFwcGxpZXIuCisgICAgaWYgKGZpbHRlci5yZW5kZXJpbmdNb2RlKCkgPT0gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlm
CisgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZTxGRUNvbXBvbmVudFRyYW5z
ZmVyU29mdHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25l
bnRUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmgKaW5kZXggYzdkMzQ5MzZmMDY2YmFjY2E1NTE4OTdmMGQzYzNm
MTRlZWNmZDU0Ny4uNTljOTdiNjdjYjFhMTE1MjY3MGFiYWQwNTliM2I3ODE5ZWU2NzhiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVu
YywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYmx1ZUZ1bmMsIGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIGFscGhhRnVuYyk7CiAKLSAgICBib29sIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0QXBwbGllcj4gY3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
VEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCmluZGV4IDVhNDhlYTQxOWQwYzhiMDY5NGNhYjU3OTA0NzY2MjM4YjEyNGY0
Y2IuLjBlNzczYzA1NWY1MThiM2NlNmIyYWJiZTEzMDUxMmJhODljZWY2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgfQogfQogCi1ib29sIEZF
Q29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitz
dGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gRkVDb21wb3NpdGU6OmNyZWF0ZUFw
cGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3QKIHsKLSAgICByZXR1cm4gRkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZp
bHRlckltYWdlKCkpOworICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8RkVD
b21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUm
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmgKaW5kZXggZjVlNDk3NDAyNjljMGQ2ZWY5OWQwODcyMDQxMWQzNGVl
OGQ2NzQxMy4uYjBlODI2ZjkzMTU5N2E0YTI5NTA2OWQ4MzBhOTg2MzUwOTdkMzNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtYXlQcm9kdWNl
SW52YWxpZFByZW11bHRpcGxpZWRQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5
cGUgPT0gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQogCi0gICAgYm9vbCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggZGRiZDk1ZWQzZjk0ZDBjYTMxOGE4
MDkyZTdhYTRlMzRlN2Q3ZmMxNC4uZjI2NTlkMzZlNTViYjIyZDY0ZmY1Yzg0MDZlYTZmYjRjZTgw
OGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC0xMTMsOSArMTEzLDkgQEAgYm9v
bCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVy
RWZmZWN0QXBwbGllcj4gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0
ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVy
KCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgp
KTsKKyAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFQ29udm9sdmVNYXRy
aXhTb2Z0d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEVkZ2VNb2RlVHlwZSYgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1h
dHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmgKaW5kZXggMDJkN2MyYmVjOGJkYTIxMjQ2MDhkMzUwNDdlZTlmM2JhZGM0Y2I0
MC4uZWJiMDA2ZGE4Y2QwY2VhY2EyMmM0NmJmZWJhYzg2MjczOTM0MTg1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0
ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKLSAgICBi
b29sIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gY3JlYXRlQXBwbGllcihjb25zdCBG
aWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCmluZGV4IDVhZGVmZDdlODVl
ZjkwNjk0OTMzMTVjOTA3ZGRjNzkxODFkN2EyMmMuLjc4OTk3YTAzNjczMDhiZjVjOWMwOWEwNTAx
MDZiNTY0ZDIwMzg0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCkBAIC04Myw5ICs4
Myw5IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2Uo
RmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50IGluCiAgICAgICAgIGluLT50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiB9CiAKLWJvb2wgRkVEaXNwbGFj
ZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKK3N0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRURpc3BsYWNl
bWVudE1hcFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEZpbHRlcklt
YWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CisgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6
OmNyZWF0ZTxGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcj4oKnRoaXMpOwogfQogCiBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2hhbm5l
bFNlbGVjdG9yVHlwZSYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAppbmRleCA5NjU0NjI3
OGMyZDZhYWZkNDY5MGUzNGNhYzJkZGE4OTc2MGFhODljLi5jZWM2YjMyMjM4YzkyYjg0NWJkMjgw
MjA2NjcyZmVhZTllYWMyYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCkBAIC01MSwxMyAr
NTEsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRURpc3BsYWNlbWVudE1hcChDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5u
ZWxTZWxlY3RvciwgZmxvYXQpOwogCi0gICAgYm9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7Ci0KICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUg
eyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkp
OyB9CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gY3JlYXRlQXBw
bGllcihjb25zdCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKKwogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSBtX3hDaGFu
bmVsU2VsZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggZjVmNWM2MDEyNzgyNWRiNDUxNDgx
Zjc2MGM4ZDBjMjM3YmY4MzMzOC4uMThkOGMzMjZkMTk2ZWY5MmEzMGIyMGIyNTY5ZGUwOTVkZjc0
NmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNjYsMTEgKzY2LDYgQEAgdm9pZCBGRURyb3BT
aGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQog
ICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVQYWludFJl
Y3QpKTsKIH0KIAotYm9vbCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImIGZpbHRlcikKLXsKLSAgICByZXR1cm4gRkVEcm9wU2hhZG93U29mdHdhcmVBcHBs
aWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFn
ZSgpKTsKLX0KLSAgICAKIEludE91dHNldHMgRkVEcm9wU2hhZG93OjpvdXRzZXRzKCkgY29uc3QK
IHsKICAgICBJbnRTaXplIG91dHNldFNpemUgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0
c2V0U2l6ZSh7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODIsNiArNzcsMTEgQEAgSW50T3V0c2V0
cyBGRURyb3BTaGFkb3c6Om91dHNldHMoKSBjb25zdAogICAgIH07CiB9CiAKK3N0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRURyb3BTaGFkb3c6OmNyZWF0ZUFwcGxpZXIoY29u
c3QgRmlsdGVyJikgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3Jl
YXRlPEZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllcj4oKnRoaXMpOworfQorICAgIAogVGV4dFN0
cmVhbSYgRkVEcm9wU2hhZG93OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
LCBSZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdHMgPDwg
aW5kZW50IDw8IltmZURyb3BTaGFkb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKaW5kZXggODY5ZDcwM2FmYjFk
MWQzZTIyY2Q0ZWY3ZmY2YTE2MDU4M2JkZjA3MS4uNzFmMzBiYmE0ODc3NmY3ZGI0NmJlMjk3ZDIy
MTM4YzQ0ZDE5ODNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6
CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRl
ciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGE0ODE0ZWVmZGJjM2ZhMTVmNDFiMDFhMjhiNDA1ZmFjOWJk
ODViY2UuLmQ0ZWQyZDVlMmFmZDJmNmYwYmNkNzE2ZjE4NGRhNWZmZmIxNzVmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNw
cApAQCAtNTgsOSArNTgsOSBAQCBib29sIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBm
bG9vZE9wYWNpdHkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRkVGbG9vZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPEZp
bHRlckVmZmVjdEFwcGxpZXI+IEZFRmxvb2Q6OmNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikg
Y29uc3QKIHsKLSAgICByZXR1cm4gRkVGbG9vZFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHko
ZmlsdGVyLCB7IH0sICpmaWx0ZXJJbWFnZSgpKTsKKyAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBw
bGllcjo6Y3JlYXRlPEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KIAogVGV4dFN0
cmVhbSYgRkVGbG9vZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVw
cmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRleCBiOTdiNDNlMzc2
MWFiMDE1M2VhYTYxOWNhYWZjNTQ0N2ZiNmVmOTdkLi5kNWY0NGVhOWQyNzgzMGZmYjMzZjY5Njhj
NzhhNTcxOTA5YTA5NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZSB7
IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7
IH0KIAotICAgIGJvb2wgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJy
aWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVhdGVBcHBs
aWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9u
VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggZWE5ZDMz
MzY3OGFlMmI2Y2U3ZTlhZjI2YjQ0MzY2MjFhYzdiMTk4NS4uNmNlNmZmN2U3ZWNmODQ5NTQ1ZWE4
OWY5NzJjY2JmNzE2MDllNjVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTEzNiw5ICsx
MzYsOSBAQCBib29sIEZFR2F1c3NpYW5CbHVyOjpyZXN1bHRJc0FscGhhSW1hZ2UoKSBjb25zdAog
ICAgIHJldHVybiBpbnB1dEVmZmVjdCgwKS0+cmVzdWx0SXNBbHBoYUltYWdlKCk7CiB9CiAKLWJv
b2wgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZp
bHRlcikKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRUdh
dXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEZpbHRl
ckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CisgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxp
ZXI6OmNyZWF0ZTxGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcj4oKnRoaXMpOwogfQogCiBU
ZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCmluZGV4IDRkNGUwMjAxNDRkMzkxMzk0ZDZiZjljOTcxZjQ5Mjc4ZjFiZmZiYjMu
LjIyOWY0ZjM5NDZlYTRkOWI0NjU2MmUxODQ1NGNjODc1Mzg2NTBlYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVzdWx0SXNBbHBo
YUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0QXBwbGllcj4gY3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRT
dHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNw
cAppbmRleCAzMDlkZjllNzUwYzhmNTQzZThhNjY2Mjk3ZTE0NjEzNWRiMDEwODE5Li42YjA2NmIz
YmEwYzVjZmZiMGU0NTIyM2IwMzJlYjM4YzFmOTM0NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTgx
LDkgKzgxLDkgQEAgYm9vbCBGRUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGRUxpZ2h0aW5n
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitzdGQ6OnVuaXF1
ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gRkVMaWdodGluZzo6Y3JlYXRlQXBwbGllcihjb25z
dCBGaWx0ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVy
KCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgp
KTsKKyAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFTGlnaHRpbmdTb2Z0
d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcu
aAppbmRleCAzMTE4OWE0MGE2MDVhMDVjY2EwYjgxMGVjYTkyYjNhMTFmZDk0ZTk2Li45ZDdkNmFl
MjU2Yzk2YmVmNmZkZmNiNmMwN2I1YjFjMDQ4YjJmOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAtNjAsNyAr
NjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5n
SW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCi0gICAgYm9vbCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRl
ckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICNpZiBDUFUoQVJNX05FT04pICYmIENQVShBUk1fVFJBRElUSU9OQUwpICYmIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQogICAgIHN0YXRpYyBpbnQgZ2V0UG93ZXJDb2VmZmljaWVudHMo
ZmxvYXQgZXhwb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMGM0MjIwZjk2ZjRjMjExZDk4NGJiZjI4MDdm
ZTQwZGU1M2UzZDQxYi4uODYzYjc5OWFkZTkxODk1MDI4MTE2Y2FlNWMyN2RkMzcyMWJmNmUxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1l
cmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TWVyZ2UuY3BwCkBAIC0zOCw5ICszOCw5IEBAIEZFTWVyZ2U6OkZFTWVyZ2UoKQogewogfQogCi1i
b29sIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikK
K3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRU1lcmdlOjpjcmVhdGVBcHBs
aWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZFTWVyZ2VTb2Z0d2FyZUFw
cGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlcklt
YWdlKCkpOworICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8RkVNZXJnZVNv
ZnR3YXJlQXBwbGllcj4oKnRoaXMpOwogfQogCiBUZXh0U3RyZWFtJiBGRU1lcmdlOjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblR5cGUgcmVwcmVz
ZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTWVyZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNZXJnZS5oCmluZGV4IDg0NmIxNWNmYmFiYTIyOWVjZjVlMmYxNDBmOTg3ZDgz
NjkxNzQ2NDYuLjY0ZWQ0YTc3YjFlMDczZTBjNjFkZDU1M2YwMDgyMGIxZjBmYjY3MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5o
CkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVNZXJnZSgpOwogCi0g
ICAgYm9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29u
c3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBj
b25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggYjk0NmUyMDM4YjVkNmUz
N2FhYzQxMGVkN2IyYWYxMzhjN2RjNzFkYy4uZjFmNGRkZDY5OWZiMWY5ZjdhNTdlN2NmNDRiYjA3
MmRiZTQ5ZGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtODQsOSArODQsOSBAQCBib29sIEZF
TW9ycGhvbG9neTo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKICAgICByZXR1cm4gaW5wdXRF
ZmZlY3QoMCktPnJlc3VsdElzQWxwaGFJbWFnZSgpOwogfQogCi1ib29sIEZFTW9ycGhvbG9neTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQorc3RkOjp1bmlxdWVf
cHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IEZFTW9ycGhvbG9neTo6Y3JlYXRlQXBwbGllcihjb25z
dCBGaWx0ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxp
ZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdl
KCkpOworICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8RkVNb3JwaG9sb2d5
U29mdHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlJiB0eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmgKaW5kZXggZGJjZGFiNjZhOWI5Nzc5YTcxNDJiZTQ2MGMxNjdjNTUyMTRhNzI0
OS4uZTU0ODQ4MDdiNzQ3MzczYTFhZTMxODdjZmY1Y2RlMGY3Y2M3ZWNkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlc3VsdElzQWxwaGFJ
bWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVj
dEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3Ry
ZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRl
eCAxM2EwYzZmMTFjYzQ5MGUxYmY4ZDI2OWUzMzg2N2ViMzAxZjY1OTlkLi4wNDQ5MGIzNTYxM2Jm
YjcwMWIyZjBjZDRkZGJhZGM0ZjNkNGI4MjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNjksOSArNjksOSBA
QCBib29sIEZFT2Zmc2V0OjpyZXN1bHRJc0FscGhhSW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBp
bnB1dEVmZmVjdCgwKS0+cmVzdWx0SXNBbHBoYUltYWdlKCk7CiB9CiAKLWJvb2wgRkVPZmZzZXQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKK3N0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRU9mZnNldDo6Y3JlYXRlQXBwbGllcihjb25zdCBG
aWx0ZXImKSBjb25zdAogewotICAgIHJldHVybiBGRU9mZnNldFNvZnR3YXJlQXBwbGllcigqdGhp
cykuYXBwbHkoZmlsdGVyLCBpbnB1dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7Cisg
ICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZTxGRU9mZnNldFNvZnR3YXJlQXBw
bGllcj4oKnRoaXMpOwogfQogCiBUZXh0U3RyZWFtJiBGRU9mZnNldDo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9u
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU9mZnNldC5oCmluZGV4IGVkNzNmMjcyMjk1ZGFhOWExYTJiMGY1OTg5N2I4ZDcyZGRkNWNl
NTEuLjNjMmRhYWYzM2ZmZGJlODYxZjI5MDRjZjIwMjIzNWQ0M2U4MWRjZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVzdWx0SXNBbHBoYUltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGll
cj4gY3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdU
Rjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBS
ZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggNWEwYmNlN2Fi
YWE2ZjY5NWIwM2I3N2IwNGYxZDExMWZiZDVmZmMzZC4uMmFkOTdiMzI3YmQ5ZWMxMmQ1Nzc1ZTg2
ZjM5ZTAyNzRiZjNlNDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNDIsOSArNDIsOSBAQCBib29sIEZFVGlsZTo6
cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKICAgICByZXR1cm4gaW5wdXRFZmZlY3QoMCktPnJl
c3VsdElzQWxwaGFJbWFnZSgpOwogfQogCi1ib29sIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQorc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFw
cGxpZXI+IEZFVGlsZTo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXImKSBjb25zdAogewotICAg
IHJldHVybiBGRVRpbGVTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRG
aWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOworICAgIHJldHVybiBGaWx0ZXJFZmZlY3RB
cHBsaWVyOjpjcmVhdGU8RkVUaWxlU29mdHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CiAKIFRleHRT
dHJlYW0mIEZFVGlsZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVw
cmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKaW5kZXggODA2YWJhM2JhYTYz
MmFhZDBmNWY3Njg5MmUyMzMzZTM5OWVhODNkMi4uMmVlMzczMTI4ZmNhNGY1NjE0ZmUzYWVkODQy
ZjdiN2E5ODU5M2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVGlsZS5oCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9vbCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggZTQxODZhNGI3NDQ4MmU1Njg0YTUxNzk1YTlmNWUy
NmQ0MzFjNzllOS4uYWM2YTQ0OWZlY2FmYjc4YTA0MjNkZjE3Y2I0MzVmNDRkMTRlNTljMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcApAQCAtOTUsOSArOTUsOSBAQCBib29sIEZFVHVyYnVsZW5jZTo6c2V0
U3RpdGNoVGlsZXMoYm9vbCBzdGl0Y2gpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRkVU
dXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitz
dGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gRkVUdXJidWxlbmNlOjpjcmVhdGVB
cHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZFVHVyYnVsZW5jZVNv
ZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCB7IH0sICpmaWx0ZXJJbWFnZSgpKTsK
KyAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFVHVyYnVsZW5jZVNvZnR3
YXJlQXBwbGllcj4oKnRoaXMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgVHVyYnVsZW5jZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCmluZGV4IDk3
M2ViMWQzZTljMDMwMTQ1YzRlY2FjOWMxZDMxZjM5YTljNTRmZjYuLjVmZmFkZGVjMjFiMWVmYjg3
NGY5YjYyNjI4OWFlZmNjNDczOWRlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaApAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBG
aWx0ZXImKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
bWF4RWZmZWN0UmVjdCgpKSk7IH0KIAotICAgIGJvb2wgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNv
bnN0IEZpbHRlciYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RB
cHBsaWVyPiBjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCA3YWNiODgzMWJjMmZkZWY0YTkwMTk1NDg3NjAwYmRjY2Y5ZmY1YWRlLi4wOGQ4ZDM2
YzA3MDkyMGFmMzkyMjFlMzBhMTE1NjQ2NWY1ZTI4YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVy
LmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgogI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NCw4ICsxNDQsMTEgQEAgYm9vbCBG
aWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIGlmICghbV9maWx0
ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gQWRkIHBsYXRmb3JtIHNw
ZWNpZmljIGFwcGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1cm4gZWFybGllci4KLSAgICByZXR1
cm4gcGxhdGZvcm1BcHBseVNvZnR3YXJlKGZpbHRlcik7CisgICAgYXV0byBhcHBsaWVyID0gY3Jl
YXRlQXBwbGllcihmaWx0ZXIpOworICAgIGlmICghYXBwbGllcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGFwcGxpZXItPmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFn
ZXMoKSwgKm1fZmlsdGVySW1hZ2UpOwogfQogCiB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1
bHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggODc1ZDhmZWY5MWQ1MjBhNGEyOWJlZmEzNzFlZWMyZDMy
ZTQ3MjUwYy4uZTJiZDFlODNlOWMwMWEyYWE3ZWE0YmUyMjFiNjYxMmQ4YzgwZDYzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKK2NsYXNzIEZpbHRlckVmZmVjdEFwcGxpZXI7CiBj
bGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRmlsdGVyRWZmZWN0IDogcHVibGljIEZpbHRlckZ1
bmN0aW9uIHsKQEAgLTExNiwxMiArMTE3LDEyIEBAIHByb3RlY3RlZDoKICAgICB1c2luZyBGaWx0
ZXJGdW5jdGlvbjo6RmlsdGVyRnVuY3Rpb247CiAKICAgICB2aXJ0dWFsIGJvb2wgbWF5UHJvZHVj
ZUludmFsaWRQcmVtdWx0aXBsaWVkUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVh
dGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgY2xpcEFic29s
dXRlUGFpbnRSZWN0KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSA9IDA7Ci0KICAgICBGaWx0ZXJFZmZlY3RWZWN0b3Ig
bV9pbnB1dEVmZmVjdHM7CiAKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IG1fZmlsdGVySW1hZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdEFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0QXBwbGllci5oCmluZGV4IGZlMzI0ZjczZDBkMDE2ODgwYzI3MzQ1
MGFiYzBhMTRmZDhlZmIzZTUuLmM5MjFiMmNmMzExZjY1MzJiZGVmODMxNGY2NTZjOWE0NzNlZjNk
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0QXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0QXBwbGllci5oCkBAIC0zMywyMiArMzMsMjggQEAgY2xh
c3MgRmlsdGVyOwogCiBjbGFzcyBGaWx0ZXJFZmZlY3RBcHBsaWVyIHsKIHB1YmxpYzoKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXJFZmZlY3RBcHBsaWVyVHlwZSwgdHlwZW5hbWUgRmlsdGVy
RWZmZWN0VHlwZT4KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxp
ZXJUeXBlPiBjcmVhdGUoY29uc3QgRmlsdGVyRWZmZWN0VHlwZSYgZWZmZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyRWZmZWN0QXBwbGllclR5cGU+KGVmZmVjdCk7
CisgICAgfQorICAgIAogICAgIEZpbHRlckVmZmVjdEFwcGxpZXIoKSA9IGRlZmF1bHQ7CiAgICAg
dmlydHVhbCB+RmlsdGVyRWZmZWN0QXBwbGllcigpID0gZGVmYXVsdDsKICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseShj
b25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFn
ZSYgcmVzdWx0KSBjb25zdCA9IDA7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXJFZmZl
Y3RUeXBlPgogY2xhc3MgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyIDogcHVibGljIEZpbHRl
ckVmZmVjdEFwcGxpZXIgewogcHVibGljOgotICAgIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGll
cihGaWx0ZXJFZmZlY3RUeXBlJiBlZmZlY3QpCisgICAgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBs
aWVyKGNvbnN0IEZpbHRlckVmZmVjdFR5cGUmIGVmZmVjdCkKICAgICAgICAgOiBtX2VmZmVjdChl
ZmZlY3QpCiAgICAgewogICAgIH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBGaWx0ZXJFZmZlY3RU
eXBlJiBtX2VmZmVjdDsKKyAgICBjb25zdCBGaWx0ZXJFZmZlY3RUeXBlJiBtX2VmZmVjdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggYmM1YTI1NTM4
YWI0ZmQwY2U4ZDNjODRmNmVhMDQyY2YwMDhjOWNiMi4uODRmNjdjZjY4MTRhNGE4MThmNjQ2N2M0
NGZkNDA1NzUxY2MxMjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9p
ZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBm
aWx0ZXIpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoaW5wdXRFZmZlY3QoMCktPmFic29sdXRl
UGFpbnRSZWN0KCkpOwogfQogCi1ib29sIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBw
bGllcj4gU291cmNlQWxwaGE6OmNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3QKIHsK
LSAgICByZXR1cm4gU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRl
ciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOworICAgIHJldHVybiBGaWx0
ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8U291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXI+KCp0aGlz
KTsKIH0KIAogVGV4dFN0cmVhbSYgU291cmNlQWxwaGE6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAppbmRl
eCBlY2ZiZjEyMjMzM2JiMzBiNmU1NjQ1NTgwZGMwOGI4ZmQ1MWYyMWViLi45M2EyNDM5ZTI4MjI2
NWFmMmZlMWIwZjU5NWU3ODlkMGQwODQyNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCkBAIC0zNSw3ICszNSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0
IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFw
cGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAppbmRleCAxMDZmNTQ0NjU0MDFkOGY0NjY3MDJmYTgwNmM3MzA1ZGQ4ZWZhNjU0Li5mN2Ix
NmU2ZDllZTgwMjA2MzNiZDliM2FiNDE4ZDhmZTJkMWJkZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5j
cHAKQEAgLTQzLDkgKzQzLDE0IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgc2V0QWJzb2x1dGVQYWludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIAotYm9vbCBTb3VyY2VHcmFwaGlj
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCitzdGQ6OnVuaXF1
ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gU291cmNlR3JhcGhpYzo6Y3JlYXRlQXBwbGllcihj
b25zdCBGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKLSAgICByZXR1cm4gU291cmNlR3JhcGhpY1Nv
ZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCB7IH0sICpmaWx0ZXJJbWFnZSgpKTsK
KyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICAvLyBGSVhNRTogcmV0dXJuIFNvdXJjZUdyYXBoaWND
b3JlSW1hZ2VBcHBsaWVyLgorICAgIGlmIChmaWx0ZXIucmVuZGVyaW5nTW9kZSgpID09IFJlbmRl
cmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgor
ICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8U291cmNlR3JhcGhpY1NvZnR3
YXJlQXBwbGllcj4oKnRoaXMpOwogfQogCiBUZXh0U3RyZWFtJiBTb3VyY2VHcmFwaGljOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblR5cGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlR3JhcGhpYy5oCmluZGV4IDUwZjQ3YTFiNjA3OTQxMWIxNzVlYTE3YWJjZWViYjgz
MGM3ODNhNDUuLmU0MmJlNmM0NTRmYzhmMTYxYTlkYWZkNTk1NjYwN2ZkN2RkZTg0ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmls
dGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBv
dmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVB
cHBsaWVyLmNwcAppbmRleCBkM2NiNTVjMjYwYTk4NmJlYzExYmNlNjRjNDI5NmQ5OWM0MjNkZTJi
Li41M2Q1YWZjMGFlM2E1MWJhY2QwMTZkOTZhZjI3MGJlMDg5ZjMwNjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRT
b2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFIQVZFKEFSTV9ORU9OX0lOVFJJTlNJ
Q1MpCi1ib29sIEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCitib29s
IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAg
YXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAgICAgYXV0byYgaW5wdXQyID0gaW5wdXRz
WzFdLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxp
ZXIuaAppbmRleCAxNTAyODUyMDlkNzlmYTc0YTBhMDhjNzU1ODk2NmEyNWMwODBlMDcxLi5mNDQw
ZDgxZTRjZjVkZjY3MmE1YTM3NDBjNTRmZWE5NWIyOTc0MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2Fy
ZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzAsMTIgKzMwLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZFQmxlbmQ7CiAKIGNsYXNzIEZFQmxlbmRTb2Z0d2Fy
ZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQmxlbmQ+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gRmlsdGVyRWZm
ZWN0Q29uY3JldGVBcHBsaWVyPEZFQmxlbmQ+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6
QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VW
ZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBh
cHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0
ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0
d2FyZUFwcGxpZXIuY3BwCmluZGV4IDRmMGUzZmI1NDU5N2UyZDAwMjJmYWRkNzMyNjc2OGM1NTNi
NGJiYjguLjMxNjNhNTZkZTQzNWZmOWJhMmU5Zjg2Mjk2MTZlNTRiNzk2NmM3MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVD
b2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVy
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFQ29sb3JN
YXRyaXhTb2Z0d2FyZUFwcGxpZXI6OkZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIoRkVDb2xv
ck1hdHJpeCYgZWZmZWN0KQorRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6RkVDb2xvck1h
dHJpeFNvZnR3YXJlQXBwbGllcihjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QpCiAgICAgOiBC
YXNlKGVmZmVjdCkKIHsKICAgICBpZiAobV9lZmZlY3QudHlwZSgpID09IEZFQ09MT1JNQVRSSVhf
VFlQRV9TQVRVUkFURSkKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXhTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKSBjb25z
dAogICAgIGFwcGx5UGxhdGZvcm1VbmFjY2VsZXJhdGVkKHBpeGVsQnVmZmVyKTsKIH0KIAotYm9v
bCBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25z
dCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQorYm9vbCBG
RUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBG
aWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAogewog
ICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhT
b2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5oCmluZGV4IGE2NjE5NDUz
YTYwNDUyNDk5YTA0ODYxZDc2NTE2MjQ1NmVkOWQ5M2MuLjczOGQ1MWRjNjc3NmUyMWQ0NDQ1MDVk
NWQ4MzZlYTdiOTI4MzhjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVD
b2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5oCkBAIC0yOSwxMiArMjksMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRkVDb2xvck1hdHJpeDsKIAogY2xhc3MgRkVDb2xvck1hdHJpeFNv
ZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb2xv
ck1hdHJpeD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVzaW5nIEJhc2Ug
PSBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb2xvck1hdHJpeD47CiAKIHB1YmxpYzoK
LSAgICBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyKEZFQ29sb3JNYXRyaXgmKTsKKyAgICBG
RUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyKGNvbnN0IEZFQ29sb3JNYXRyaXgmKTsKIAotICAg
IGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVz
dWx0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBtYXRyaXgo
ZmxvYXQmIHJlZCwgZmxvYXQmIGdyZWVuLCBmbG9hdCYgYmx1ZSwgZmxvYXQmIGFscGhhKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJh
bnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDFiMjVmNzg2NzQ3NDcxMDE0OGM5M2ViZDRm
ZTNlYmZjOTg0NGQyNzUuLjRmNGIzMjAxM2UxYWFiNmVkOWNmYmIwZjAwMmI3YmY0ODY1ZDA2YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRy
YW5zZmVyU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgRkVDb21w
b25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShQaXhlbEJ1ZmZlciYg
cGl4ZWxCdWZmZXIpCiAgICAgfQogfQogCi1ib29sIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2Fy
ZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBp
bnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCitib29sIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9y
JiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgYXV0byYgaW5wdXQg
PSBpbnB1dHNbMF0uZ2V0KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2Fy
ZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oCmluZGV4IGNjOTBiOGM3
NmU5NWY3YTNhZmQxZmMyMTMxOTlmNzg2NzgxZjFkMjcuLjVjMWYzZDk1NzA3ZTZiMDFkODdjOTgy
NTBjMTRlZWFjZjNmMzcxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oCkBAIC0zMCwxMiArMzAsMTMg
QEAgY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlcjsKIHN0cnVjdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uOwogCiBjbGFzcyBGRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyIDogcHVi
bGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUNvbXBvbmVudFRyYW5zZmVyPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVj
dENvbmNyZXRlQXBwbGllcjxGRUNvbXBvbmVudFRyYW5zZmVyPjsKIAogcHVibGljOgogICAgIHVz
aW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwor
ICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgdXNpbmcgTG9va3VwVGFibGUgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmlu
ZGV4IDE1MGEyOGFkNGEzMTBjNWQwN2IyMjQ5MTU2MWQyMDcwODM0NmE3MWUuLjI5MmNlZjdjZjQy
ZWE5ZGEyNTk5OGEwOGNhYWFmMGEyYzkyNTQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFw
cGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAgaW5saW5lIHZvaWQgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm1B
cml0aG1ldGljKHVuc2lnbmVkIGNoYXIqIHMKIH0KICNlbmRpZgogCi1ib29sIEZFQ29tcG9zaXRl
U29mdHdhcmVBcHBsaWVyOjphcHBseUFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0
ZXJJbWFnZSYgaW5wdXQyLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQorYm9vbCBGRUNvbXBvc2l0ZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHlBcml0aG1ldGljKEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVy
SW1hZ2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKIHsKICAgICBhdXRvIGRl
c3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVy
KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5QXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJp
dGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlJiBpbnB1dDIsIEZpbHRlcklt
YWdlJiByZXN1bHQpCitib29sIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseU5vbkFy
aXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJJbWFnZSYgaW5wdXQyLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KSBjb25zdAogewogICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQuaW1h
Z2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpAQCAtMjE2LDcgKzIxNiw3IEBAIGJv
b2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJ
bWFnZSYgaW5wdXQsIEZpbHRlckltCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRkVDb21w
b3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlcklt
YWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCitib29sIEZFQ29tcG9zaXRl
U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZl
Y3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAogewogICAgIGF1dG8mIGlu
cHV0ID0gaW5wdXRzWzBdLmdldCgpOwogICAgIGF1dG8mIGlucHV0MiA9IGlucHV0c1sxXS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxp
ZXIuaAppbmRleCA4NmFlMDJmMjMxYjVhMTJlMWUwMTYyOTk3OTFlYzVkNWFhNDIwYWQ2Li5kNmU2
MTdhMjFmNDk1MmE5Zjg0MjM3MWJkMjJkN2ZmNWMwZGQzYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29m
dHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5oCkBAIC0yOSwxMiArMjks
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRkVDb21wb3NpdGU7CiAKIGNsYXNzIEZF
Q29tcG9zaXRlU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBw
bGllcjxGRUNvbXBvc2l0ZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVz
aW5nIEJhc2UgPSBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb21wb3NpdGU+OwogCiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJ
bWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgdWludDhfdCBjbGFtcEJ5dGUoaW50KTsKQEAgLTQ3LDgg
KzQ4LDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseVBsYXRmb3Jt
QXJpdGhtZXRpYyh1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0
aW9uLCBpbnQgcGl4ZWxBcnJheUxlbmd0aCwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywg
ZmxvYXQgazQpOwogCi0gICAgYm9vbCBhcHBseUFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0
LCBGaWx0ZXJJbWFnZSYgaW5wdXQyLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KTsKLSAgICBib29sIGFw
cGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlJiBpbnB1dDIs
IEZpbHRlckltYWdlJiByZXN1bHQpOworICAgIGJvb2wgYXBwbHlBcml0aG1ldGljKEZpbHRlcklt
YWdlJiBpbnB1dCwgRmlsdGVySW1hZ2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29u
c3Q7CisgICAgYm9vbCBhcHBseU5vbkFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0
ZXJJbWFnZSYgaW5wdXQyLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDZlNWIxYzA1NDdjMzc2OWZi
NzUyNDUyMjdhNWYwM2NjYTQ3MTQ2MmYuLmU2MTQxMjA0ZDA1YmVmMmM1MGFlZDFhMGM5NWJmYWQw
ODk4ZTEwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZv
bHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgRkVD
b252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShQYWludGluZ0RhdGEm
IHBhaW50aW5nRGF0YSkKICAgICAgICAgc2V0T3V0ZXJQaXhlbHMocGFpbnRpbmdEYXRhLCBjbGlw
UmlnaHQsIHBhaW50aW5nRGF0YS50YXJnZXRPZmZzZXQueSgpLCBwYWludGluZ0RhdGEud2lkdGgs
IGNsaXBCb3R0b20pOwogfQogCi1ib29sIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6
OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZp
bHRlckltYWdlJiByZXN1bHQpCitib29sIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6
OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZp
bHRlckltYWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0u
Z2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0
cml4U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggZDFkMTlhNTNmMDAxMGQ3ODY3MWM3MTRiZjNjNWVk
NmY5ZDQwZjA5Ni4uNGU3M2FkOGZkMzQ2NmQwZTRkZDVlMDgzMzRmYTk4ZmRiNmZhN2FhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdh
cmVBcHBsaWVyLmgKQEAgLTMyLDEyICszMiwxMyBAQCBjbGFzcyBGRUNvbnZvbHZlTWF0cml4Owog
ZW51bSBjbGFzcyBFZGdlTW9kZVR5cGU7CiAKIGNsYXNzIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29udm9sdmVN
YXRyaXg+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0g
RmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29udm9sdmVNYXRyaXg+OwogCiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZl
Y3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBzdHJ1Y3QgUGFpbnRpbmdEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXgg
NGVjZDA0OWY1ZDFhMzM0NTQ5MTkzZGRlYzgzNjU0OWQ0MjVlZWI4NC4uYWUwMjZlM2ZiZTU0OGU5
MGYzNzJkNGMzOTY0MTk3ODJkMjNjNWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJl
QXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRURpc3BsYWNlbWVudE1hcFNvZnR3
YXJlQXBwbGllcjo6RkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIoRkVEaXNwbGFjZW1l
bnRNYXAmIGVmZmVjdCkKK0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjpGRURpc3Bs
YWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcihjb25zdCBGRURpc3BsYWNlbWVudE1hcCYgZWZmZWN0
KQogICAgIDogQmFzZShlZmZlY3QpCiB7CiAgICAgQVNTRVJUKG1fZWZmZWN0LnhDaGFubmVsU2Vs
ZWN0b3IoKSAhPSBDSEFOTkVMX1VOS05PV04pOwpAQCAtNDksNyArNDksNyBAQCBpbnQgRkVEaXNw
bGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXI6OnlDaGFubmVsSW5kZXgoKSBjb25zdAogICAgIHJl
dHVybiBtX2VmZmVjdC55Q2hhbm5lbFNlbGVjdG9yKCkgLSAxOwogfQogCi1ib29sIEZFRGlzcGxh
Y2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29u
c3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wg
RkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0
KSBjb25zdAogewogICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwogICAgIGF1dG8m
IGlucHV0MiA9IGlucHV0c1sxXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2Fy
ZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCBiODU3Y2Y4NTg3
ZmUzMjA4YTI5YjZiZTI1ZDFkMzJhYjBjM2EyZTlkLi43NzgyYTM2MWJmZThmODFmMDU2MDQzNTVi
NzMyMDk4MWY1ODYwNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5oCkBAIC0yOSwxMiArMjksMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRkVEaXNwbGFjZW1lbnRNYXA7CiAKIGNsYXNzIEZFRGlz
cGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRl
QXBwbGllcjxGRURpc3BsYWNlbWVudE1hcD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHVzaW5nIEJhc2UgPSBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVEaXNwbGFj
ZW1lbnRNYXA+OwogCiBwdWJsaWM6Ci0gICAgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxp
ZXIoRkVEaXNwbGFjZW1lbnRNYXAmKTsKKyAgICBGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBw
bGllcihjb25zdCBGRURpc3BsYWNlbWVudE1hcCYpOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVz
dWx0KSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldE9mUGl4
ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWduZWQgcm93Qnl0ZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJv
cFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggNzlhM2U3NzIxZDAyYzEzM2JhYWFhNzk2YThmYmVlMGQ2NDhhNjAzYy4uNDExZWI0OGQwYTM4
YTAyMzg1ZmU4NGVmY2Q3YWQ1ODc1NGQ5OWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFw
cGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRkVEcm9wU2hhZG93U29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wgRkVEcm9wU2hhZG93U29mdHdhcmVB
cHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKIHsKICAgICBhdXRvJiBpbnB1
dCA9IGlucHV0c1swXS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVE
cm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggYjRhODkzYjNkYTc5MGM0NmJiOGZjZTY2
MmFmZjdjMzRiZjA4NzUyNi4uMTY1ZTNhZWUzNGU0ZTIwOThmYTI4MDcxMTQ4MTc4NDJkMDA5ZTE0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJl
QXBwbGllci5oCkBAIC0yNywxMiArMjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RkVEcm9wU2hhZG93OwogCiBjbGFzcyBGRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFRHJvcFNoYWRvdz4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVzaW5nIEJhc2UgPSBGaWx0ZXJFZmZlY3RDb25jcmV0
ZUFwcGxpZXI8RkVEcm9wU2hhZG93PjsKIAogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7
CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9y
JiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHko
Y29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1h
Z2UmIHJlc3VsdCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUZsb29kU29mdHdhcmVBcHBsaWVyLmNwcApp
bmRleCAzMWRhOGI0MDUyY2JiZGNiMWExMGI0OTgzNWI2MjVjZDAwNjMxNmZlLi4yNmIyNDg2MzMz
MjYxZmVlYzk4NzkzYmRlMjhlZWU5YWQ1MmU0ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkKK2Jvb2wgRkVGbG9vZFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29u
c3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAogewogICAg
IGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQuaW1hZ2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3Vs
dEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUZsb29kU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIu
aAppbmRleCAyY2NhMDVkZDZmNWI4NmYxY2MzZGFlNmMxMTU4NWJhOWE4OTA4ODhlLi4yYTg5ZDdl
Mjg3MTFjN2RkMThhMjMxMTM2NjJkNzE1ZGQ5YjI3OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFw
cGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMjksMTIgKzI5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZFRmxvb2Q7CiAKIGNsYXNzIEZFRmxvb2RTb2Z0d2FyZUFw
cGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFRmxvb2Q+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gRmlsdGVyRWZmZWN0
Q29uY3JldGVBcHBsaWVyPEZFRmxvb2Q+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBs
eShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3
YXJlQXBwbGllci5jcHAKaW5kZXggZGIxOTZiYmIwNTJjZTg5YzQ5MDFkYjE0OTJlZTFjMTEwMTA4
NDA5OC4uZjM3NTQ4NGM2MmQ2MzQwMGUyODM1NTMzMzNkNDkxMmRjOGVhZmIzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdh
dXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGll
ci5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3
YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShVaW50OENsYW1wZWRBcnJheSYgaW9CdQogICAgIGJv
eEJsdXJHZW5lcmljKGlvQnVmZmVyLCB0bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplWCwga2VybmVs
U2l6ZVksIHBhaW50U2l6ZSwgaXNBbHBoYUltYWdlLCBlZGdlTW9kZSk7CiB9CiAKLWJvb2wgRkVH
YXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBj
b25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQorYm9v
bCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQp
IGNvbnN0CiB7CiAgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVH
YXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuaApp
bmRleCA0YTg3ZWU0ZDQ2NTg0MDZkYmFhNzk0YTA4Y2VmODE1OWYxNzQ5NTFjLi45MDgxYzVjZmY0
ZmY2ZjUzYzYxM2JiMGFkOGU1ZDMzMTFlMjRmYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdh
cmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5oCkBAIC0zMSwxMiArMzEs
MTMgQEAgY2xhc3MgRkVHYXVzc2lhbkJsdXI7CiBlbnVtIGNsYXNzIEVkZ2VNb2RlVHlwZTsKIAog
Y2xhc3MgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
Q29uY3JldGVBcHBsaWVyPEZFR2F1c3NpYW5CbHVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUdh
dXNzaWFuQmx1cj47CiAKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9v
bCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBG
aWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRl
ciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBcHBseVBhcmFtZXRlcnMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGll
ci5jcHAKaW5kZXggODgwYTIxMmI5ZjJlOWUxMTkxNmNhMDQ1MDA5MGEyYTA2NDk0Njk3Yi4uY2Uw
YWNiODExNzdhYzM3OTc0ZGUzNGQ0ZGE3NzFiYWU1OTNkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29m
dHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zOTEsNyAr
MzkxLDcgQEAgdm9pZCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKGNv
bnN0IExpZ2h0aW5nRGF0YSYgZGF0YSkKICAgICB9CiB9CiAKLWJvb2wgRkVMaWdodGluZ1NvZnR3
YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wgRkVMaWdodGluZ1NvZnR3YXJlQXBw
bGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKIHsKICAgICBhdXRvJiBpbnB1dCA9IGlucHV0
c1swXS5nZXQoKTsKIApAQCAtNDE4LDcgKzQxOCw2IEBAIGJvb2wgRkVMaWdodGluZ1NvZnR3YXJl
QXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
CiAKICAgICBMaWdodGluZ0RhdGEgZGF0YTsKICAgICBkYXRhLmVmZmVjdCA9ICZtX2VmZmVjdDsK
LSAgICBkYXRhLmZpbHRlclR5cGUgPSBtX2VmZmVjdC5maWx0ZXJUeXBlKCk7CiAgICAgZGF0YS5s
aWdodGluZ0NvbG9yID0gbV9lZmZlY3QubGlnaHRpbmdDb2xvcigpOwogICAgIGRhdGEuc3VyZmFj
ZVNjYWxlID0gbV9lZmZlY3Quc3VyZmFjZVNjYWxlKCkgLyAyNTUuMGY7CiAgICAgZGF0YS5kaWZm
dXNlQ29uc3RhbnQgPSBtX2VmZmVjdC5kaWZmdXNlQ29uc3RhbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGlu
Z1NvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggM2MzNzI0ZWRj
YWZiZjY3MGQzMDBkYjhkZjFmN2FiMGMwMDQ4OWRkMS4uNGNmNWIzMTYxMzAxMzhiYmY2ZmNjZjk4
MjM2YWYzZmZkYmQ2NjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0
aW5nU29mdHdhcmVBcHBsaWVyLmgKQEAgLTM2LDEyICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGRUxpZ2h0aW5nOwogCiBjbGFzcyBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVy
IDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUxpZ2h0aW5nPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENv
bmNyZXRlQXBwbGllcjxGRUxpZ2h0aW5nPjsKIAogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJh
c2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVj
dG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOworICAgIGJvb2wgYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVy
SW1hZ2UmIHJlc3VsdCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgY1BpeGVsU2l6ZSA9IDQ7CkBAIC05MCw4ICs5MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBzdHJ1Y3QgTGlnaHRpbmdEYXRhIHsKICAgICAgICAgLy8gVGhpcyBzdHJ1Y3R1cmUgY29u
dGFpbnMgb25seSByZWFkLW9ubHkgKFNNUCBzYWZlKSBkYXRhCi0gICAgICAgIEZFTGlnaHRpbmcq
IGVmZmVjdDsKLSAgICAgICAgRmlsdGVyRWZmZWN0OjpUeXBlIGZpbHRlclR5cGU7CisgICAgICAg
IGNvbnN0IEZFTGlnaHRpbmcqIGVmZmVjdDsKICAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcjsK
ICAgICAgICAgZmxvYXQgc3VyZmFjZVNjYWxlOwogICAgICAgICBmbG9hdCBkaWZmdXNlQ29uc3Rh
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmNw
cAppbmRleCAyM2IxZmJkNDQ2ZjVkZDdmZGJjMTNiYzMxZDJmZmUyNWVkMjIzYzdhLi44NzY3MWI4
MDVkMGQ2NzA0NjAxZTVkODJjODA1NzlhMWU2YWIwMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFw
cGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpCitib29sIEZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZp
bHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1
bHQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlucHV0cy5zaXplKCkgPT0gbV9lZmZlY3QubnVtYmVy
T2ZFZmZlY3RJbnB1dHMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29m
dHdhcmVBcHBsaWVyLmgKaW5kZXggMWIzMGFiYTY5YjUzYjAwOTc5NzIxYmU5ZDFhODkxMzZmYTcx
OWVlMC4uNTlkNmFmOTU0ZTk4ZDc2NmI2NWI1NDkxMzIyYmZkZGM5ZWU4YzI3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1l
cmdlU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmgKQEAgLTI5LDEyICsy
OSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGRU1lcmdlOwogCiBjbGFzcyBGRU1l
cmdlU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxG
RU1lcmdlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9
IEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRU1lcmdlPjsKIAogcHVibGljOgogICAgIHVz
aW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwor
ICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhv
bG9neVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYjQwNTQxMWNhZTk1ZjQzYTUzZDBjYjhlN2Q2
YWI1OGI5ZGE0N2Y1Ny4uMDkxMWNjMDA0YzFjMzk4NGI4MGVhODE3N2U4NjdhNjViYjhjNzIwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVB
cHBsaWVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRkVNb3JwaG9sb2d5U29mdHdhcmVB
cHBsaWVyOjphcHBseVBsYXRmb3JtKGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhCiAg
ICAgYXBwbHlQbGF0Zm9ybUdlbmVyaWMocGFpbnRpbmdEYXRhLCAwLCBwYWludGluZ0RhdGEuaGVp
Z2h0KTsKIH0KIAotYm9vbCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KQorYm9vbCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0
ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAogewogICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdl
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2Fy
ZUFwcGxpZXIuaAppbmRleCBmMTNiYmIxN2U3NzM3OGQyMDYyMWRmYTQ4NWZjNzdlYTJhMTZhYWQx
Li43OWY5ODIwZDdhMDI3YTA3MmE1Y2M1MTczMWI4ZmI5YmYwMTg0MzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhv
bG9neVNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyLmgKQEAgLTMz
LDEyICszMywxMyBAQCBjbGFzcyBGRU1vcnBob2xvZ3k7CiBlbnVtIGNsYXNzIE1vcnBob2xvZ3lP
cGVyYXRvclR5cGU7CiAKIGNsYXNzIEZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllciA6IHB1Ymxp
YyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVNb3JwaG9sb2d5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENvbmNyZXRl
QXBwbGllcjxGRU1vcnBob2xvZ3k+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsK
IAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShj
b25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFn
ZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB1c2luZyBDb2x1bW5F
eHRyZW1hID0gVmVjdG9yPENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiwgMTY+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RU9mZnNldFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCAw
MWU4ZjRlNWI4OTU5MzhjMTI1YjU3ODYyNmE0YjI1NTk4ODU0MzNkLi5jZjJkY2VkNDk3ZDY4Mjk4
MWE4YTQyYjhjN2VlODZlMjAwNTI2NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWJvb2wgRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KQorYm9vbCBGRU9mZnNldFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuaApp
bmRleCBjMzQ1YjcyMjk2YjUxNTUyYTVjZTg3MDI4MzNmYjRmMGU0YWIxOTU2Li42NWFlZWM5YzJl
NWUyY2VlN2U3MDNjYzMyYTNjZGYzOTE0Y2IxNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBs
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGllci5oCkBAIC0yOSwxMiArMjksMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRkVPZmZzZXQ7CiAKIGNsYXNzIEZFT2Zmc2V0U29mdHdhcmVB
cHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRU9mZnNldD4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVzaW5nIEJhc2UgPSBGaWx0ZXJFZmZl
Y3RDb25jcmV0ZUFwcGxpZXI8RkVPZmZzZXQ+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6
QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VW
ZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBh
cHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0
ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNw
cAppbmRleCA1MTgyZGY1MWM1Yzk0YjY0MDQ5ZWZkODY1OGMwNWY1OGVjNTM0ZWIzLi44ZmE3YTM5
M2MzY2UzNjY0OTMyZWVkMTI4ZDUxMmM0NzlmNGI1YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBw
bGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0
ZXJJbWFnZSYgcmVzdWx0KQorYm9vbCBGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KSBjb25zdAogewogICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuaAppbmRl
eCA0YTVjYzIxZTcyNmU4MTg0MThmYTkzZWQ1ODhmZTBiNzYwOGI5YWU2Li42NzVhMjlmYjNiMmNj
YjBiZWMyMWVhZGI5NGMyZjA2OTQzZTk5ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
RkVUaWxlU29mdHdhcmVBcHBsaWVyLmgKQEAgLTI5LDEyICsyOSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBGRVRpbGU7CiAKIGNsYXNzIEZFVGlsZVNvZnR3YXJlQXBwbGllciA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVUaWxlPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENvbmNyZXRlQXBw
bGllcjxGRVRpbGU+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJv
b2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywg
RmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0
ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0
KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVU
dXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcApp
bmRleCBlMjdiZDNkNTE3ZTYzNTMyOTY1MTEwNDFjNWFkZDYxZGVjMTg4ODkwLi42ZDY1MDY0NWE3
NWNhMWFkMmY1Nzc2MDMzZDE0ZWU2YTM5M2ZjZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJl
QXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zMzksNyArMzM5
LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oY29u
c3QgSW50UmVjdCYgZmlsdGVyUmVnaW9uLCBjb24KICAgICBhcHBseVBsYXRmb3JtR2VuZXJpYyhm
aWx0ZXJSZWdpb24sIGZpbHRlclNjYWxlLCBwaXhlbEFycmF5LCBwYWludGluZ0RhdGEsIHN0aXRj
aERhdGEsIDAsIGhlaWdodCk7CiB9CiAKLWJvb2wgRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVy
OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBG
aWx0ZXJJbWFnZSYgcmVzdWx0KQorYm9vbCBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIEZpbHRl
ckltYWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVy
ID0gcmVzdWx0LnBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVu
Y2VTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggYTUyZTdj
NTAzMmFmOTQxYjdlMDc3ZmU3ZTg2MjE1OGE2NmQwMWVkYy4uMjNjYmNjOTI4YzE4ZWRmMDZjNGQ3
MThhOTM4NGM5ZjdmMWFjOGM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
VHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllci5oCkBAIC0zNiwxMiArMzYsMTMgQEAgY2xhc3MgRkVU
dXJidWxlbmNlOwogZW51bSBjbGFzcyBUdXJidWxlbmNlVHlwZTsKIAogY2xhc3MgRkVUdXJidWxl
bmNlU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxG
RVR1cmJ1bGVuY2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBC
YXNlID0gRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFVHVyYnVsZW5jZT47CiAKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBv
dmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdl
VmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIC8vIFByb2R1Y2VzIHJlc3VsdHMgaW4gdGhlIHJhbmdlIFsxLCAyKiozMSAt
IDJdLiBBbGdvcml0aG0gaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNl
QWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDUwMjUxOTU4MzI2ZThmOWM0NTU5NGIwOGQ0
ZjEwNjUyMWY2NDcwYjYuLjVlMzkyZTRjMThmZGEzMzdkMDNjMzRmMzk0YmI2M2Q1ZDEzNmUyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFw
cGxpZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9v
bCBTb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3Qg
RmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wgU291
cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0CiB7CiAgICAg
YXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2Fy
ZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCA3NDhmZjdlODZlMzgwOTEz
NDhjNjA5ZjllNjhkMmRkZThjNTM0NjY2Li40NjRlNzhmZjljNmNjNjZiMDNhMDY2ZTYyMTVhYzI3
YjBhZjNkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNv
ZnR3YXJlQXBwbGllci5oCkBAIC0yNywxMiArMjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU291cmNlQWxwaGE7CiAKIGNsYXNzIFNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyIDog
cHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxTb3VyY2VBbHBoYT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVzaW5nIEJhc2UgPSBGaWx0ZXJFZmZlY3RDb25j
cmV0ZUFwcGxpZXI8U291cmNlQWxwaGE+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBs
eShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCmluZGV4IDdiNWQ4MDRiODFkZDNiZWMwOWQ0NzEwNTFhODk4ZWJjYjcxYzlj
MWIuLjYzYWQ4YmNkZTAxYWRlNzhlMDcyM2Y5MWY3NTA0ZTkyZmVkZGQyMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNl
R3JhcGhpY1NvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmNw
cApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU291cmNl
R3JhcGhpY1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IEZpbHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wgU291cmNlR3Jh
cGhpY1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKIHsKICAgICBhdXRv
IHJlc3VsdEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgYXV0byBzb3VyY2VJbWFn
ZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBs
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCAwNzE2OWNjYTcxNDlmOTE3MTVk
MTdlMjk1MDE1YTQ3YzY3MWVhZjdmLi5iNzA2ZmNjMGMwNjIyYmQyNjAwY2Y4NzlkNjQ3MDRhN2Ni
MDZlZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNT
b2Z0d2FyZUFwcGxpZXIuaApAQCAtMjgsMTIgKzI4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNvdXJjZUdyYXBoaWM7CiAKIGNsYXNzIFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxp
ZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPFNvdXJjZUdyYXBoaWM+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gRmlsdGVyRWZm
ZWN0Q29uY3JldGVBcHBsaWVyPFNvdXJjZUdyYXBoaWM+OwogCiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVy
SW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRz
LCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAKaW5kZXggZWFhZDM4MjRlMDA3OTlkYjIzYTZkYzRjMmU0OTY4YmEzODVl
ZGJhNy4uOGE0OWNmOWQyNzQ1MWY5YzkwNjYwNDNlYjZmMDExNTg1NTY3MzdiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAg
LTc3LDE1ICs3NywxNiBAQCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY2xhc3MgRkVJbWFn
ZVNvZnR3YXJlQXBwbGllciB0byBzZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlciBmaWxlcy4KIGNs
YXNzIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVB
cHBsaWVyPEZFSW1hZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2lu
ZyBCYXNlID0gRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFSW1hZ2U+OwogCiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZl
Y3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKIH07CiAK
LWJvb2wgRkVJbWFnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKK2Jvb2wgRkVJ
bWFnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKIHsKICAgICBhdXRv
IHJlc3VsdEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgaWYgKCFyZXN1bHRJbWFn
ZSkKQEAgLTExNSw5ICsxMTYsOSBAQCBib29sIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvcgogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImIGZpbHRlcikKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUlt
YWdlOjpjcmVhdGVBcHBsaWVyKGNvbnN0IEZpbHRlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZF
SW1hZ2VTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgeyB9LCAqZmlsdGVySW1h
Z2UoKSk7CisgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZTxGRUltYWdlU29m
dHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CiAKIFRleHRTdHJlYW0mIEZFSW1hZ2U6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNl
bnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuaAppbmRleCAzNzU1N2E5NmRjYWJlMGY4MDAyNWIwODBhZTcxNzI3MzJjMmEy
YTVjLi42YzlhZTc5MDQ4YTFkZjIxZTA3MTM1MDhlMDRhMGRkYzdjMzllZGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShSZWY8SW1h
Z2U+JiYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogICAgIHN0YXRpYyBS
ZWY8RkVJbWFnZT4gY3JlYXRlKFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKIAotICAgIFNv
dXJjZUltYWdlJiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2U7IH0KKyAgICBj
b25zdCBTb3VyY2VJbWFnZSYgc291cmNlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlt
YWdlOyB9CiAgICAgdm9pZCBzZXRJbWFnZVNvdXJjZShTb3VyY2VJbWFnZSYmIHNvdXJjZUltYWdl
KSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogCiAgICAgRmxvYXRS
ZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2VSZWN0OyB9
CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIGZpbmFsOwogCi0gICAgYm9vbCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoY29uc3QgRmlsdGVyJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRl
ckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3QgZmluYWw7
CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0
U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBmaW5hbDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>