<?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>217842</bug_id>
          
          <creation_ts>2020-10-16 14:22:29 -0700</creation_ts>
          <short_desc>Support accelerated animation of individual transform CSS properties</short_desc>
          <delta_ts>2021-01-27 12:04: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>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221054</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1698746</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 14:22:29 -0700</bug_when>
    <thetext>Support accelerated animation of individual transform CSS properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698747</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-16 14:23:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/70391914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698753</commentid>
    <comment_count>2</comment_count>
      <attachid>411617</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 14:50:17 -0700</bug_when>
    <thetext>Created attachment 411617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698754</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 14:50:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/70391914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698773</commentid>
    <comment_count>4</comment_count>
      <attachid>411617</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-10-16 15:10:11 -0700</bug_when>
    <thetext>Comment on attachment 411617
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2893
&gt; +        animation.m_beginTime = Seconds::fromNanoseconds(1);

Why not zero? not that it matters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698775</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 15:11:17 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #4)
&gt; Comment on attachment 411617 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411617&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2893
&gt; &gt; +        animation.m_beginTime = Seconds::fromNanoseconds(1);
&gt; 
&gt; Why not zero? not that it matters

Because the CA API gives special meaning to zero in this context, using the current time when the CA transaction occur. We need this time to be as early as possible explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698799</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 15:44:03 -0700</bug_when>
    <thetext>Committed r268615: &lt;https://trac.webkit.org/changeset/268615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698839</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-10-16 17:44:29 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #6)
&gt; Committed r268615: &lt;https://trac.webkit.org/changeset/268615&gt;
As indicated by EWS, these tests are failing on Mojave bots now that the change landed:

webanimations/accelerated-transform-related-animation-property-order.html
webanimations/accelerated-translate-animation-additional-animation-added-in-flight.html
webanimations/accelerated-translate-animation-underlying-transform-changed-in-flight.html
webanimations/accelerated-translate-animation-with-transform.html
webanimations/accelerated-translate-animation.html

https://build.webkit.org/results/Apple-Mojave-Release-WK2-Tests/r268619%20(16992)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698858</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-10-16 19:12:00 -0700</bug_when>
    <thetext>Updated Test Expectations to skip these tests on Mojave.

r268627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698863</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-10-16 19:20:05 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #8)
&gt; Updated Test Expectations to skip these tests on Mojave.
&gt; 
&gt; r268627
Thanks! These are image failures, so we’ll need to switch this from Failure to ImageOnlyFailure. I can fix it up later tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698868</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-16 19:55:31 -0700</bug_when>
    <thetext>Why is it OK to break Mojave? That suggests the patch is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698870</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-16 20:00:44 -0700</bug_when>
    <thetext>Like maybe this breaks the !HAVE_CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698915</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-16 22:18:15 -0700</bug_when>
    <thetext>Most likely, I’ll install Mojave and fix those ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698974</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-17 11:03:31 -0700</bug_when>
    <thetext>Also Windows is broken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411617</attachid>
            <date>2020-10-16 14:50:17 -0700</date>
            <delta_ts>2020-10-16 16:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217842-20201016235016.patch</filename>
            <type>text/plain</type>
            <size>57775</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1YjI5NTBhZTVmNmUz
MzAzYzdhNWU1ZGM0MWZlODRmZWU2NTg2OS4uZjViNjk2MTBmN2M1NDVhYzJjMmE0MTc0NmMxM2U1
Y2U4NTFlNmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTEwLTE2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFN1cHBvcnQgYWNjZWxl
cmF0ZWQgYW5pbWF0aW9uIG9mIGluZGl2aWR1YWwgdHJhbnNmb3JtIENTUyBwcm9wZXJ0aWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4NDIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMzkxOTE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIHN1cHBvcnQgYWNjZWxlcmF0ZWQg
YW5pbWF0aW9uIG9mIGluZGl2aWR1YWwgdHJhbnNmb3JtIENTUyBwcm9wZXJ0aWVzLCB3ZSBtYWtl
IGEgbGlzdCBvZiB0aGUKKyAgICAgICAgdmFyaW91cyBhbmltYXRpb25zIHRhcmdldGluZyBhbmlt
YXRpb24tcmVsYXRlZCBwcm9wZXJ0aWVzIGluIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0
aW9ucygpIGFuZCBhcHBseQorICAgICAgICBhbiBhbmltYXRpb24gZm9yIGVhY2ggb2YgdGhvc2Ug
cHJvcGVydGllcyBpbiB0aGVpciBleHBlY3RlZCBhcHBsaWNhdGlvbiBvcmRlciDigJMgdHJhbnNs
YXRlLCBzY2FsZSwgcm90YXRlIGFuZAorICAgICAgICB0aGVuIHRyYW5zZm9ybSDigJMgdXNpbmcg
Q29yZSBBbmltYXRpb24ncyBhZGRpdGl2ZSBhbmltYXRpb24gbW9kZS4KKworICAgICAgICBXaGVu
IG9uZSBvZiB0aG9zZSBwcm9wZXJ0aWVzIGRvZXMgbm90IGhhdmUgYW4gYW5pbWF0aW9uLCB3ZSBj
cmVhdGUgYSBub24taW50ZXJwb2xhdGluZyBiYXNlIHRyYW5zZm9ybSB2YWx1ZQorICAgICAgICBh
bmltYXRpb24gc2V0IHdpdGggYm90aCBmcm9tIGFuZCB0byB2YWx1ZXMgbWF0Y2hpbmcgdGhlIHZh
bHVlIHNldCBpbiBDU1MgZm9yIHRoaXMgcGFydGljdWxhciBwcm9wZXJ0eS4gV2UgdXNlCisgICAg
ICAgIGEgbmV3IHRyYW5zZm9ybU1hdHJpeEZvclByb3BlcnR5KCkgbWV0aG9kIG9uIHRoZSBHcmFw
aGljc0xheWVyQ2xpZW50IHRvIG9idGFpbiB0aGlzIHZhbHVlLgorCisgICAgICAgIFdlIGFsc28g
YWRkIGEgbm9uLWFkZGl0aXZlLCBub24taW50ZXJwb2xhdGluZyBpZGVudGl0eSB0cmFuc2Zvcm0g
Zmlyc3QgdG8gbWFrZSBzdXJlIGFsbCB0aGUgYWRkaXRpdmUgYW5pbWF0aW9ucworICAgICAgICBi
dWlsZCBvbiB0b3Agb2YgYSBuZXV0cmFsIHRyYW5zZm9ybSBhbmQgbm90IHRoZSB1bmRlcmx5aW5n
IHZhbHVlIGFwcGxpZWQgdG8gdGhlIGxheWVyLgorCisgICAgICAgIEZpbmFsbHksIHdoZW4gR3Jh
cGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm0oKSBpcyB1cGRhdGVkLCB3ZSB1cGRhdGUgdGhlIGFu
aW1hdGlvbnMgdG8gZW5zdXJlIHRoYXQgYW55IGJhc2UKKyAgICAgICAgdHJhbnNmb3JtIHZhbHVl
IGFuaW1hdGlvbiBpcyB1cGRhdGVkIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBD
U1MgcHJvcGVydGllcyBjb250cmlidXRpbmcgdG8gdGhlCisgICAgICAgIGNvbXBvdW5kIGxheWVy
IHRyYW5zZm9ybS4KKworICAgICAgICBUZXN0czogd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10
cmFuc2Zvcm0tcmVsYXRlZC1hbmltYXRpb24tcHJvcGVydHktb3JkZXIuaHRtbAorICAgICAgICAg
ICAgICAgd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLWFkZGl0
aW9uYWwtYW5pbWF0aW9uLWFkZGVkLWluLWZsaWdodC5odG1sCisgICAgICAgICAgICAgICB3ZWJh
bmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24tdW5kZXJseWluZy10cmFu
c2Zvcm0tY2hhbmdlZC1pbi1mbGlnaHQuaHRtbAorICAgICAgICAgICAgICAgd2ViYW5pbWF0aW9u
cy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLXdpdGgtdHJhbnNmb3JtLmh0bWwKKyAg
ICAgICAgICAgICAgIHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlv
bi5odG1sCisKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOiBB
ZGQgdGhlIG5lY2Vzc2FyeSBhbmltYXRpb25Jc0FjY2VsZXJhdGVkKCkgb3ZlcnJpZGVzIGZvciBl
YWNoIG9mIHRoZQorICAgICAgICBpbmRpdmlkdWFsIENTUyB0cmFuc2Zvcm0gcHJvcGVydHkgYW5p
bWF0aW9uIHdyYXBwZXJzIHRvIGluZGljYXRlIHRoYXQgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBh
cmUgc3VwcG9ydGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zvcm1P
cGVyYXRpb25zKTogVXBkYXRlIHRoZSBBU1NFUlQgdG8gY2hlY2sgdGhhdCB0aGUgYW5pbWF0ZWQg
cHJvcGVydHkKKyAgICAgICAgaXMgYW55IG9mIHRoZSB0cmFuc2Zvcm0tcmVsYXRlZCBwcm9wZXJ0
aWVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZSk6IEFkZCBhIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgc2luZ2xlIFRyYW5zZm9y
bU9wZXJhdGlvbioKKyAgICAgICAgdmFsdWUgYXMgaW5wdXQgaW5zdGVhZCBvZiBhIFRyYW5zZm9y
bU9wZXJhdGlvbnMmIHNvIHRoYXQgdGhlIHZhbHVlcyBjb21pbmcgZnJvbSB0aGUgaW5kaXZpZHVh
bCBDU1MgdHJhbnNmb3JtIHByb3BlcnRpZXMKKyAgICAgICAgY2FuIGJlIHVzZWQgdG8gY3JlYXRl
IGEgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgaW4gUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFu
aW1hdGlvbigpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGll
bnQuaDogQWRkIHRoZSBuZXcgYW5pbWF0ZWQgcHJvcGVydHkgaWRlbnRpZmllcnMgZm9yIHRoZSBp
bmRpdmlkdWFsIENTUyB0cmFuc2Zvcm0gcHJvcGVydGllcy4KKyAgICAgICAgKFdlYkNvcmU6OmFu
aW1hdGVkUHJvcGVydHlJc1RyYW5zZm9ybU9yUmVsYXRlZCk6IEFkZCBhIG5ldyB1dGlsaXR5IHRv
IGlkZW50aWZ5IGFueSBvZiB0aGUgdHJhbnNmb3JtLXJlbGF0ZWQgYW5pbWF0ZWQgcHJvcGVydHkK
KyAgICAgICAgaWRlbnRpZmllcnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xp
ZW50Ojp0cmFuc2Zvcm1NYXRyaXhGb3JQcm9wZXJ0eSBjb25zdCk6IE5ldyBtZXRob2QgY2FsbGVk
IGZyb20gR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKKyAgICAgICAgdG8gcXVl
cnkgdGhlIGNsaWVudCwgc3VjaCBhcyBSZW5kZXJMYXllckJhY2tpbmcsIGZvciB0aGUgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVwcmVzZW50aW5nIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5IHZhbHVlIHRv
IGJlCisgICAgICAgIHVzZWQgZm9yIGJhc2UgdHJhbnNmb3JtIHZhbHVlIG5vbi1pbnRlcnBvbGF0
aW5nIGFuaW1hdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3BlcnR5SWRUb1N0cmluZyk6IEFjY291
bnQgZm9yIHRoZSBuZXcgYW5pbWF0ZWQgcHJvcGVydHkgaWRlbnRpZmllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybSk6IElmIHdlIGFyZSBjdXJyZW50
bHkgcnVubmluZyBhIHRyYW5zZm9ybS1yZWxhdGVkIGFuaW1hdGlvbiwgYSBjaGFuZ2UgaW4gdW5k
ZXJseWluZworICAgICAgICB0cmFuc2Zvcm0gdmFsdWUgbWVhbnMgd2UgbXVzdCByZS1ldmFsdWF0
ZSBhbGwgdHJhbnNmb3JtLXJlbGF0ZWQgYW5pbWF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgYmFz
ZSB2YWx1ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucworICAgICAgICBhcmUgY3VycmVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24pOiAKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6IFdoZW4gdXBkYXRp
bmcgYW5pbWF0aW9ucywga2VlcCB0cmFjayBvZiB0aGUgbW9zdCByZWNlbnQgYW5pbWF0aW9uIGFw
cGxpY2FibGUgdG8gZWFjaAorICAgICAgICBpbmRpdmlkdWFsIENTUyB0cmFuc2Zvcm0gcHJvcGVy
dHkgYW5kIHRoZSBsaXN0IG9mIGFuaW1hdGlvbnMgdGFyZ2V0aW5nIHRoZSB0cmFuc2Zvcm0gQ1NT
IHByb3BlcnR5LiBUaGVuLCBlbnN1cmUgdGhvc2UgYW5pbWF0aW9ucworICAgICAgICBhcmUgYXBw
bGllZCBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyIOKAkyB0cmFuc2xhdGUsIHNjYWxlLCByb3RhdGUg
YW5kIHRyYW5zZm9ybSDigJMgYnkgYWRkaW5nIHRob3NlIGFuaW1hdGlvbnMgYXMgYWRkaXRpdmUg
Q0EgYW5pbWF0aW9ucworICAgICAgICB3aXRoIG5vbi1pbnRlcnBvbGF0aW5nIGJhc2UgdHJhbnNm
b3JtIHZhbHVlIGFuaW1hdGlvbnMgZm9yIGVhY2ggcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBoYXZl
IGEgc3BlY2lmaWVkIGludGVycG9sYXRpbmcgYW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjppc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24gY29uc3QpOiBFbnN1
cmUgd2UgYWxzbyBjb25zaWRlciBwYXVzZWQgYW5pbWF0aW9ucyBhcyAicnVubmluZyIgYW5pbWF0
aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1p
dHRlZEFuaW1hdGlvbnMpOiBXaGV0aGVyIGEgdHJhbnNmb3JtIGFuaW1hdGlvbiBuZWVkcyB0byBi
ZSBydW4gdXNpbmcgdGhlIGFkZGl0aXZlIG1vZGUKKyAgICAgICAgaXMgbm93IGRldGVybWluZWQg
aW4gdXBkYXRlQW5pbWF0aW9ucygpIHNvIHdlIHJlbW92ZSBhbGwgY29kZSByZWxhdGVkIHRvIHdv
cmtpbmcgb3V0IHdoZXRoZXIgYW5pbWF0aW9ucyBvdWdodCB0byBiZSBhZGRpdGl2ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zy
b21LZXlmcmFtZXMpOiBXZSBmb3JjZSB0aGUgY3JlYXRpb24gb2YgQ0FUcmFuc2Zvcm0zRCB2YWx1
ZXMgZm9yIGluZGl2aWR1YWwKKyAgICAgICAgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHNpbmNl
IG9ubHkgdGhpcyBtb2RlIGd1YXJhbnRlZXMgdGhhdCBhZGRpdGl2aXR5IG9mIHN1Y2ggYW5pbWF0
aW9ucyB3aWxsIHlpZWxkIHRoZSBleHBlY3RlZCByZXN1bHQgd2hlcmUKKyAgICAgICAgdGhlIHRy
YW5zZm9ybXMgYXJlIG11bHRpcGxpZWQgcmF0aGVyIHRoYW4gc2ltcGx5IGFkZGluZyBmbG9hdCB2
YWx1ZXMgb2YgaW5kaXZpZHVhbCBjb21wb25lbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dEFuaW1hdGlvbik6IEVuc3VyZSB3ZSBzdGFydCBhbmltYXRpb25zIGZvciB0aGUgaW5kaXZpZHVh
bCBDU1MgdHJhbnNmb3JtIHByb3BlcnRpZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmdyYXBoaWNzTGF5ZXJUb0NTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6Y3NzVG9HcmFwaGljc0xheWVyUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp0cmFuc2Zvcm1NYXRyaXhGb3JQcm9wZXJ0
eSBjb25zdCk6IEltcGxlbWVudCB0aGUgbmV3IEdyYXBoaWNzTGF5ZXJDbGllbnQgbWV0aG9kIHRv
IHByb3ZpZGUgYQorICAgICAgICBtYXRyaXggdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHZhbHVlIGZv
ciBub24taW50ZXJwb2xhdGluZyBiYXNlIHZhbHVlIHRyYW5zZm9ybSBhbmltYXRpb25zIGluIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCisgICAgICAgIGZvciBhbnkgb2YgdGhl
IHRyYW5zZm9ybS1yZWxhdGVkIENTUyBwcm9wZXJ0aWVzLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbiBjb25zdCk6IEVuc3VyZSB0aGF0IGFuIGFuaW1h
dGlvbiBmb3IgYW55IG9mIHRoZSB0cmFuc2Zvcm0tcmVsYXRlZAorICAgICAgICBDU1MgcHJvcGVy
dGllcyB5aWVsZHMgY29tcG9zaXRpb24gb2YgdGhlIHRhcmdldCBsYXllci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9u
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlUcmlnZ2Vyc0NvbXBvc2l0aW5nT25Cb3hlc09ubHkp
OiBFbnN1cmUgdGhhdCBzZXR0aW5nIHRoZSB3aWxsLWNoYW5nZSBDU1MgcHJvcGVydHkgdG8gYW55
IG9mIHRoZSB0cmFuc2Zvcm0tcmVsYXRlZAorICAgICAgICBDU1MgcHJvcGVydGllcyB5aWVsZHMg
Y29tcG9zaXRpb24gb2YgdGhlIHRhcmdldC4KKwogMjAyMC0xMC0xNSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGluZyBhbiBpbmRpdmlkdWFsIHRy
YW5zZm9ybSBDU1MgcHJvcGVydHkgaGFzIG5vIHZpc3VhbCBjaGFuZ2Ugd2hlbiBjb21wb3NpdGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAppbmRleCAzZTA3NDdmNjRhMTQwMzE5Nzk4ZDFkYzZiZDNjMWM3MjI1ZjRmMzIyLi42NzM4ZTIy
M2RhMTZkMTg5ZDIzNzBlMmI2Mzc4MDE1NWM5ZTZjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTg1MCw2ICs4NTAsOCBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAgIGJvb2wgYW5pbWF0aW9uSXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgZXF1YWxzKGNv
bnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3QgZmluYWwKICAg
ICB7CiAgICAgICAgIHJldHVybiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKChhLT4qbV9nZXR0ZXIp
KCksIChiLT4qbV9nZXR0ZXIpKCkpOwpAQCAtODY1LDYgKzg2Nyw4IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6CisgICAgYm9vbCBhbmltYXRpb25Jc0FjY2VsZXJhdGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUq
IGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0
dXJuIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoKGEtPiptX2dldHRlcikoKSwgKGItPiptX2dldHRl
cikoKSk7CkBAIC04ODAsNiArODg0LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAg
ICBib29sIGFuaW1hdGlvbklzQWNjZWxlcmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisKICAgICBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVy
U3R5bGUqIGIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YSgoYS0+Km1fZ2V0dGVyKSgpLCAoYi0+Km1fZ2V0dGVyKSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
M2U2NTk1ZWFiZWUxZmNkODk2NGExNGZlNDYwMzEyNjZjOTBlYjZmZi4uMTgxNWUwYzVmMjE4NTYw
NTBiY2I1ZDJlZGVmMGQwZjU2NmRmMjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCBzdGF0
aWMgaW5saW5lIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG9wZXJhdGlvbnNBdChjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdgogCiBpbnQgR3JhcGhpY3NMYXllcjo6dmFsaWRhdGVUcmFuc2Zv
cm1PcGVyYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGJvb2wmIGhh
c0JpZ1JvdGF0aW9uKQogewotICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmlt
YXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKKyAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eUlzVHJh
bnNmb3JtT3JSZWxhdGVkKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSk7CiAKICAgICBoYXNCaWdSb3Rh
dGlvbiA9IGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGVlMzQ3YmE4NTMyNjFjOTYyZWE5OTQyYjY4M2YyYTJk
YTkxMmFkMTEuLmIxN2FhODJlNTI1ODM3ZDk0MThmOTZiNTY5MjUxMWZiNWE5M2NkNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAg
LTEzMyw2ICsxMzMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZShkb3VibGUga2V5VGltZSwgVHJhbnNmb3JtT3BlcmF0aW9uKiB2YWx1ZSwg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gbnVsbHB0cikKKyAgICAgICAgOiBBbmlt
YXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgICAgIGlmICh2
YWx1ZSkKKyAgICAgICAgICAgIG1fdmFsdWUub3BlcmF0aW9ucygpLmFwcGVuZCh2YWx1ZSk7Cisg
ICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZT4oKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCmluZGV4IDc5YTNmNTM5NjNiZjQ3YjYwMTQ4
MDBhNzUzMjM0ZDZhMWQxM2ExZDQuLmZlOWIwMGU1MDgxZDYyZmMyNDhiMjVjZGU0N2IxYThlMWIw
Y2E0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ2xpZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiVGlsZWRCYWNraW5nLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
IApAQCAtMzcsNyArMzgsNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGlj
c0xheWVyOwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CiAKIGVudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Ugewog
ICAgIEJhY2tncm91bmQgICAgICAgICAgICA9IDEgPDwgMCwKQEAgLTUxLDYgKzUxLDkgQEAgZW51
bSBjbGFzcyBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSB7CiAKIGVudW0gQW5pbWF0ZWRQcm9w
ZXJ0eUlEIHsKICAgICBBbmltYXRlZFByb3BlcnR5SW52YWxpZCwKKyAgICBBbmltYXRlZFByb3Bl
cnR5VHJhbnNsYXRlLAorICAgIEFuaW1hdGVkUHJvcGVydHlTY2FsZSwKKyAgICBBbmltYXRlZFBy
b3BlcnR5Um90YXRlLAogICAgIEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0sCiAgICAgQW5pbWF0
ZWRQcm9wZXJ0eU9wYWNpdHksCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwK
QEAgLTYwLDYgKzYzLDExIEBAIGVudW0gQW5pbWF0ZWRQcm9wZXJ0eUlEIHsKICNlbmRpZgogfTsK
IAoraW5saW5lIGJvb2wgYW5pbWF0ZWRQcm9wZXJ0eUlzVHJhbnNmb3JtT3JSZWxhdGVkKEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3sKKyAgICByZXR1cm4gcHJvcGVydHkgPT0gQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zZm9ybSB8fCBwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNs
YXRlIHx8IHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlTY2FsZSB8fCBwcm9wZXJ0eSA9PSBB
bmltYXRlZFByb3BlcnR5Um90YXRlOworfQorCiBlbnVtIExheWVyVHJlZUFzVGV4dEJlaGF2aW9y
RmxhZ3MgewogICAgIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yTm9ybWFsICAgICAgICAgICAgICAg
PSAwLAogICAgIExheWVyVHJlZUFzVGV4dERlYnVnICAgICAgICAgICAgICAgICAgICAgICAgPSAx
IDw8IDAsIC8vIER1bXAgZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNzZXMu
CkBAIC0xMzksNiArMTQ3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZpbGxl
ZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQpIHsgfTsKIAorICAgIHZpcnR1YWwgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtTWF0cml4Rm9yUHJvcGVydHkoQW5pbWF0ZWRQcm9wZXJ0eUlE
KSBjb25zdCB7IHJldHVybiB7IH07IH0KKwogI2lmbmRlZiBOREVCVUcKICAgICAvLyBSZW5kZXJM
YXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRoYXQgaXQgaXMgbm90CiAgICAg
Ly8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NFUlQgZmFpbHMsIGlmIGl0IGlz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggNjUwMDE0NmYwNGRlMzE3ZmE0NjNjOTllZTg5MzE4MGFlYjAx
YmY1Zi4uOGQ5YjYyOTE0M2M5MGM1OTNmNTUzODMxNWYzNWI1OTZhNGUwODBhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29u
Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IApAQCAtMjUxLDYgKzI1Miw5IEBAIHN0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1
bmN0aW9uVHlwZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wCiBzdGF0aWMgQVND
SUlMaXRlcmFsIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkp
CiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVRy
YW5zbGF0ZToKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlTY2FsZToKKyAgICBjYXNlIEFuaW1h
dGVkUHJvcGVydHlSb3RhdGU6CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtOgog
ICAgICAgICByZXR1cm4gInRyYW5zZm9ybSJfczsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5OgpAQCAtNjU3LDYgKzY2MSwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQogCiAgICAgR3JhcGhpY3NMYXll
cjo6c2V0VHJhbnNmb3JtKHQpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChUcmFuc2Zv
cm1DaGFuZ2VkKTsKKworICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgcnVubmluZyBhIHRyYW5z
Zm9ybS1yZWxhdGVkIGFuaW1hdGlvbiwgYSBjaGFuZ2UgaW4gdW5kZXJseWluZworICAgIC8vIHRy
YW5zZm9ybSB2YWx1ZSBtZWFucyB3ZSBtdXN0IHJlLWV2YWx1YXRlIGFsbCB0cmFuc2Zvcm0tcmVs
YXRlZCBhbmltYXRpb25zIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgdGhlIGJhc2UgdmFsdWUgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgYXJlIGN1cnJlbnQuCisgICAgaWYgKGlzUnVubmluZ1RyYW5zZm9y
bUFuaW1hdGlvbigpKQorICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9u
Q2hhbmdlZCB8IENvdmVyYWdlUmVjdENoYW5nZWQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCkBA
IC02ODksNyArNjk5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlMYXllckFu
aW1hdGlvbihNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgY29uc3QgU3RyaW4KIHZvaWQgR3JhcGhpY3NM
YXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9ucyhNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgUGxhdGZv
cm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllciAqdG9MYXllcikKIHsKICAgICBm
b3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykgewotICAgICAgICBpZiAoKGFuaW1h
dGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0KKyAgICAgICAgaWYg
KChhbmltYXRlZFByb3BlcnR5SXNUcmFuc2Zvcm1PclJlbGF0ZWQoYW5pbWF0aW9uLm1fcHJvcGVy
dHkpCiAgICAgICAgICAgICB8fCBhbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eQogICAgICAgICAgICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0
ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcgogICAgICAgICAgICAgfHwgYW5pbWF0aW9uLm1fcHJv
cGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlcikKQEAgLTEwNDQsNyArMTA1NCw3IEBAIGJv
b2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgRmxvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wg
Y3JlYXRlZEFuaW1hdGlvbnMgPSBmYWxzZTsKLSAgICBpZiAodmFsdWVMaXN0LnByb3BlcnR5KCkg
PT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSkKKyAgICBpZiAoYW5pbWF0ZWRQcm9wZXJ0eUlz
VHJhbnNmb3JtT3JSZWxhdGVkKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSkKICAgICAgICAgY3JlYXRl
ZEFuaW1hdGlvbnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyh2YWx1
ZUxpc3QsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIFNlY29uZHMgeyB0aW1lT2Zmc2V0IH0sIGJveFNp
emUpOwogICAgIGVsc2UgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVy
dHlGaWx0ZXIpIHsKICAgICAgICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRGaWx0ZXJBbmltYXRp
b25zKCkpCkBAIC0yODUxLDMwICsyODYxLDE1NiBAQCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaQog
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCiB7Ci0gICAgLy8gUmVt
b3ZlIGFsbCBhbmltYXRpb25zIHNvIGZhci4KLSAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1f
YW5pbWF0aW9ucykKKyAgICBlbnVtIGNsYXNzIEFkZGl0aXZlIHsgWWVzLCBObyB9OworICAgIGF1
dG8gYWRkQW5pbWF0aW9uID0gWyZdKExheWVyUHJvcGVydHlBbmltYXRpb24mIGFuaW1hdGlvbiwg
QWRkaXRpdmUgYWRkaXRpdmUgPSBBZGRpdGl2ZTo6WWVzKSB7CisgICAgICAgIGFuaW1hdGlvbi5t
X2FuaW1hdGlvbi0+c2V0QWRkaXRpdmUoYWRkaXRpdmUgPT0gQWRkaXRpdmU6Olllcyk7CisgICAg
ICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIoYW5pbWF0aW9uKTsKKyAgICAgICAgaWYgKGFuaW1hdGlv
bi5tX3BsYXlTdGF0ZSA9PSBQbGF5U3RhdGU6OlBhdXNlUGVuZGluZyB8fCBhbmltYXRpb24ubV9w
bGF5U3RhdGUgPT0gUGxheVN0YXRlOjpQYXVzZWQpIHsKKyAgICAgICAgICAgIHBhdXNlQ0FBbmlt
YXRpb25PbkxheWVyKGFuaW1hdGlvbik7CisgICAgICAgICAgICBhbmltYXRpb24ubV9wbGF5U3Rh
dGUgPSBQbGF5U3RhdGU6OlBhdXNlZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbmlt
YXRpb24ubV9wbGF5U3RhdGUgPSBQbGF5U3RhdGU6OlBsYXlpbmc7CisgICAgfTsKKworICAgIGVu
dW0gY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXhTb3VyY2UgeyBVc2VJZGVudGl0eU1hdHJpeCwg
QXNrQ2xpZW50IH07CisgICAgYXV0byBhZGRCYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb24gPSBb
Jl0oQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeFNvdXJj
ZSBtYXRyaXhTb3VyY2UgPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeFNvdXJjZTo6QXNrQ2xpZW50KSB7
CisgICAgICAgIC8vIEEgYmFzZSB2YWx1ZSB0cmFuc2Zvcm0gYW5pbWF0aW9uIGNhbiBlaXRoZXIg
YmUgc2V0IHRvIHRoZSBpZGVudGl0eSBtYXRyaXggb3IgdG8gcmVhZCB0aGUgdW5kZXJseWluZwor
ICAgICAgICAvLyB2YWx1ZSBmcm9tIHRoZSBHcmFwaGljc0xheWVyQ2xpZW50LiBJZiB3ZSBkaWRu
J3QgZXhwbGljaXRseSBhc2sgZm9yIGFuIGlkZW50aXR5IG1hdHJpeCwgd2UgY2FuIHNraXAKKyAg
ICAgICAgLy8gdGhlIGFkZGl0aW9uIG9mIHRoaXMgYmFzZSB2YWx1ZSB0cmFuc2Zvcm0gYW5pbWF0
aW9uIHNpbmNlIGl0IHdpbGwgYmUgYSBuby1vcC4KKyAgICAgICAgYXV0byBtYXRyaXggPSBtYXRy
aXhTb3VyY2UgPT0gVHJhbnNmb3JtYXRpb25NYXRyaXhTb3VyY2U6OlVzZUlkZW50aXR5TWF0cml4
ID8gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSA6IGNsaWVudCgpLnRyYW5zZm9ybU1hdHJpeEZvclBy
b3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgaWYgKG1hdHJpeFNvdXJjZSA9PSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeFNvdXJjZTo6QXNrQ2xpZW50ICYmIG1hdHJpeC5pc0lkZW50aXR5KCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQSBiYXNlIHZhbHVlIHRyYW5zZm9ybSBhbmlt
YXRpb24gbmVlZHMgdG8gbGFzdCBmb3JldmVyIGFuZCB1c2UgdGhlIHNhbWUgdmFsdWUgZm9yIGl0
cyBmcm9tIGFuZCB0byB2YWx1ZXMuCisgICAgICAgIGF1dG8gY2FBbmltYXRpb24gPSBjcmVhdGVQ
bGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBwcm9wZXJ0eUlk
VG9TdHJpbmcocHJvcGVydHkpKTsKKyAgICAgICAgY2FBbmltYXRpb24tPnNldER1cmF0aW9uKFNl
Y29uZHM6OmluZmluaXR5KCkuc2Vjb25kcygpKTsKKyAgICAgICAgY2FBbmltYXRpb24tPnNldEZy
b21WYWx1ZShtYXRyaXgpOworICAgICAgICBjYUFuaW1hdGlvbi0+c2V0VG9WYWx1ZShtYXRyaXgp
OworCisgICAgICAgIGF1dG8gYW5pbWF0aW9uID0gTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihXVEZN
b3ZlKGNhQW5pbWF0aW9uKSwgImJhc2UtdHJhbnNmb3JtLSIgKyBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCksIHByb3BlcnR5LCAwLCAwLCAwX3MpOworICAgICAgICAvLyBUbyBlbnN1cmUgdGhl
IGJhc2UgdmFsdWUgdHJhbnNmb3JtIGlzIGFwcGxpZWQgYWxvbmcgd2l0aCBhbGwgdGhlIGludGVy
cG9sYXRpbmcgYW5pbWF0aW9ucywgd2Ugc2V0IGl0IHRvIGhhdmUgc3RhcnRlZAorICAgICAgICAv
LyBhcyBlYXJseSBhcyBwb3NzaWJsZSwgd2hpY2ggY29tYmluZWQgd2l0aCB0aGUgaW5maW5pdGUg
ZHVyYXRpb24gZW5zdXJlcyBpdCdzIGN1cnJlbnQgZm9yIGFueSBnaXZlbiBDQSBtZWRpYSB0aW1l
LgorICAgICAgICBhbmltYXRpb24ubV9iZWdpblRpbWUgPSBTZWNvbmRzOjpmcm9tTmFub3NlY29u
ZHMoMSk7CisKKyAgICAgICAgLy8gQWRkaXRpdml0eSB3aWxsIGRlcGVuZCBvbiB0aGUgc291cmNl
IG9mIHRoZSBtYXRyaXgsIGlmIGl0IHdhcyBleHBsaWNpdGx5IHByb3ZpZGVkIGFzIGFuIGlkZW50
aXR5IG1hdHJpeCwgaXQKKyAgICAgICAgLy8gaXMgdGhlIGluaXRpYWwgYmFzZSB2YWx1ZSB0cmFu
c2Zvcm0gYW5pbWF0aW9uIGFuZCBtdXN0IG92ZXJyaWRlIHRoZSBjdXJyZW50IHRyYW5zZm9ybSB2
YWx1ZSBmb3IgdGhpcyBsYXllci4KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBpcyBtZWFudCB0
byBhcHBseSB0aGUgdW5kZXJseWluZyB2YWx1ZSBmb3Igb25lIHNwZWNpZmljIHRyYW5zZm9ybS1y
ZWxhdGVkIHByb3BlcnR5IGFuZCBiZSBhZGRpdGl2ZQorICAgICAgICAvLyB0byBiZSBjb21iaW5l
ZCB3aXRoIHRoZSBvdGhlciBiYXNlIHZhbHVlIHRyYW5zZm9ybSBhbmltYXRpb25zIGFuZCBpbnRl
cnBvbGF0aW5nIGFuaW1hdGlvbnMuCisgICAgICAgIGFkZEFuaW1hdGlvbihhbmltYXRpb24sIG1h
dHJpeFNvdXJjZSA9PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeFNvdXJjZTo6QXNrQ2xpZW50ID8gQWRk
aXRpdmU6OlllcyA6IEFkZGl0aXZlOjpObyk7CisgICAgICAgIG1fYmFzZVZhbHVlVHJhbnNmb3Jt
QW5pbWF0aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24pKTsKKyAgICB9OworCisgICAgLy8g
UmVtb3ZlIGFsbCBydW5uaW5nIENBIGFuaW1hdGlvbnMuCisgICAgZm9yIChhdXRvJiBhbmltYXRp
b24gOiBtX2FuaW1hdGlvbnMpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9
PSBQbGF5U3RhdGU6OlBsYXlpbmcgfHwgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBsYXlTdGF0
ZTo6UGF1c2VkKQorICAgICAgICAgICAgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoYW5pbWF0
aW9uKTsKKyAgICB9CisKKyAgICAvLyBBbHNvIHJlbW92ZSBhbGwgdGhlIGJhc2UgdmFsdWUgdHJh
bnNmb3JtIENBIGFuaW1hdGlvbnMuCisgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2Jhc2VW
YWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnMpCiAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxh
eWVyKGFuaW1hdGlvbik7CiAKLSAgICAvLyBSZW1vdmUgYWxsIGFuaW1hdGlvbnMgZnJvbSB0aGUg
bGlzdCB0aGF0IHdlcmUgcGVuZGluZyByZW1vdmFsLgorICAgIC8vIE5vdyByZW1vdmUgYWxsIHRo
ZSBhbmltYXRpb25zIG1hcmtlZCBhcyBwZW5kaW5nIHJlbW92YWwgYW5kIGFsbCBiYXNlIHZhbHVl
IHRyYW5zZm9ybSBhbmltYXRpb25zLgogICAgIG1fYW5pbWF0aW9ucy5yZW1vdmVBbGxNYXRjaGlu
ZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRpb24pIHsKICAgICAgICAgcmV0dXJu
IGFuaW1hdGlvbi5tX3BlbmRpbmdSZW1vdmFsOwogICAgIH0pOworICAgIG1fYmFzZVZhbHVlVHJh
bnNmb3JtQW5pbWF0aW9ucy5jbGVhcigpOworCisgICAgLy8gTm93IHRoYXQgb3VyIGxpc3Qgb2Yg
YW5pbWF0aW9ucyBpcyBjdXJyZW50LCB3ZSBjYW4gc2VwYXJhdGUgYW5pbWF0aW9ucyBieSBwcm9w
ZXJ0eSBzbyB0aGF0CisgICAgLy8gd2UgY2FuIGFwcGx5IHRoZW0gaW4gb3JkZXIuIFdlIG9ubHkg
bmVlZCB0byBhcHBseSB0aGUgbGFzdCBhbmltYXRpb24gYXBwbGllZCBmb3IgYSBnaXZlbgorICAg
IC8vIGluZGl2aWR1YWwgdHJhbnNmb3JtIHByb3BlcnR5LCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNl
IHRvIHRoYXQuIEZvciBhbmltYXRpb25zIHRhcmdldGluZworICAgIC8vIHRoZSB0cmFuc2Zvcm0g
cHJvcGVydHkgaXRzZWxmLCB3ZSBrZWVwIHRoZW0gaW4gb3JkZXIgc2luY2UgdGhleSBhbGwgbmVl
ZCB0byBhcHBseSBhbmQgYnVpbGQKKyAgICAvLyBvbiB0b3Agb2YgZWFjaCBvdGhlci4gRmluYWxs
eSwgYW5pbWF0aW9ucyB0aGF0IGFyZSBub3QgdHJhbnNmb3JtLXJlbGF0ZWQgY2FuIGJlIGFwcGxp
ZWQKKyAgICAvLyByaWdodCBhd2F5IHNpbmNlIHRoZWlyIG9yZGVyIHJlbGF0aXZlIHRvIHRyYW5z
Zm9ybSBhbmltYXRpb25zIGRvZXMgbm90IG1hdHRlci4KKyAgICBMYXllclByb3BlcnR5QW5pbWF0
aW9uKiB0cmFuc2xhdGVBbmltYXRpb24gPSBudWxscHRyOworICAgIExheWVyUHJvcGVydHlBbmlt
YXRpb24qIHNjYWxlQW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICBMYXllclByb3BlcnR5QW5pbWF0
aW9uKiByb3RhdGVBbmltYXRpb24gPSBudWxscHRyOworICAgIFZlY3RvcjxMYXllclByb3BlcnR5
QW5pbWF0aW9uKj4gdHJhbnNmb3JtQW5pbWF0aW9uczsKIAotICAgIC8vIEFkZCBhbGwgcmVtYWlu
aW5nIGFuaW1hdGlvbnMuCiAgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMp
IHsKLSAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcihhbmltYXRpb24pOwotICAgICAgICBpZiAo
YW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBsYXlTdGF0ZTo6UGF1c2VQZW5kaW5nIHx8IGFuaW1h
dGlvbi5tX3BsYXlTdGF0ZSA9PSBQbGF5U3RhdGU6OlBhdXNlZCkgewotICAgICAgICAgICAgcGF1
c2VDQUFuaW1hdGlvbk9uTGF5ZXIoYW5pbWF0aW9uKTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi5t
X3BsYXlTdGF0ZSA9IFBsYXlTdGF0ZTo6UGF1c2VkOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9IFBsYXlTdGF0ZTo6UGxheWluZzsKKyAgICAgICAg
c3dpdGNoIChhbmltYXRpb24ubV9wcm9wZXJ0eSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkUHJv
cGVydHlUcmFuc2xhdGU6CisgICAgICAgICAgICB0cmFuc2xhdGVBbmltYXRpb24gPSAmYW5pbWF0
aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVNj
YWxlOgorICAgICAgICAgICAgc2NhbGVBbmltYXRpb24gPSAmYW5pbWF0aW9uOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVJvdGF0ZToKKyAgICAgICAg
ICAgIHJvdGF0ZUFuaW1hdGlvbiA9ICZhbmltYXRpb247CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtOgorICAgICAgICAgICAgdHJhbnNm
b3JtQW5pbWF0aW9ucy5hcHBlbmQoJmFuaW1hdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKKyAgICAgICAgY2FzZSBBbmltYXRl
ZFByb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlG
aWx0ZXI6CisjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKKyAgICAgICAgY2FzZSBBbmltYXRl
ZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXI6CisjZW5kaWYKKyAgICAgICAgICAgIGFkZEFu
aW1hdGlvbihhbmltYXRpb24sIEFkZGl0aXZlOjpObyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5SW52YWxpZDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IHdlIGNhbiBhcHBs
eSB0aGUgdHJhbnNmb3JtLXJlbGF0ZWQgYW5pbWF0aW9ucywgdGFraW5nIGNhcmUgdG8gYWRkIHRo
ZW0gaW4gdGhlIHJpZ2h0IG9yZGVyCisgICAgLy8gKHRyYW5zbGF0ZS9zY2FsZS9yb3RhdGUvdHJh
bnNmb3JtKSBhbmQgZ2VuZXJhdGUgbm9uLWludGVycG9sYXRpbmcgYmFzZSB2YWx1ZSB0cmFuc2Zv
cm0gYW5pbWF0aW9ucworICAgIC8vIGZvciBlYWNoIHByb3BlcnR5IHRoYXQgaXMgbm90IG90aGVy
d2lzZSBpbnRlcnBvbGF0ZWQuCisgICAgaWYgKHRyYW5zbGF0ZUFuaW1hdGlvbiB8fCBzY2FsZUFu
aW1hdGlvbiB8fCByb3RhdGVBbmltYXRpb24gfHwgIXRyYW5zZm9ybUFuaW1hdGlvbnMuaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIFN0YXJ0IHdpdGggYSBiYXNlIGlkZW50aXR5IHRyYW5zZm9ybSB0
byBvdmVycmlkZSB0aGUgdHJhbnNmb3JtIGFwcGxpZWQgdG8gdGhlIGxheWVyIGFuZCBoYXZlIGEK
KyAgICAgICAgLy8gc291bmQgYmFzZSB0byBhZGQgYW5pbWF0aW9ucyBvbiB0b3Agb2Ygd2l0aCBh
ZGRpdGl2aXR5IGVuYWJsZWQuCisgICAgICAgIGFkZEJhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlv
bihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeFNvdXJjZTo6
VXNlSWRlbnRpdHlNYXRyaXgpOworCisgICAgICAgIC8vIENvcmUgQW5pbWF0aW9uIG1pZ2h0IHJl
cXVpcmUgYWRkaXRpdmUgYW5pbWF0aW9ucyB0byBiZSBhcHBsaWVkIGluIHRoZSByZXZlcnNlIG9y
ZGVyLgorI2lmICFQTEFURk9STShXSU4pICYmICFIQVZFKENBX1dIRVJFX0FERElUSVZFX1RSQU5T
Rk9STVNfQVJFX1JFVkVSU0VEKQorICAgICAgICBpZiAodHJhbnNsYXRlQW5pbWF0aW9uKQorICAg
ICAgICAgICAgYWRkQW5pbWF0aW9uKCp0cmFuc2xhdGVBbmltYXRpb24pOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBhZGRCYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb24oQW5pbWF0ZWRQcm9w
ZXJ0eVRyYW5zbGF0ZSk7CisKKyAgICAgICAgaWYgKHNjYWxlQW5pbWF0aW9uKQorICAgICAgICAg
ICAgYWRkQW5pbWF0aW9uKCpzY2FsZUFuaW1hdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGFkZEJhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbihBbmltYXRlZFByb3BlcnR5U2NhbGUp
OworCisgICAgICAgIGlmIChyb3RhdGVBbmltYXRpb24pCisgICAgICAgICAgICBhZGRBbmltYXRp
b24oKnJvdGF0ZUFuaW1hdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZEJhc2VW
YWx1ZVRyYW5zZm9ybUFuaW1hdGlvbihBbmltYXRlZFByb3BlcnR5Um90YXRlKTsKKworICAgICAg
ICBmb3IgKGF1dG8qIGFuaW1hdGlvbiA6IHRyYW5zZm9ybUFuaW1hdGlvbnMpCisgICAgICAgICAg
ICBhZGRBbmltYXRpb24oKmFuaW1hdGlvbik7CisgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltYXRp
b25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkZEJhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlv
bihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKKyNlbHNlCisgICAgICAgIGZvciAoYXV0byog
YW5pbWF0aW9uIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZSh0cmFuc2Zvcm1BbmltYXRpb25zKSkK
KyAgICAgICAgICAgIGFkZEFuaW1hdGlvbigqYW5pbWF0aW9uKTsKKyAgICAgICAgaWYgKHRyYW5z
Zm9ybUFuaW1hdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWRkQmFzZVZhbHVlVHJhbnNm
b3JtQW5pbWF0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pOworCisgICAgICAgIGlmIChy
b3RhdGVBbmltYXRpb24pCisgICAgICAgICAgICBhZGRBbmltYXRpb24oKnJvdGF0ZUFuaW1hdGlv
bik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZEJhc2VWYWx1ZVRyYW5zZm9ybUFuaW1h
dGlvbihBbmltYXRlZFByb3BlcnR5Um90YXRlKTsKKworICAgICAgICBpZiAoc2NhbGVBbmltYXRp
b24pCisgICAgICAgICAgICBhZGRBbmltYXRpb24oKnNjYWxlQW5pbWF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYWRkQmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uKEFuaW1hdGVk
UHJvcGVydHlTY2FsZSk7CisKKyAgICAgICAgaWYgKHRyYW5zbGF0ZUFuaW1hdGlvbikKKyAgICAg
ICAgICAgIGFkZEFuaW1hdGlvbigqdHJhbnNsYXRlQW5pbWF0aW9uKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYWRkQmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uKEFuaW1hdGVkUHJvcGVy
dHlUcmFuc2xhdGUpOworI2VuZGlmCiAgICAgfQogfQogCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hbmlt
YXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRpb24p
IHsKLSAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVy
dHlUcmFuc2Zvcm0gJiYgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBsYXlTdGF0ZTo6UGxheWlu
ZzsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGVkUHJvcGVydHlJc1RyYW5zZm9ybU9yUmVsYXRlZChh
bmltYXRpb24ubV9wcm9wZXJ0eSkgJiYgKGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9PSBQbGF5U3Rh
dGU6OlBsYXlpbmcgfHwgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBsYXlTdGF0ZTo6UGF1c2Vk
KTsKICAgICB9KSAhPSBub3RGb3VuZDsKIH0KIApAQCAtMzAxMCw3ICszMTQ2LDcgQEAgc3RhdGlj
IGJvb2wgaXNLZXlmcmFtZShjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgbGlzdCkKIAogYm9vbCBH
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgU2Vjb25kcyB0aW1lT2Zmc2V0KQogewotICAgIEFTU0VS
VCh2YWx1ZUxpc3QucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtICYmICgh
c3VwcG9ydHNBY2NlbGVyYXRlZEZpbHRlckFuaW1hdGlvbnMoKSB8fCB2YWx1ZUxpc3QucHJvcGVy
dHkoKSAhPSBBbmltYXRlZFByb3BlcnR5RmlsdGVyKSk7CisgICAgQVNTRVJUKCFhbmltYXRlZFBy
b3BlcnR5SXNUcmFuc2Zvcm1PclJlbGF0ZWQodmFsdWVMaXN0LnByb3BlcnR5KCkpICYmICghc3Vw
cG9ydHNBY2NlbGVyYXRlZEZpbHRlckFuaW1hdGlvbnMoKSB8fCB2YWx1ZUxpc3QucHJvcGVydHko
KSAhPSBBbmltYXRlZFByb3BlcnR5RmlsdGVyKSk7CiAKICAgICBib29sIHZhbHVlc09LOwogICAg
IApAQCAtMzA0MSwyMyArMzE3NywxNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5p
bWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdQogYm9vbCBH
cmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIG9wZXJh
dGlvbnMsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgaW50IGFuaW1hdGlvbkluZGV4LCBTZWNv
bmRzIHRpbWVPZmZzZXQsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24pCiB7CiAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24g
PyBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRCA6IG9wZXJhdGlvbnMtPm9wZXJhdGlvbnMo
KS5hdChhbmltYXRpb25JbmRleCktPnR5cGUoKTsKLSNpZiAhUExBVEZPUk0oV0lOKSAmJiAhSEFW
RShDQV9XSEVSRV9BRERJVElWRV9UUkFOU0ZPUk1TX0FSRV9SRVZFUlNFRCkKLSAgICBib29sIGFk
ZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPiAwOwotI2Vsc2UKLSAgICBpbnQgbnVtQW5pbWF0aW9u
cyA9IGlzTWF0cml4QW5pbWF0aW9uID8gMSA6IG9wZXJhdGlvbnMtPnNpemUoKTsKLSAgICBib29s
IGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPCBudW1BbmltYXRpb25zIC0gMTsKLSNlbmRpZgog
CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOwogICAgIGJvb2wg
dmFsaWRNYXRyaWNlcyA9IHRydWU7CiAgICAgaWYgKGlzS2V5ZnJhbWUodmFsdWVMaXN0KSkgewot
ICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwg
cHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgYWRkaXRpdmUpOworICAg
ICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgcHJv
cGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSwgZmFsc2UpOwogICAgICAgICB2
YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9ybU9w
LCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KGFuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS0+aXNTcHJpbmdUaW1pbmdGdW5jdGlvbigpKQot
ICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVTcHJpbmdBbmltYXRpb24oYW5pbWF0aW9u
LCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBhZGRpdGl2ZSk7Cisg
ICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZVNwcmluZ0FuaW1hdGlvbihhbmltYXRpb24s
IHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGZhbHNlKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihh
bmltYXRpb24sIHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSksIGFkZGl0
aXZlKTsKKyAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCBwcm9wZXJ0eUlkVG9TdHJpbmcodmFsdWVMaXN0LnByb3BlcnR5KCkpLCBmYWxzZSk7
CiAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMo
dmFsdWVMaXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRleCwg
dHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKICAgICB9CiAgICAgCkBA
IC0zMDcwLDcgKzMyMDAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1p
dHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogCiBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24s
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgU2Vjb25kcyB0aW1lT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGJveFNpemUpCiB7Ci0gICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09
IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pOworICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5
SXNUcmFuc2Zvcm1PclJlbGF0ZWQodmFsdWVMaXN0LnByb3BlcnR5KCkpKTsKIAogICAgIGJvb2wg
aGFzQmlnUm90YXRpb247CiAgICAgaW50IGxpc3RJbmRleCA9IHZhbGlkYXRlVHJhbnNmb3JtT3Bl
cmF0aW9ucyh2YWx1ZUxpc3QsIGhhc0JpZ1JvdGF0aW9uKTsKQEAgLTMwNzksMTUgKzMyMDksMTAg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWUKICAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVl
OwogCiAgICAgLy8gSWYgZnVuY3Rpb24gbGlzdHMgZG9uJ3QgbWF0Y2ggd2UgZG8gYSBtYXRyaXgg
YW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQgaGFyZHdhcmUgYW5pbWF0aW9u
LgotICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24gPSBsaXN0SW5kZXggPCAwOworICAgIGJvb2wg
aXNNYXRyaXhBbmltYXRpb24gPSB2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3Bl
cnR5VHJhbnNmb3JtID8gbGlzdEluZGV4IDwgMCA6IHRydWU7CiAgICAgaW50IG51bUFuaW1hdGlv
bnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBvcGVyYXRpb25zLT5zaXplKCk7CiAKLSNpZiAh
UExBVEZPUk0oV0lOKSAmJiAhSEFWRShDQV9XSEVSRV9BRERJVElWRV9UUkFOU0ZPUk1TX0FSRV9S
RVZFUlNFRCkKICAgICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4
IDwgbnVtQW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotI2Vsc2UKLSAgICAvLyBTb21l
IHZlcnNpb25zIG9mIENBIHJlcXVpcmUgYW5pbWF0aW9uIGxpc3RzIHRvIGJlIGFwcGxpZWQgaW4g
cmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9ibGVtLzQzOTA4MDQ3PiBhbmQgPHJkYXI6Ly9wcm9i
bGVtLzkxMTIyMzM+KS4KLSAgICBmb3IgKGludCBhbmltYXRpb25JbmRleCA9IG51bUFuaW1hdGlv
bnMgLSAxOyBhbmltYXRpb25JbmRleCA+PSAwOyAtLWFuaW1hdGlvbkluZGV4KSB7Ci0jZW5kaWYK
ICAgICAgICAgaWYgKCFhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyh2YWx1ZUxpc3QsIG9w
ZXJhdGlvbnMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgYm94U2l6ZSwgYW5pbWF0aW9uSW5k
ZXgsIHRpbWVPZmZzZXQsIGlzTWF0cml4QW5pbWF0aW9uKSkgewogICAgICAgICAgICAgdmFsaWRN
YXRyaWNlcyA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MjE1LDIwICs0MzQwLDI2
IEBAIGRvdWJsZSBHcmFwaGljc0xheWVyQ0E6OmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkg
Y29uc3QKIAogc3RhdGljIFN0cmluZyBhbmltYXRlZFByb3BlcnR5SURBc1N0cmluZyhBbmltYXRl
ZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7Ci0gICAgaWYgKHByb3BlcnR5ID09IEFuaW1hdGVkUHJv
cGVydHlUcmFuc2Zvcm0pCisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zbGF0ZToKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlTY2FsZToKKyAg
ICBjYXNlIEFuaW1hdGVkUHJvcGVydHlSb3RhdGU6CisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5
VHJhbnNmb3JtOgogICAgICAgICByZXR1cm4gInRyYW5zZm9ybSI7Ci0gICAgaWYgKHByb3BlcnR5
ID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQorICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9w
YWNpdHk6CiAgICAgICAgIHJldHVybiAib3BhY2l0eSI7Ci0gICAgaWYgKHByb3BlcnR5ID09IEFu
aW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpCisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5
QmFja2dyb3VuZENvbG9yOgogICAgICAgICByZXR1cm4gImJhY2tncm91bmQtY29sb3IiOwotICAg
IGlmIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5RmlsdGVyKQorICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eUZpbHRlcjoKICAgICAgICAgcmV0dXJuICJmaWx0ZXIiOwotICAgIGlmIChwcm9w
ZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5SW52YWxpZCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlk
IjsKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIGlmIChwcm9wZXJ0eSA9PSBBbmlt
YXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpCisgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5V2Via2l0QmFja2Ryb3BGaWx0ZXI6CiAgICAgICAgIHJldHVybiAiYmFja2Ryb3AtZmlsdGVy
IjsKICNlbmRpZgorICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUludmFsaWQ6CisgICAgICAgIHJl
dHVybiAiaW52YWxpZCI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiAiIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBhMzkxMzcwNTUzYWY0NzNlNjM1NjM3MmRhNmQz
M2JiYWRiZmNmODFmLi4wOTQ5ZjYzMGJmNzczMzE0ODU0ZTg2NjIzZDA1ODlkNGU4NTUxNGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaApAQCAtNTk3LDYgKzU5Nyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7CiAgICAgCiAgICAgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKKyAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwogCiAgICAgVmVjdG9y
PEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGIwNWYwNWI4OWE1MjAzZWJiNGEyZTI1YmIx
NjAwOTBiNWNjZjA1ZjMuLjM2MmY2ZDU1ZjcwNDc5MzlkMTU1ZDk3YjlkYmNiOTgzMTAwZWYwOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC0zNTYxLDYgKzM1NjEsOSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dmVyaWZ5Tm90
UGFpbnRpbmcoKQogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgS2V5ZnJhbWVM
aXN0JiBrZXlmcmFtZXMpCiB7CiAgICAgYm9vbCBoYXNPcGFjaXR5ID0ga2V5ZnJhbWVzLmNvbnRh
aW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKKyAgICBib29sIGhhc1JvdGF0ZSA9IHJl
bmRlcmVyKCkuaXNCb3goKSAmJiBrZXlmcmFtZXMuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0
eVJvdGF0ZSk7CisgICAgYm9vbCBoYXNTY2FsZSA9IHJlbmRlcmVyKCkuaXNCb3goKSAmJiBrZXlm
cmFtZXMuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVNjYWxlKTsKKyAgICBib29sIGhhc1Ry
YW5zbGF0ZSA9IHJlbmRlcmVyKCkuaXNCb3goKSAmJiBrZXlmcmFtZXMuY29udGFpbnNQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRyYW5zbGF0ZSk7CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm0gPSByZW5kZXJl
cigpLmlzQm94KCkgJiYga2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFu
c2Zvcm0pOwogICAgIGJvb2wgaGFzRmlsdGVyID0ga2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVydHko
Q1NTUHJvcGVydHlGaWx0ZXIpOwogCkBAIC0zNTY5LDkgKzM1NzIsMTIgQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmlt
YXRpb24mIGFuaW0KICAgICBoYXNCYWNrZHJvcEZpbHRlciA9IGtleWZyYW1lcy5jb250YWluc1By
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwogI2VuZGlmCiAKLSAgICBp
ZiAoIWhhc09wYWNpdHkgJiYgIWhhc1RyYW5zZm9ybSAmJiAhaGFzRmlsdGVyICYmICFoYXNCYWNr
ZHJvcEZpbHRlcikKKyAgICBpZiAoIWhhc09wYWNpdHkgJiYgIWhhc1JvdGF0ZSAmJiAhaGFzU2Nh
bGUgJiYgIWhhc1RyYW5zbGF0ZSAmJiAhaGFzVHJhbnNmb3JtICYmICFoYXNGaWx0ZXIgJiYgIWhh
c0JhY2tkcm9wRmlsdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBLZXlmcmFtZVZh
bHVlTGlzdCByb3RhdGVWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVJvdGF0ZSk7CisgICAgS2V5ZnJh
bWVWYWx1ZUxpc3Qgc2NhbGVWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVNjYWxlKTsKKyAgICBLZXlm
cmFtZVZhbHVlTGlzdCB0cmFuc2xhdGVWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zbGF0ZSk7
CiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlU
cmFuc2Zvcm0pOwogICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHkpOwogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmlt
YXRlZFByb3BlcnR5RmlsdGVyKTsKQEAgLTM1OTEsNiArMzU5NywxNSBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1h
dGlvbiYgYW5pbQogICAgICAgICBhdXRvKiB0ZiA9IGN1cnJlbnRLZXlmcmFtZS50aW1pbmdGdW5j
dGlvbigpOwogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBr
ZXkgPT0gMCB8fCBrZXkgPT0gMTsKKyAgICAgICAgaWYgKChoYXNSb3RhdGUgJiYgaXNGaXJzdE9y
TGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVJvdGF0ZSkpCisgICAgICAgICAgICByb3RhdGVWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+cm90YXRlKCksIHRm
KSk7CisKKyAgICAgICAgaWYgKChoYXNTY2FsZSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8
IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5U2NhbGUpKQorICAg
ICAgICAgICAgc2NhbGVWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+c2NhbGUoKSwgdGYpKTsKKworICAgICAgICBpZiAo
KGhhc1RyYW5zbGF0ZSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFt
ZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNsYXRlKSkKKyAgICAgICAgICAgIHRy
YW5zbGF0ZVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4o
a2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2xhdGUoKSwgdGYpKTsKKwogICAgICAgICBpZiAoKGhh
c1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5j
b250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKSkKICAgICAgICAgICAgIHRyYW5z
Zm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5
LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKIApAQCAtMzYxMSw2ICszNjI2LDE1
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9m
ZnNldCwgY29uc3QgQW5pbWF0aW9uJiBhbmltCiAKICAgICBib29sIGRpZEFuaW1hdGUgPSBmYWxz
ZTsKIAorICAgIGlmIChoYXNSb3RhdGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
cm90YXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgp
KS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZz
ZXQpKQorICAgICAgICBkaWRBbmltYXRlID0gdHJ1ZTsKKworICAgIGlmIChoYXNTY2FsZSAmJiBt
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihzY2FsZVZlY3Rvciwgc25hcHBlZEludFJlY3Qo
cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFt
ZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKKyAgICAgICAgZGlkQW5pbWF0ZSA9IHRy
dWU7CisKKyAgICBpZiAoaGFzVHJhbnNsYXRlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKHRyYW5zbGF0ZVZlY3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRlckJv
eFJlY3QoKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0
aW1lT2Zmc2V0KSkKKyAgICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CisKICAgICBpZiAoaGFzVHJh
bnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwg
c25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCAmYW5p
bWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKICAgICAgICAg
ZGlkQW5pbWF0ZSA9IHRydWU7CiAKQEAgLTM3MDcsNiArMzczMSwxNSBAQCBDU1NQcm9wZXJ0eUlE
IFJlbmRlckxheWVyQmFja2luZzo6Z3JhcGhpY3NMYXllclRvQ1NTUHJvcGVydHkoQW5pbWF0ZWRQ
cm9wZXJ0eUlECiB7CiAgICAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eSA9IENTU1Byb3BlcnR5
SW52YWxpZDsKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5VHJhbnNsYXRlOgorICAgICAgICBjc3NQcm9wZXJ0eSA9IENTU1Byb3BlcnR5VHJhbnNsYXRl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlTY2FsZToKKyAgICAg
ICAgY3NzUHJvcGVydHkgPSBDU1NQcm9wZXJ0eVNjYWxlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlSb3RhdGU6CisgICAgICAgIGNzc1Byb3BlcnR5ID0gQ1NTUHJv
cGVydHlSb3RhdGU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVRy
YW5zZm9ybToKICAgICAgICAgY3NzUHJvcGVydHkgPSBDU1NQcm9wZXJ0eVRyYW5zZm9ybTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zNzMzLDYgKzM3NjYsMTIgQEAgQ1NTUHJvcGVydHlJRCBSZW5kZXJM
YXllckJhY2tpbmc6OmdyYXBoaWNzTGF5ZXJUb0NTU1Byb3BlcnR5KEFuaW1hdGVkUHJvcGVydHlJ
RAogQW5pbWF0ZWRQcm9wZXJ0eUlEIFJlbmRlckxheWVyQmFja2luZzo6Y3NzVG9HcmFwaGljc0xh
eWVyUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eSkKIHsKICAgICBzd2l0Y2ggKGNz
c1Byb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zbGF0ZToKKyAgICAgICAgcmV0
dXJuIEFuaW1hdGVkUHJvcGVydHlUcmFuc2xhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjYWxl
OgorICAgICAgICByZXR1cm4gQW5pbWF0ZWRQcm9wZXJ0eVNjYWxlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlSb3RhdGU6CisgICAgICAgIHJldHVybiBBbmltYXRlZFByb3BlcnR5Um90YXRlOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CiAgICAgICAgIHJldHVybiBBbmltYXRlZFByb3Bl
cnR5VHJhbnNmb3JtOwogICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgpAQCAtMzgyMCw0ICsz
ODU5LDMxIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJl
bmRlckxheWVyQmFja2luZyYgYmFja2luZykKICAgICByZXR1cm4gdHM7CiB9CiAKK1RyYW5zZm9y
bWF0aW9uTWF0cml4IFJlbmRlckxheWVyQmFja2luZzo6dHJhbnNmb3JtTWF0cml4Rm9yUHJvcGVy
dHkoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAoreworICAgIGF1dG8qIGJveCA9
IHJlbmRlckJveCgpOworICAgIGlmICghYm94KQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworCisgICAgYXV0byBhcHBseVRyYW5zZm9ybU9w
ZXJhdGlvbiA9IFsmXShUcmFuc2Zvcm1PcGVyYXRpb24qIG9wZXJhdGlvbikgeworICAgICAgICBp
ZiAob3BlcmF0aW9uKQorICAgICAgICAgICAgb3BlcmF0aW9uLT5hcHBseShtYXRyaXgsIHNuYXBw
ZWRJbnRSZWN0KHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUoKSk7CisgICAgfTsK
KworICAgIGlmIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNsYXRlKQorICAgICAg
ICBhcHBseVRyYW5zZm9ybU9wZXJhdGlvbihyZW5kZXJlcigpLnN0eWxlKCkudHJhbnNsYXRlKCkp
OworICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlTY2FsZSkKKyAgICAg
ICAgYXBwbHlUcmFuc2Zvcm1PcGVyYXRpb24ocmVuZGVyZXIoKS5zdHlsZSgpLnNjYWxlKCkpOwor
ICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlSb3RhdGUpCisgICAgICAg
IGFwcGx5VHJhbnNmb3JtT3BlcmF0aW9uKHJlbmRlcmVyKCkuc3R5bGUoKS5yb3RhdGUoKSk7Cisg
ICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSkKKyAgICAg
ICAgcmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybSgpLmFwcGx5KHNuYXBwZWRJbnRSZWN0KHJl
bmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgbWF0cml4KTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIG1hdHJpeDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oCmluZGV4IDVjMTEyNTI4NzMxOTIwMmNhMDRkMjgyOTVkYTIyYTdjMWYy
ZGJjYTMuLmYzYjA5MDVmNTg5MjY0ZmY3NDk3NjkwMjI2NTU3YjFlNzI2NzlhODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTI1MSw2ICsy
NTEsOCBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsT2Zmc2V0RnJvbVJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdWJwaXhlbE9mZnNldEZyb21SZW5kZXJlcjsgfQogCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtTWF0cml4Rm9yUHJvcGVydHkoQW5pbWF0
ZWRQcm9wZXJ0eUlEKSBjb25zdCBmaW5hbDsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCBuZWVkc0lPU0R1bXBSZW5kZXJUcmVlTWFpbkZyYW1lUmVuZGVyVmlld0xheWVySXNB
bHdheXNPcGFxdWVIYWNrKGNvbnN0IEdyYXBoaWNzTGF5ZXImKSBjb25zdCBvdmVycmlkZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCBiZTZhMjZlNmE0N2IyMGEzZmFmZDUxMWQ3OTMzYWM1ZjU2Yzk0NWNlLi5j
ZmM0YWIxNTI4ODY3NTFjYzc2NjJkMjUxOTQzZjViNjEwOGYxNGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk3Miw2
ICsyOTcyLDkgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICNpZiBFTkFCTEUoRklMVEVSU19M
RVZFTF8yKQogICAgICAgICAgICAgICAgIHx8IGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlBZmZl
Y3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKQogI2VuZGlmCisg
ICAgICAgICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3Bl
cnR5KENTU1Byb3BlcnR5VHJhbnNsYXRlKQorICAgICAgICAgICAgICAgIHx8IGVmZmVjdHNTdGFj
ay0+aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eVNjYWxlKQorICAgICAg
ICAgICAgICAgIHx8IGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShD
U1NQcm9wZXJ0eVJvdGF0ZSkKICAgICAgICAgICAgICAgICB8fCBlZmZlY3RzU3RhY2stPmlzQ3Vy
cmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICB9
CiAgICAgfQpAQCAtMzUxNyw3ICszNTIwLDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojppc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYKIAog
ICAgIGlmIChhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJvbVJlbmRlcmVyKHJlbmRlcmVy
KSkgewogICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gc3R5bGVhYmxlLT5rZXlmcmFt
ZUVmZmVjdFN0YWNrKCkpCi0gICAgICAgICAgICByZXR1cm4gZWZmZWN0c1N0YWNrLT5pc0N1cnJl
bnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IHJldHVybiBlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJv
cGVydHlUcmFuc2Zvcm0pCisgICAgICAgICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJl
bnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5Um90YXRlKQorICAgICAgICAgICAgICAg
IHx8IGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0
eVNjYWxlKQorICAgICAgICAgICAgICAgIHx8IGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlBZmZl
Y3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zbGF0ZSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxD
aGFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdl
RGF0YS5jcHAKaW5kZXggNjc5NDhhYTE5ZGE1OGU0YTNlNWQ1ZTIzY2ZlMGQwN2U2ZGQ4ZDI4Zi4u
Njc4NDgxYTIxNmFlNTY0MWRkZGQ4NzliZDVlODA3ZjQwM2E2Y2Q3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxDaGFuZ2VEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwCkBAIC0xMjAsNiAr
MTIwLDkgQEAgc3RhdGljIGJvb2wgcHJvcGVydHlUcmlnZ2Vyc0NvbXBvc2l0aW5nT25Cb3hlc09u
bHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKICAgICAvLyBTaW1pbGFybHksIHdlIGRvbid0IHdh
bnQgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmctdG91Y2ggdG8KICAgICAvLyBhbHdheXMgY29t
cG9zaXRlIGlmIHRoZXJlJ3Mgbm8gc2Nyb2xsYWJsZSBvdmVyZmxvdy4KICAgICBzd2l0Y2ggKHBy
b3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjYWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlSb3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zbGF0ZToKICAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNmb3JtOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDg3MzI1MDkyM2ZkZDU3ZTc5YzM3YmRhNDMwNDEzY2I1MTIzY2FiNmIuLmIxZDk2OGFlMGQ0
ZTYxMTU0NGVmOTFkYzFmOWM0OWJiMjY3YzMyZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAy
MC0xMC0xNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBT
dXBwb3J0IGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvZiBpbmRpdmlkdWFsIHRyYW5zZm9ybSBDU1Mg
cHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM5MTkxND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc29tZSBuZXcgdGVzdHMg
dGhhdCBjaGVjayBhbmltYXRpb25zIG9mIGluZGl2aWR1YWwgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0
aWVzIGNhbiBiZSBwZXJmb3JtZWQsCisgICAgICAgIGNoZWNraW5nIG9uIHRoZWlyIHJlbGF0aXZl
IG9yZGVyIHdpdGggdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eSwgdXBkYXRpbmcgdGhlIHRyYW5zZm9y
bSBwcm9wZXJ0eSB3aGlsZQorICAgICAgICBhbiBhbmltYXRpb24gaXMgaW4gZmxpZ2h0IGFuZCBh
ZGRpbmcgYW5pbWF0aW9ucyB3aGlsZSBpbiBmbGlnaHQuCisKKyAgICAgICAgKiB3ZWJhbmltYXRp
b25zL2FjY2VsZXJhdGVkLXRyYW5zZm9ybS1yZWxhdGVkLWFuaW1hdGlvbi1wcm9wZXJ0eS1vcmRl
ci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2VsZXJh
dGVkLXRyYW5zZm9ybS1yZWxhdGVkLWFuaW1hdGlvbi1wcm9wZXJ0eS1vcmRlci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRp
b24tYWRkaXRpb25hbC1hbmltYXRpb24tYWRkZWQtaW4tZmxpZ2h0LWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1h
dGlvbi1hZGRpdGlvbmFsLWFuaW1hdGlvbi1hZGRlZC1pbi1mbGlnaHQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQt
dHJhbnNsYXRlLWFuaW1hdGlvbi11bmRlcmx5aW5nLXRyYW5zZm9ybS1jaGFuZ2VkLWluLWZsaWdo
dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2VsZXJh
dGVkLXRyYW5zbGF0ZS1hbmltYXRpb24tdW5kZXJseWluZy10cmFuc2Zvcm0tY2hhbmdlZC1pbi1m
bGlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10
cmFuc2xhdGUtYW5pbWF0aW9uLXdpdGgtdHJhbnNmb3JtLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi13
aXRoLXRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2Vs
ZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjAtMTAtMTUgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRpbmcgYW4g
aW5kaXZpZHVhbCB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5IGhhcyBubyB2aXN1YWwgY2hhbmdlIHdo
ZW4gY29tcG9zaXRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZmQ3YjI5YTAx
YmUwNDVmYWQ4YmZkNWZhYjM4NGNmZDk2ZTU4NzBjYy4uODQyZGU5NjU3YTM5MjRkMzc3NzIwZDE4
ODdjMDU1ZWViZTFhNzc5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMjAtMTAtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgU3VwcG9ydCBhY2NlbGVyYXRlZCBhbmltYXRpb24gb2YgaW5kaXZpZHVhbCB0
cmFuc2Zvcm0gQ1NTIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNzg0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAzOTE5MTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi9yb3RhdGUtaW50ZXJw
b2xhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vc2NhbGUtaW50ZXJwb2xhdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRp
b24vdHJhbnNsYXRlLWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0OgorCiAyMDIwLTEwLTE0ICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
ZmxleGJveF0gZmxleC1ncm93IHByb3BlcnR5IHNob3VsZCBiZSBhbmltYXRhYmxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9hbmltYXRpb24vcm90YXRlLWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvYW5pbWF0aW9uL3JvdGF0ZS1pbnRlcnBvbGF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA0
ZDAyMDY0YTgxNDY3MGM5ZWM1MmU1MjE4ZDI1MjhiODNiMThkMjZmLi5mYTRiNzE5M2I0OWQ0NDU0
OTUwMWViYjgyOTY3NmU3ODYwNzU2YjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vcm90
YXRlLWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi9yb3Rh
dGUtaW50ZXJwb2xhdGlvbi1leHBlY3RlZC50eHQKQEAgLTEzNywxMCArMTM3LDEwIEBAIFBBU1Mg
Q1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxyb3RhdGU+IGZyb20gbmV1dHJhbCB0byBbMzBkZWdd
IGF0ICgwLjI1KSBzaG91bGQKIFBBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxyb3RhdGU+
IGZyb20gbmV1dHJhbCB0byBbMzBkZWddIGF0ICgwLjc1KSBzaG91bGQgYmUgWzI1ZGVnXQogUEFT
UyBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBuZXV0cmFsIHRvIFszMGRl
Z10gYXQgKDEpIHNob3VsZCBiZSBbMzBkZWddCiBQQVNTIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0
eSA8cm90YXRlPiBmcm9tIG5ldXRyYWwgdG8gWzMwZGVnXSBhdCAoMikgc2hvdWxkIGJlIFs1MGRl
Z10KLVBBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxyb3RhdGU+IGZyb20gbmV1dHJhbCB0
byBbMzBkZWddIGF0ICgtMSkgc2hvdWxkIGJlIFstMTBkZWddCitGQUlMIFdlYiBBbmltYXRpb25z
OiBwcm9wZXJ0eSA8cm90YXRlPiBmcm9tIG5ldXRyYWwgdG8gWzMwZGVnXSBhdCAoLTEpIHNob3Vs
ZCBiZSBbLTEwZGVnXSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiLSAxMGRlZyAiIGJ1dCBnb3Qg
Ii0gNTBkZWcgIgogRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBu
ZXV0cmFsIHRvIFszMGRlZ10gYXQgKDApIHNob3VsZCBiZSBbMTBkZWddIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIxMGRlZyAiIGJ1dCBnb3QgIi0gMTBkZWcgIgotRkFJTCBXZWIgQW5pbWF0aW9u
czogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBuZXV0cmFsIHRvIFszMGRlZ10gYXQgKDAuMjUpIHNo
b3VsZCBiZSBbMTVkZWddIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxNWRlZyAiIGJ1dCBnb3Qg
Im5vbmUgIgotRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBuZXV0
cmFsIHRvIFszMGRlZ10gYXQgKDAuNzUpIHNob3VsZCBiZSBbMjVkZWddIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIyNWRlZyAiIGJ1dCBnb3QgIjIyLjVkZWcgIgorRkFJTCBXZWIgQW5pbWF0aW9u
czogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBuZXV0cmFsIHRvIFszMGRlZ10gYXQgKDAuMjUpIHNo
b3VsZCBiZSBbMTVkZWddIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxNWRlZyAiIGJ1dCBnb3Qg
IjcuNWRlZyAiCitGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8cm90YXRlPiBmcm9tIG5l
dXRyYWwgdG8gWzMwZGVnXSBhdCAoMC43NSkgc2hvdWxkIGJlIFsyNWRlZ10gYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgIjI1ZGVnICIgYnV0IGdvdCAiMjguMTNkZWcgIgogUEFTUyBXZWIgQW5pbWF0
aW9uczogcHJvcGVydHkgPHJvdGF0ZT4gZnJvbSBuZXV0cmFsIHRvIFszMGRlZ10gYXQgKDEpIHNo
b3VsZCBiZSBbMzBkZWddCiBGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8cm90YXRlPiBm
cm9tIG5ldXRyYWwgdG8gWzMwZGVnXSBhdCAoMikgc2hvdWxkIGJlIFs1MGRlZ10gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIjUwZGVnICIgYnV0IGdvdCAiMzBkZWcgIgogUEFTUyBDU1MgVHJhbnNp
dGlvbnM6IHByb3BlcnR5IDxyb3RhdGU+IGZyb20gW2luaGVyaXRdIHRvIFsyNzBkZWddIGF0ICgt
MSkgc2hvdWxkIGJlIFstOTBkZWddCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vc2NhbGUt
aW50ZXJwb2xhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vc2NhbGUtaW50ZXJw
b2xhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggYTQyZmQ1OTBkOTllYzM0YWYxYjMwZGYyNDI4ZGI3
ZjY1NzY5YjU5Yy4uMDNkNDQ0MWM3YjU5MDczYmFiYzk3Nzg1ODU2ODBkN2JjNjVhYmE4MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3NjYWxlLWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2Zvcm1zL2FuaW1hdGlvbi9zY2FsZS1pbnRlcnBvbGF0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMTg1LDEwICsxODUsMTAgQEAgUEFTUyBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPHNjYWxl
PiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAxXSBhdCAoMC4yNSkgc2hvdWxkIGIKIFBBU1MgQ1NTIEFu
aW1hdGlvbnM6IHByb3BlcnR5IDxzY2FsZT4gZnJvbSBuZXV0cmFsIHRvIFsxLjUgMV0gYXQgKDAu
NzUpIHNob3VsZCBiZSBbMS40IDFdCiBQQVNTIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0eSA8c2Nh
bGU+IGZyb20gbmV1dHJhbCB0byBbMS41IDFdIGF0ICgxKSBzaG91bGQgYmUgWzEuNSAxXQogUEFT
UyBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPHNjYWxlPiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAx
XSBhdCAoMikgc2hvdWxkIGJlIFsxLjkgMV0KLVBBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5
IDxzY2FsZT4gZnJvbSBuZXV0cmFsIHRvIFsxLjUgMV0gYXQgKC0xKSBzaG91bGQgYmUgWzAuNyAx
XQorRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHNjYWxlPiBmcm9tIG5ldXRyYWwgdG8g
WzEuNSAxXSBhdCAoLTEpIHNob3VsZCBiZSBbMC43IDFdIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICIwLjcgMSAiIGJ1dCBnb3QgIi0gMC4xIDEgIgogRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVy
dHkgPHNjYWxlPiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAxXSBhdCAoMCkgc2hvdWxkIGJlIFsxLjEg
MV0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEuMSAxICIgYnV0IGdvdCAiMC43IDEgIgotRkFJ
TCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHNjYWxlPiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAx
XSBhdCAoMC4yNSkgc2hvdWxkIGJlIFsxLjIgMV0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEu
MiAxICIgYnV0IGdvdCAiMC45IDEgIgotRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHNj
YWxlPiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAxXSBhdCAoMC43NSkgc2hvdWxkIGJlIFsxLjQgMV0g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEuNCAxICIgYnV0IGdvdCAiMS4zNSAxICIKK0ZBSUwg
V2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxzY2FsZT4gZnJvbSBuZXV0cmFsIHRvIFsxLjUgMV0g
YXQgKDAuMjUpIHNob3VsZCBiZSBbMS4yIDFdIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxLjIg
MSAiIGJ1dCBnb3QgIjEuMDUgMSAiCitGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8c2Nh
bGU+IGZyb20gbmV1dHJhbCB0byBbMS41IDFdIGF0ICgwLjc1KSBzaG91bGQgYmUgWzEuNCAxXSBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMS40IDEgIiBidXQgZ290ICIxLjQ2IDEgIgogUEFTUyBX
ZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHNjYWxlPiBmcm9tIG5ldXRyYWwgdG8gWzEuNSAxXSBh
dCAoMSkgc2hvdWxkIGJlIFsxLjUgMV0KIEZBSUwgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxz
Y2FsZT4gZnJvbSBuZXV0cmFsIHRvIFsxLjUgMV0gYXQgKDIpIHNob3VsZCBiZSBbMS45IDFdIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICIxLjkgMSAiIGJ1dCBnb3QgIjEuNSAxICIKIFBBU1MgQ1NT
IFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8c2NhbGU+IGZyb20gW2luaXRpYWxdIHRvIFsyIDAuNSAx
XSBhdCAoLTEpIHNob3VsZCBiZSBbMCAxLjVdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24v
dHJhbnNsYXRlLWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3Ry
YW5zbGF0ZS1pbnRlcnBvbGF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBlYTk4NTg3ODA3ZWIzYzVh
MzZmMDJjNzJmZjhiM2I0ZWE2YTI5MGQ1Li5iNDU1M2VkNTNmZGEyOTUzNWY5Yzg0Yzc1ODkxMTNl
NzZlMDZlMjczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNsYXRlLWludGVycG9s
YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90cmFuc2xhdGUtaW50ZXJw
b2xhdGlvbi1leHBlY3RlZC50eHQKQEAgLTIzMywxMCArMjMzLDEwIEBAIFBBU1MgQ1NTIEFuaW1h
dGlvbnM6IHByb3BlcnR5IDx0cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0byBbMjBweF0gYXQgKDAu
MjUpIHNob3VsCiBQQVNTIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0eSA8dHJhbnNsYXRlPiBmcm9t
IG5ldXRyYWwgdG8gWzIwcHhdIGF0ICgwLjc1KSBzaG91bGQgYmUgWzE3LjVweF0KIFBBU1MgQ1NT
IEFuaW1hdGlvbnM6IHByb3BlcnR5IDx0cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0byBbMjBweF0g
YXQgKDEpIHNob3VsZCBiZSBbMjBweF0KIFBBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDx0
cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0byBbMjBweF0gYXQgKDIpIHNob3VsZCBiZSBbMzBweF0K
LVBBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDx0cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0
byBbMjBweF0gYXQgKC0xKSBzaG91bGQgYmUgWzBweF0KK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHBy
b3BlcnR5IDx0cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0byBbMjBweF0gYXQgKC0xKSBzaG91bGQg
YmUgWzBweF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIm5vbmUgIiBidXQgZ290ICItIDIwcHgg
IgogRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHRyYW5zbGF0ZT4gZnJvbSBuZXV0cmFs
IHRvIFsyMHB4XSBhdCAoMCkgc2hvdWxkIGJlIFsxMHB4XSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMTBweCAiIGJ1dCBnb3QgIm5vbmUgIgotRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkg
PHRyYW5zbGF0ZT4gZnJvbSBuZXV0cmFsIHRvIFsyMHB4XSBhdCAoMC4yNSkgc2hvdWxkIGJlIFsx
Mi41cHhdIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMi41cHggIiBidXQgZ290ICI1cHggIgot
RkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPHRyYW5zbGF0ZT4gZnJvbSBuZXV0cmFsIHRv
IFsyMHB4XSBhdCAoMC43NSkgc2hvdWxkIGJlIFsxNy41cHhdIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICIxNy41cHggIiBidXQgZ290ICIxNi4yNXB4ICIKK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHBy
b3BlcnR5IDx0cmFuc2xhdGU+IGZyb20gbmV1dHJhbCB0byBbMjBweF0gYXQgKDAuMjUpIHNob3Vs
ZCBiZSBbMTIuNXB4XSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTIuNXB4ICIgYnV0IGdvdCAi
OC43NXB4ICIKK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDx0cmFuc2xhdGU+IGZyb20g
bmV1dHJhbCB0byBbMjBweF0gYXQgKDAuNzUpIHNob3VsZCBiZSBbMTcuNXB4XSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMTcuNXB4ICIgYnV0IGdvdCAiMTkuMDZweCAiCiBQQVNTIFdlYiBBbmlt
YXRpb25zOiBwcm9wZXJ0eSA8dHJhbnNsYXRlPiBmcm9tIG5ldXRyYWwgdG8gWzIwcHhdIGF0ICgx
KSBzaG91bGQgYmUgWzIwcHhdCiBGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8dHJhbnNs
YXRlPiBmcm9tIG5ldXRyYWwgdG8gWzIwcHhdIGF0ICgyKSBzaG91bGQgYmUgWzMwcHhdIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICIzMHB4ICIgYnV0IGdvdCAiMjBweCAiCiBQQVNTIENTUyBUcmFu
c2l0aW9uczogcHJvcGVydHkgPHRyYW5zbGF0ZT4gZnJvbSBbaW5pdGlhbF0gdG8gWzIwMHB4IDEw
MHB4IDIwMHB4XSBhdCAoLTEpIHNob3VsZCBiZSBbLTIwMHB4IC0xMDBweCAtMjAwcHhdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zZm9ybS1y
ZWxhdGVkLWFuaW1hdGlvbi1wcm9wZXJ0eS1vcmRlci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2Zvcm0tcmVsYXRlZC1hbmltYXRpb24t
cHJvcGVydHktb3JkZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzI2ZDQ0YTFlMDc1NzZh
N2UwZDAwNjYzMTAyNmFiMWFmNjRlMmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2Zvcm0tcmVsYXRlZC1hbmltYXRpb24tcHJv
cGVydHktb3JkZXItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8c3R5bGU+CisKKyAg
ICAjdGFyZ2V0IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDA7
CisgICAgICAgIGxlZnQ6IDA7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgIHRyYW5z
Zm9ybTogdHJhbnNsYXRlWCgyNTBweCkgc2NhbGUoMS41KSB0cmFuc2xhdGVZKDEwMHB4KTsKKyAg
ICB9CisKKzwvc3R5bGU+Cis8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2Zvcm0tcmVsYXRlZC1hbmlt
YXRpb24tcHJvcGVydHktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNj
ZWxlcmF0ZWQtdHJhbnNmb3JtLXJlbGF0ZWQtYW5pbWF0aW9uLXByb3BlcnR5LW9yZGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzhkMzNhMjdlZmQ4MGJjZmUxZmRjODc0MjhmNjEwMzljYzhiNWM4MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJh
bnNmb3JtLXJlbGF0ZWQtYW5pbWF0aW9uLXByb3BlcnR5LW9yZGVyLmh0bWwKQEAgLTAsMCArMSwz
NSBAQAorPHN0eWxlPgorCisgICAgI3RhcmdldCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBsZWZ0OiAwOworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
YWNrOworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpOworICAgIH0KKworPC9z
dHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisoYXN5bmMgKCkgPT4geworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKKyAgICAvLyBTdGFydCBhbiBhbmltYXRpb24gdGhhdCBsYXN0cyBhIGRheS4KKyAgICBj
b25zdCBkdXJhdGlvbiA9IDI0ICogNjAgKiA2MCAqIDEwMDA7CisgICAgY29uc3QgYW5pbWF0aW9u
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFuaW1hdGUoeyB0cmFuc2xhdGU6
ICI1MDBweCIsIHNjYWxlOiAiMiIgfSwgZHVyYXRpb24pOworICAgIGFuaW1hdGlvbi5jdXJyZW50
VGltZSA9IGR1cmF0aW9uIC8gMjsKKworICAgIC8vIFdhaXQgdW50aWwgdGhlIGFuaW1hdGlvbiBo
YXMgYmVlbiBhcHBsaWVkLgorICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsKKyAgICBhd2FpdCBV
SUhlbHBlci5lbnN1cmVTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoKTsKKworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KSgpOwor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi1hZGRpdGlvbmFsLWFuaW1hdGlvbi1hZGRlZC1pbi1m
bGlnaHQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0
ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi1hZGRpdGlvbmFsLWFuaW1hdGlvbi1hZGRlZC1pbi1mbGln
aHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGE1OWQ0NzgwZTk2NWU5MzI1YTQzMWQ5NTFk
MmY0ZGJkOGE0MTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9u
cy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLWFkZGl0aW9uYWwtYW5pbWF0aW9uLWFk
ZGVkLWluLWZsaWdodC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxzdHlsZT4KKwor
ICAgICN0YXJnZXQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDog
MDsKKyAgICAgICAgbGVmdDogMDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgdHJh
bnNmb3JtOiB0cmFuc2xhdGVYKDEwMHB4KSBzY2FsZSgwLjUpOworICAgIH0KKworPC9zdHlsZT4K
KzxkaXYgaWQ9InRhcmdldCI+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmlt
YXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24tYWRkaXRpb25hbC1hbmltYXRp
b24tYWRkZWQtaW4tZmxpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2Vs
ZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24tYWRkaXRpb25hbC1hbmltYXRpb24tYWRkZWQtaW4t
ZmxpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVmZDU0ZmYyNjU5YzQ3MmU3ZTdjYWVmM2JmZjY1MWQz
MDkwNDc4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNj
ZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi1hZGRpdGlvbmFsLWFuaW1hdGlvbi1hZGRlZC1p
bi1mbGlnaHQuaHRtbApAQCAtMCwwICsxLDQyIEBACis8c3R5bGU+CisKKyAgICAjdGFyZ2V0IHsK
KyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDA7CisgICAgICAgIGxl
ZnQ6IDA7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgfQorCis8L3N0eWxlPgorPGRpdiBp
ZD0idGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisKKyhhc3luYyAoKSA9PiB7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8v
IFN0YXJ0IGFuIGFuaW1hdGlvbiB0aGF0IGxhc3RzIGEgZGF5LgorICAgIGNvbnN0IGR1cmF0aW9u
ID0gMjQgKiA2MCAqIDYwICogMTAwMDsKKyAgICBjb25zdCB0cmFuc2xhdGVBbmltYXRpb24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYW5pbWF0ZSh7IHRyYW5zbGF0ZTogIjIw
MHB4IiB9LCBkdXJhdGlvbik7CisgICAgdHJhbnNsYXRlQW5pbWF0aW9uLmN1cnJlbnRUaW1lID0g
ZHVyYXRpb24gLyAyOworCisgICAgLy8gV2FpdCB1bnRpbCB0aGUgYW5pbWF0aW9uIGhhcyBiZWVu
IGFwcGxpZWQuCisgICAgYXdhaXQgdHJhbnNsYXRlQW5pbWF0aW9uLnJlYWR5OworICAgIGF3YWl0
IFVJSGVscGVyLmVuc3VyZVN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZSgpOworCisgICAgLy8gQWRk
IGFuIGV4dHJhIGFuaW1hdGlvbi4KKyAgICBjb25zdCBzY2FsZUFuaW1hdGlvbiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5hbmltYXRlKHsgc2NhbGU6ICIwIiB9LCBkdXJhdGlv
bik7CisgICAgc2NhbGVBbmltYXRpb24uY3VycmVudFRpbWUgPSBkdXJhdGlvbiAvIDI7CisKKyAg
ICAvLyBXYWl0IHVudGlsIHRoZSBuZXcgYW5pbWF0aW9uIGhhcyBiZWVuIGFwcGxpZWQuCisgICAg
YXdhaXQgc2NhbGVBbmltYXRpb24ucmVhZHk7CisgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlU3Rh
YmxlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSkoKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1h
bmltYXRpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNGUy
ZjViMmEwZmQ4NjllZTFkYTBmMWIzMjY2YTNhY2M1MjBmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24t
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8c3R5bGU+CisKKyAgICAjdGFyZ2V0IHsK
KyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDA7CisgICAgICAgIGxl
ZnQ6IDA7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgIHRyYW5zZm9ybTogdHJhbnNs
YXRlWCgxMDBweCk7CisgICAgfQorCis8L3N0eWxlPgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNs
YXRlLWFuaW1hdGlvbi11bmRlcmx5aW5nLXRyYW5zZm9ybS1jaGFuZ2VkLWluLWZsaWdodC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2xh
dGUtYW5pbWF0aW9uLXVuZGVybHlpbmctdHJhbnNmb3JtLWNoYW5nZWQtaW4tZmxpZ2h0LWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU4ZTI4YmIxYWM3OTY2NzU5Y2RkNjc3OWIzMDgwNWUzODM5
YWE3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi11bmRlcmx5aW5nLXRyYW5zZm9ybS1jaGFuZ2VkLWlu
LWZsaWdodC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxzdHlsZT4KKworICAgICN0
YXJnZXQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMDsKKyAg
ICAgICAgbGVmdDogMDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgdHJhbnNmb3Jt
OiB0cmFuc2xhdGUoMTAwcHgsIDEwMHB4KTsKKyAgICB9CisKKzwvc3R5bGU+Cis8ZGl2IGlkPSJ0
YXJnZXQiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2Nl
bGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLXVuZGVybHlpbmctdHJhbnNmb3JtLWNoYW5nZWQt
aW4tZmxpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRy
YW5zbGF0ZS1hbmltYXRpb24tdW5kZXJseWluZy10cmFuc2Zvcm0tY2hhbmdlZC1pbi1mbGlnaHQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNWY2NGZkM2NlOTM1ZTUzMTc4Y2JjZmYzNzExYWIwYjBlMWE5ZTA3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRl
ZC10cmFuc2xhdGUtYW5pbWF0aW9uLXVuZGVybHlpbmctdHJhbnNmb3JtLWNoYW5nZWQtaW4tZmxp
Z2h0Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPHN0eWxlPgorCisgICAgI3RhcmdldCB7CisgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBsZWZ0OiAw
OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIH0KKworPC9zdHlsZT4KKzxkaXYgaWQ9InRh
cmdldCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCisoYXN5bmMgKCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBTdGFy
dCBhbiBhbmltYXRpb24gdGhhdCBsYXN0cyBhIGRheS4KKyAgICBjb25zdCBkdXJhdGlvbiA9IDI0
ICogNjAgKiA2MCAqIDEwMDA7CisgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpOworICAgIGNvbnN0IGFuaW1hdGlvbiA9IHRhcmdldC5hbmltYXRlKHsg
dHJhbnNsYXRlOiAiMjAwcHgiIH0sIGR1cmF0aW9uKTsKKyAgICBhbmltYXRpb24uY3VycmVudFRp
bWUgPSBkdXJhdGlvbiAvIDI7CisKKyAgICAvLyBXYWl0IHVudGlsIHRoZSBhbmltYXRpb24gaGFz
IGJlZW4gYXBwbGllZC4KKyAgICBhd2FpdCBhbmltYXRpb24ucmVhZHk7CisgICAgYXdhaXQgVUlI
ZWxwZXIuZW5zdXJlU3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisKKyAgICAvLyBDaGFuZ2Ug
dGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4KKyAgICB0YXJnZXQuc3R5bGUudHJhbnNmb3JtID0gInRy
YW5zbGF0ZVkoMTAwcHgpIjsKKworICAgIC8vIFdhaXQgdW50aWwgdGhhdCBjaGFuZ2Ugd2FzIG1h
ZGUuCisgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlU3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKCk7
CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworfSkoKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
bmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmltYXRpb24td2l0aC10cmFuc2Zvcm0t
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJh
bnNsYXRlLWFuaW1hdGlvbi13aXRoLXRyYW5zZm9ybS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZjNGE2ZTE1MTlhY2VlMDdmNmUwMTYyN2VmZDAzNDlmY2U2ZTQwNTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLXRyYW5zbGF0ZS1hbmlt
YXRpb24td2l0aC10cmFuc2Zvcm0tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8c3R5
bGU+CisKKyAgICAjdGFyZ2V0IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICB0b3A6IDA7CisgICAgICAgIGxlZnQ6IDA7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAg
ICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNTBweCk7CisgICAgfQorCis8L3N0eWxlPgorPGRp
diBpZD0idGFyZ2V0Ij48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlv
bnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi13aXRoLXRyYW5zZm9ybS5odG1sIGIv
TGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9u
LXdpdGgtdHJhbnNmb3JtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk2Zjk1Mjg2YWIwNmM3OTBmZDg0ZmQ0
MDA3NTRhNmMzMzc4N2VhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1h
dGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi13aXRoLXRyYW5zZm9ybS5odG1s
CkBAIC0wLDAgKzEsMzUgQEAKKzxzdHlsZT4KKworICAgICN0YXJnZXQgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVmdDogMDsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwcHgpOwor
ICAgIH0KKworPC9zdHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisoYXN5bmMg
KCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBTdGFydCBhbiBhbmltYXRpb24gdGhhdCBsYXN0cyBh
IGRheS4KKyAgICBjb25zdCBkdXJhdGlvbiA9IDI0ICogNjAgKiA2MCAqIDEwMDA7CisgICAgY29u
c3QgYW5pbWF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFuaW1hdGUo
eyB0cmFuc2xhdGU6ICIyMDBweCIgfSwgZHVyYXRpb24pOworICAgIGFuaW1hdGlvbi5jdXJyZW50
VGltZSA9IGR1cmF0aW9uIC8gMjsKKworICAgIC8vIFdhaXQgdW50aWwgdGhlIGFuaW1hdGlvbiBo
YXMgYmVlbiBhcHBsaWVkLgorICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsKKyAgICBhd2FpdCBV
SUhlbHBlci5lbnN1cmVTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoKTsKKworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KSgpOwor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9u
cy9hY2NlbGVyYXRlZC10cmFuc2xhdGUtYW5pbWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVkZTdk
ZTVhYzQxZTY0MDlkMjdhMjIwNzIyZmY4YWY5MWIzZjA3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtdHJhbnNsYXRlLWFuaW1hdGlvbi5o
dG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxzdHlsZT4KKworICAgICN0YXJnZXQgeworICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVmdDogMDsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICB9CisKKzwvc3R5bGU+Cis8ZGl2IGlkPSJ0YXJnZXQi
PjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworKGFzeW5jICgpID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gU3RhcnQgYW4g
YW5pbWF0aW9uIHRoYXQgbGFzdHMgYSBkYXkuCisgICAgY29uc3QgZHVyYXRpb24gPSAyNCAqIDYw
ICogNjAgKiAxMDAwOworICAgIGNvbnN0IGFuaW1hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKS5hbmltYXRlKHsgdHJhbnNsYXRlOiAiMjAwcHgiIH0sIGR1cmF0aW9uKTsK
KyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSBkdXJhdGlvbiAvIDI7CisKKyAgICAvLyBXYWl0
IHVudGlsIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gYXBwbGllZC4KKyAgICBhd2FpdCBhbmltYXRp
b24ucmVhZHk7CisgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlU3RhYmxlUHJlc2VudGF0aW9uVXBk
YXRlKCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfSkoKTsKKworPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="427879"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="427892"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>