<?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>215143</bug_id>
          
          <creation_ts>2020-08-04 15:08:20 -0700</creation_ts>
          <short_desc>Make GlyphBufferAdvance and GlyphBufferOrigin more robust</short_desc>
          <delta_ts>2020-09-07 09:49:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>206208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1677760</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-04 15:08:20 -0700</bug_when>
    <thetext>Make GlyphBufferAdvance and GlyphBufferOrigin more robust</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677793</commentid>
    <comment_count>1</comment_count>
      <attachid>405957</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-04 16:14:21 -0700</bug_when>
    <thetext>Created attachment 405957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677796</commentid>
    <comment_count>2</comment_count>
      <attachid>405959</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-04 16:21:39 -0700</bug_when>
    <thetext>Created attachment 405959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677805</commentid>
    <comment_count>3</comment_count>
      <attachid>405959</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-04 16:53:46 -0700</bug_when>
    <thetext>Comment on attachment 405959
Patch

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

Thanks for considering my suggestion.

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:90
&gt; +        m_origins.append(createGlyphBufferOrigin());

m_origins.append({ });

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:110
&gt; +        m_origins.insertVector(location, Vector&lt;GlyphBufferOrigin&gt;(length, createGlyphBufferOrigin()));

Can just use { } here.

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:153
&gt; +            m_advances[i] = createGlyphBufferAdvance(FloatSize(

Maybe overload makeGlyphBufferAdvance so we don’t need to cast to FloatSize here? And/or just use { } instead of FloatSize().

&gt; Source/WebCore/platform/graphics/GlyphBufferMembers.h:72
&gt; +inline GlyphBufferAdvance createGlyphBufferAdvance(const FloatSize&amp; = FloatSize());
&gt; +inline FloatSize floatSizeFromGlyphBufferAdvance(const GlyphBufferAdvance&amp;);
&gt; +inline void setGlyphBufferAdvanceWidth(GlyphBufferAdvance&amp;, float);
&gt; +inline void setGlyphBufferAdvanceHeight(GlyphBufferAdvance&amp;, float);
&gt; +inline float glyphBufferAdvanceWidth(const GlyphBufferAdvance&amp;);
&gt; +inline float glyphBufferAdvanceHeight(const GlyphBufferAdvance&amp;);
&gt; +inline GlyphBufferOrigin createGlyphBufferOrigin(const FloatPoint&amp; = FloatPoint());
&gt; +inline FloatPoint floatPointFromGlyphBufferOrigin(const GlyphBufferOrigin&amp;);
&gt; +inline void setGlyphBufferOriginX(GlyphBufferOrigin&amp;, float);
&gt; +inline void setGlyphBufferOriginY(GlyphBufferOrigin&amp;, float);
&gt; +inline float glyphBufferOriginX(const GlyphBufferOrigin&amp;);
&gt; +inline float glyphBufferOriginY(const GlyphBufferOrigin&amp;);

In WebKit, I generally suggest reserving the word create for things that are heap-allocated and use make for things that are not. Also, because C++ has overloading, a lot of these functions could have shorter names. I suggest these names:

    makeGlyphBufferAdvance
    size
    setWidth
    setHeight
    width
    height
    makeGlyphBufferOrigin
    point
    setX
    setY
    x
    y

It’s possible these names are *too* short, but I think we should try to get closer to these names. Code won’t be readable if the names are too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677820</commentid>
    <comment_count>4</comment_count>
      <attachid>405959</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-04 17:26:55 -0700</bug_when>
    <thetext>Comment on attachment 405959
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:90
&gt;&gt; +        m_origins.append(createGlyphBufferOrigin());
&gt; 
&gt; m_origins.append({ });

Will this actually zero-fill a CGPoint struct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677834</commentid>
    <comment_count>5</comment_count>
      <attachid>405959</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-04 17:54:57 -0700</bug_when>
    <thetext>Comment on attachment 405959
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:90
&gt;&gt;&gt; +        m_origins.append(createGlyphBufferOrigin());
&gt;&gt; 
&gt;&gt; m_origins.append({ });
&gt; 
&gt; Will this actually zero-fill a CGPoint struct?

Yes.

Roughly speaking, there are only a few ways to *not* initialize scalars, and the mostly get zero-initialized.

In the specific case of CGPoint and { }, this technically is aggregate initialization. Since the number of initializer clauses (0) is less than the number of members (2) the remaining members are value-initialized, which for scalars means they are zero-initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677882</commentid>
    <comment_count>6</comment_count>
      <attachid>405984</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-04 21:49:54 -0700</bug_when>
    <thetext>Created attachment 405984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679593</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-11 15:09:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/66864884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686066</commentid>
    <comment_count>8</comment_count>
      <attachid>405984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-05 08:20:05 -0700</bug_when>
    <thetext>Comment on attachment 405984
Patch

This is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686163</commentid>
    <comment_count>9</comment_count>
      <attachid>408113</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-05 21:15:40 -0700</bug_when>
    <thetext>Created attachment 408113
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686164</commentid>
    <comment_count>10</comment_count>
      <attachid>408114</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-05 21:34:10 -0700</bug_when>
    <thetext>Created attachment 408114
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686229</commentid>
    <comment_count>11</comment_count>
      <attachid>408137</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-06 15:09:20 -0700</bug_when>
    <thetext>Created attachment 408137
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686257</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-06 16:30:56 -0700</bug_when>
    <thetext>I see what&apos;s happening. I need to initialize m_initialAdvance to (0, 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686260</commentid>
    <comment_count>13</comment_count>
      <attachid>408150</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-06 16:47:42 -0700</bug_when>
    <thetext>Created attachment 408150
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686263</commentid>
    <comment_count>14</comment_count>
      <attachid>408150</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-06 16:54:58 -0700</bug_when>
    <thetext>Comment on attachment 408150
Patch for committing

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

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:216
&gt; +    GlyphBufferAdvance m_initialAdvance { makeGlyphBufferAdvance() };

I would have expected that just empty braces, { }, would do the trick here; surprised that a call to makeGlyphBufferAdvance() is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686279</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-06 17:52:57 -0700</bug_when>
    <thetext>Committed r266688: &lt;https://trac.webkit.org/changeset/266688&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408150.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686286</commentid>
    <comment_count>16</comment_count>
      <attachid>408150</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-09-06 18:05:08 -0700</bug_when>
    <thetext>Comment on attachment 408150
Patch for committing

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

&gt;&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:216
&gt;&gt; +    GlyphBufferAdvance m_initialAdvance { makeGlyphBufferAdvance() };
&gt; 
&gt; I would have expected that just empty braces, { }, would do the trick here; surprised that a call to makeGlyphBufferAdvance() is needed.

Me too! But this looks like the reason why the obsoleted patches were red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686374</commentid>
    <comment_count>17</comment_count>
      <attachid>408150</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-07 09:49:54 -0700</bug_when>
    <thetext>Comment on attachment 408150
Patch for committing

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:216
&gt;&gt;&gt; +    GlyphBufferAdvance m_initialAdvance { makeGlyphBufferAdvance() };
&gt;&gt; 
&gt;&gt; I would have expected that just empty braces, { }, would do the trick here; surprised that a call to makeGlyphBufferAdvance() is needed.
&gt; 
&gt; Me too! But this looks like the reason why the obsoleted patches were red.

In those obsoleted patches there were no braces at all.

That would leave it uninitialized.

My point is that you do need the braces but don’t need the function call.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405957</attachid>
            <date>2020-08-04 16:14:21 -0700</date>
            <delta_ts>2020-08-04 16:21:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215143-20200804161420.patch</filename>
            <type>text/plain</type>
            <size>50840</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI2YmRlODM1ZWVjNzM2
YjQ1YzlkZTFjODMwNGUzMDdiMTY3ZGU0ZS4uYTBjZjQxMjU2Yzg4NjllNzVmZWE0M2E5ODc1Y2Y0
YTk3ZGVlMjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA4LTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHbHlwaEJ1ZmZlciBjb250
YWlucyB2ZWN0b3JzIG9mIGFkdmFuY2VzIGFuZCBvcmlnaW5zLCB3aGljaCBhcmUgY29uY2VwdHVh
bGx5CisgICAgICAgIEZsb2F0U2l6ZXMgYW5kIEZsb2F0UG9pbnRzLiBIb3dldmVyLCB3ZSBuZWVk
IHRvIHBhc3MgdGhlc2UgYXJyYXlzIGludG8gQ1RGb250U2hhcGVHbHlwaHMoKQorICAgICAgICBv
ciBDVEZvbnRUcmFuc2Zvcm1HbHlwaHNXaXRoTGFuZ3VhZ2UoKSwgd2hpY2ggZXhwZWN0cyB0aGVz
ZSB2ZWN0b3JzIHRvIHVzZSBwbGF0Zm9ybSB0eXBlcy4KKyAgICAgICAgUmF0aGVyIHRoYW4gY29u
dmVydGluZyBpbi9vdXQgb2YgcGxhdGZvcm0gdHlwZXMgYXJvdW5kIHRoZSBjYWxsIHNpdGUsIHdl
IGNhbiBzaW1wbHkgdXNlCisgICAgICAgIHRoZSBwbGF0Zm9ybSB0eXBlcyB0aHJvdWdob3V0LiBJ
bmRlZWQsIHRoYXQncyB3aGF0IHdlJ3JlIGRvaW5nIHRvZGF5LgorCisgICAgICAgIEhvd2V2ZXIs
IHRoZSBtZWNoYW5pc20gd2UgdXNlIHRvZGF5IHRvIG1ha2UgdGhpcyBwbGF0Zm9ybS1pbmRlcGVu
ZGVudCBpcyB0byBtYWtlIGEgc3RydWN0CisgICAgICAgIHdoaWNoIGluaGVyaXRzIGZyb20gdGhl
IHBsYXRmb3JtIHR5cGVzLiBUaGVuLCB3ZSBzdGF0aWNfY2FzdCB0aGUgYXJyYXkgb2YgdGhlIHN0
cnVjdCB0bworICAgICAgICBhbiBhcnJheSBvZiB0aGUgYmFzZSB0eXBlLiBUaGlzIGlzIGJyaXR0
bGUsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAg
IHN0cnVjdCBkb2Vzbid0IGhhdmUgYW55IG1lbWJlcnMgYWRkZWQgdG8gaXQsIHdoaWNoIHdvdWxk
IGNoYW5nZSB0aGUgc3RyaWRlIG9mIHRoZSBhcnJheQorICAgICAgICBhbmQgZmVlZCBnYXJiYWdl
IGludG8gdGhlIHNoYXBpbmcgZnVuY3Rpb24uCisKKyAgICAgICAgSW5zdGVhZCwgYSBiZXR0ZXIg
ZGVzaWduIGlzIHRvIHR5cGVkZWYgdGhlIG5hdGl2ZSB0eXBlLCBhbmQgaGF2ZSBhbGwgaW50ZXJh
Y3Rpb25zIHdpdGggdGhlCisgICAgICAgIHR5cGVzIGdvIHRocm91Z2ggc3RhbmRhbG9uZSBmdW5j
dGlvbnMgd2hpY2ggZGVhbCB3aXRoIHRoZSBuYXRpdmUgdHlwZS4gVGhhdCB3YXksIHdlIGNhbid0
CisgICAgICAgIGFjY2lkZW50YWxseSBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGFycmF5IGVsZW1l
bnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmFkdmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhU
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoVG9QYXRoVHJhbnNsYXRvcjo6ZXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
OjptYWtlSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6ZXhwYW5kTGFzdEFk
dmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmZsYXR0ZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpHbHlwaEJ1ZmZlckFkdmFuY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpvcGVyYXRvciBGbG9h
dFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6
OnNldEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFu
Y2U6OndpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
QWR2YW5jZTo6aGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
QnVmZmVyQWR2YW5jZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyT3JpZ2luOjpHbHlwaEJ1ZmZlck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6b3BlcmF0b3IgRmxvYXRQb2ludCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyT3JpZ2luOjpkZWNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dG9GbG9hdFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9h
dFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyQWR2
YW5jZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Zmxv
YXRQb2ludEZyb21HbHlwaEJ1ZmZlck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlw
aEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhCdWZmZXJPcmlnaW5Z
KToKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoQnVmZmVyT3JpZ2luWCk6CisgICAgICAgIChXZWJD
b3JlOjpnbHlwaEJ1ZmZlck9yaWdpblkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphZHZhbmNl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNo
YXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmNvbXB1dGVCb3VuZHMpOgorCiAyMDIwLTA4LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGdseXBoIG9yaWdpbnMgbWVtYmVyIHRv
IEdseXBoQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwNmUzNTE5YTBkNzRmZGNjMGEwZjAx
Y2RhOTg0NmZmZWYyOTg4ZmJiLi5lODA5OTc2MWUyYjllZjgyOTY3ODgyMDIzNTE5NTBlNTU4NGQ2
OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMjYsNiArMTEyNiw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRy
eVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGguaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ck1lbWJlcnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYmQ0N2ZlNWFkZmI1YjgyMDJkZDM0OTVlNDc0ZTY1MTU2YWFkMmFlMC4uN2Q3
NmJhMWExOWNmNTI4M2RmNWZlMzA4YTgzYjEyOTU3OWQyM2E5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjEzLDYgKzYxMyw3
IEBACiAJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVFQTMxQzcyOUNFNDAw
ODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggKi87IH07CiAJCTFDMjRFRUE5MUM3MkE3QjQwMDgwRjhG
QyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oICov
OyB9OwogCQkxQzQzREU2QjIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzQzREU2ODIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM0RDBE
RDMyNEQ5RjEwRDAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4
IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFDNjYyNjExMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2NjI2MEYx
QzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi87IH07CiAJCTFDNzNBNzEzMjE4NTc1N0Uw
MDRDQ0VBNSAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVu
ZGVybGluZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNC
NkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY2MDMsNiArNjYw
NCw3IEBACiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNERTY4MjJBQjRCOEEwMDE1
MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDNDNERTZBMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJl
bnRUcmFpdENvbGxlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhCdWZmZXJNZW1iZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNTBDNDk1MjJDODRGMjQwMEE2RTRCRSAvKiBXSExTTFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25NYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzU5QjAx
ODIyMzg2ODc5MDA4NTM4MDUgLyogV0hMU0xTY29wZWRTZXRBZGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFNjb3BlZFNldEFkZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNTc2MCw2ICsyNTc2Miw3IEBACiAJCQkJMEZCNjI1MkQxOERFMUIxNTAwQTA3QzA1
IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi8sCiAJCQkJMDg2QkJEMEUxMzYwMzlDMjAwOEIxNUQ4
IC8qIEdseXBoLmggKi8sCiAJCQkJQjJDM0RBNUIwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoQnVm
ZmVyLmggKi8sCisJCQkJMUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVt
YmVycy5oICovLAogCQkJCUM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NN
YXAuaCAqLywKIAkJCQkwODczQjg2QTEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmggKi8s
CiAJCQkJQkM1M0M2MDcwREE1NkM1NzAwMjFFQjVEIC8qIEdyYWRpZW50LmNwcCAqLywKQEAgLTI5
NjUxLDEyICsyOTY1NCwxMiBAQAogCQkJCUZEN0YyOThDMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZl
U2hhcGVyTm9kZS5jcHAgKi8sCiAJCQkJRkQ3RjI5OEQxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVT
aGFwZXJOb2RlLmggKi8sCiAJCQkJRkQ3RjI5OEUxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFw
ZXJOb2RlLmlkbCAqLywKLQkJCQk4MzNEMUM3MzI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmggKi8sCi0JCQkJODMzRDFDNzUyNEQ4RDUzMzAwRTgxM0RGIC8q
IFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgKi8sCiAJCQkJODMyNkJGOEMyNEQzNUMy
MDAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmggKi8sCiAJCQkJODMyNkJGOEQyNEQzNUMy
MTAwMUY4QTg1IC8qIFdhdmVTaGFwZXJPcHRpb25zLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5OTAx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzNEMUM3
MzI0RDhENTMzMDBFODEzREYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggKi8sCisJ
CQkJODMzRDFDNzUyNEQ4RDUzMzAwRTgxM0RGIC8qIFdlYktpdEF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5pZGwgKi8sCiAJCQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgKi8sCiAJCQkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlv
Q29udGV4dC5oICovLAogCQkJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaWRsICovLApAQCAtMzEwODAsNiArMzEwODMsNyBAQAogCQkJCTQ2Qjk1MTk3MjA3
RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMUM0RDBERDMyNEQ5RjEwRDAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0
cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8q
IEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRB
IC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzYwMCw3ICszMzYwNCw2IEBACiAJCQkJQjIyMjc5OTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYw
NTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5
MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTgzM0QxQzc2MjREOEQ1NEYwMEU4MTNERiAvKiBXZWJLaXRBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk1MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
OTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3OTlDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDaXJjbGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTM0MTA2LDYgKzM0MTA5LDcgQEAKIAkJCQlBNTg0RkUzMDE4NjRDQjg0
MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzNEMUM3NjI0RDhENTRGMDBFODEz
REYgLyogV2ViS2l0QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2Vi
S2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IDYyN2U1NjU0OGE4MWM4MmNiMDViYmUwYTViMTgxMTQ0ZWFhZWM4OTMuLjIzYjhkYjE1MzRiMjdh
YzJmMTg4ZDEzZjc3N2RjZGVlN2JhZDM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNTg0
LDcgKzU4NCw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVk
IG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgICAgIC8vIFdoZW4gbGVm
dG1vc3RHbHlwaCBpcyAwLCBpdCByZXByZXNlbnRzIHRoZSBmaXJzdCBnbHlwaCB0byBkcmF3LCB0
YWtpbmcgaW50bwogICAgICAgICAvLyBhY2NvdW50IHRoZSB0ZXh0IGRpcmVjdGlvbi4KICAgICAg
ICAgaWYgKCFpbmRleE9mTGVmdG1vc3RHbHlwaEluQ3VycmVudFJ1biAmJiBnbHlwaEJ1ZmZlcikK
LSAgICAgICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZlckFk
dmFuY2UoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBjb21wbGV4VGV4
dFJ1bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKSk7CisgICAgICAgICAgICBnbHlwaEJ1ZmZl
ci0+c2V0SW5pdGlhbEFkdmFuY2UoY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGNvbXBsZXhUZXh0
UnVuLmluaXRpYWxBZHZhbmNlKCkpKTsKIAogICAgICAgICB3aGlsZSAobV9nbHlwaEluQ3VycmVu
dFJ1biA8IGdseXBoQ291bnQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBoU3RhcnRPZmZz
ZXQgPSBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGdseXBoSW5kZXhJbnRvQ3VycmVudFJ1bik7CkBA
IC02MDQsMjMgKzYwNCwyMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1
bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogCiAgICAgICAgICAg
ICBpZiAoZ2x5cGhCdWZmZXIgJiYgIW1fY2hhcmFjdGVySW5DdXJyZW50R2x5cGgpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGN1cnJlbnRHbHlwaE9yaWdpbiA9IGdseXBoT3JpZ2luKGdseXBoSW5k
ZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyKTsKLSAgICAgICAgICAgICAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UgcGFpbnRBZHZhbmNlKGFkanVzdGVkQmFzZUFkdmFuY2UpOworICAgICAgICAgICAg
ICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFkdmFuY2UgPSBjcmVhdGVHbHlwaEJ1ZmZlckFk
dmFuY2UoYWRqdXN0ZWRCYXNlQWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFnbHlwaElu
ZGV4SW50b0N1cnJlbnRSdW4pIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGxh
eW91dCBhZHZhbmNlIG9mIGV2ZXJ5IHJ1biBpbmNsdWRlcyB0aGUgImluaXRpYWwgbGF5b3V0IGFk
dmFuY2UuIiBIb3dldmVyLCBoZXJlLCB3ZSBuZWVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHBh
aW50IGFkdmFuY2VzLCBzbyBzdWJ0cmFjdCBpdCBvdXQgYmVmb3JlIHRyYW5zZm9ybWluZyB0aGUg
bGF5b3V0IGFkdmFuY2UgaW50byBhIHBhaW50IGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAg
IHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIChjb21wbGV4VGV4
dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNl
LmhlaWdodCgpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBj
dXJyZW50R2x5cGhPcmlnaW4ueSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVm
ZmVyQWR2YW5jZVdpZHRoKHBhaW50QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgocGFp
bnRBZHZhbmNlKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkgLSBj
dXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVm
ZmVyQWR2YW5jZUhlaWdodChwYWludEFkdmFuY2UsIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChw
YWludEFkdmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkg
LSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSArIGdseXBo
T3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3Vy
cmVudEdseXBoT3JpZ2luLngoKSk7Ci0gICAgICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldEhl
aWdodChwYWludEFkdmFuY2UuaGVpZ2h0KCkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0Nv
bXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi55KCkpOwor
ICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKHBhaW50QWR2YW5jZSwg
Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgocGFpbnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBo
SW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3Jp
Z2luLngoKSk7CisgICAgICAgICAgICAgICAgc2V0R2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KHBh
aW50QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KHBhaW50QWR2YW5jZSkgKyBnbHlw
aE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1
cnJlbnRHbHlwaE9yaWdpbi55KCkpOwogICAgICAgICAgICAgICAgIGlmIChnbHlwaEluZGV4SW50
b0N1cnJlbnRSdW4gPT0gZ2x5cGhDb3VudCAtIDEgJiYgY3VycmVudFJ1bkluZGV4ICsgMSA8IHJ1
bkNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE91ciBwYWludCBhZHZhbmNlIHBvaW50
cyB0byB0aGUgZW5kIG9mIHRoZSBydW4uIEhvd2V2ZXIsIHRoZSBuZXh0IHJ1biBtYXkgaGF2ZSBh
bgogICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIGFkdmFuY2UsIGFuZCBvdXIgcGFpbnQg
YWR2YW5jZSBuZWVkcyB0byBwb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIG5leHQKICAgICAg
ICAgICAgICAgICAgICAgLy8gZ2x5cGguIFNvLCB3ZSBuZWVkIHRvIGFkZCBpbiB0aGUgbmV4dCBy
dW4ncyBpbml0aWFsIGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5z
ZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRv
Q29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVu
dFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpIC0gZ2x5
cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgKyBt
X2NvbXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS5o
ZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRo
KHBhaW50QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgocGFpbnRBZHZhbmNlKSAtIGds
eXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsg
bV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCku
d2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZUhlaWdo
dChwYWludEFkdmFuY2UsIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChwYWludEFkdmFuY2UpIC0g
Z2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkg
KyBtX2NvbXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2Uo
KS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2
YW5jZS5zZXRIZWlnaHQoLXBhaW50QWR2YW5jZS5oZWlnaHQoKSk7IC8vIEluY3JlYXNpbmcgeSBw
b2ludHMgZG93bgorICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChw
YWludEFkdmFuY2UsIC1nbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQocGFpbnRBZHZhbmNlKSk7IC8v
IEluY3JlYXNpbmcgeSBwb2ludHMgZG93bgogICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5h
ZGQobV9hZGp1c3RlZEdseXBoc1tnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlcl0s
ICZjb21wbGV4VGV4dFJ1bi5mb250KCksIHBhaW50QWR2YW5jZSwgY29tcGxleFRleHRSdW4uaW5k
ZXhBdChtX2dseXBoSW5DdXJyZW50UnVuKSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA4MGZhYmIz
MmFkYmY2OWNjMWU0ODBiMTdiZDFjNjk5Yzg5ZGY0MjZjLi5mNTg2MWQzYzkwOTRjODZjNGYyZjNk
ZGFlNjBmN2RjODQ3NzBjMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgZmxvYXQgRm9udENhc2Nh
ZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQpIGNvbnN0CiAgICAgICAgIC8v
IHByb2R1Y2UgZGlmZmVyZW50IHJ1biB3aWR0aC4KICAgICAgICAgZmxvYXQgcnVuV2lkdGhEaWZm
ZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgPSAtcnVuV2lkdGg7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBydW5X
aWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zv
cm1BcHBsaWVkICs9IGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VB
dChpKSk7CiAgICAgICAgIHJ1bldpZHRoICs9IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zv
cm1BcHBsaWVkOwogICAgIH0KIApAQCAtMTQxOCwxNiArMTQxOCwxNiBAQCBHbHlwaEJ1ZmZlciBG
b250Q2FzY2FkZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bgogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5jZXMuCiAg
ICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNl
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9hdFNpemUoZHVt
bXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZShkdW1teUdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRTaXplKGds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBm
bG9hdFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7
CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2Ugc3VidHJhY3QgdGhlIG90aGVyIGluaXRp
YWwgYWR2YW5jZT8KICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5z
aXplKCkpOwogICAgICAgICBnbHlwaEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2
YW5jZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0g
dG9GbG9hdFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKTsKKyAgICAgICAg
RmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5j
ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IGluaXRpYWxBZHZhbmNlICs9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGZsb2F0U2l6ZUZyb21HbHlwaEJ1
ZmZlckFkdmFuY2UoZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkbid0IHdlIGFkZCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAg
ICBnbHlwaEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfQpA
QCAtMTQ0OCw4ICsxNDQ4LDggQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBBU1NFUlQo
Z2x5cGhCdWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgY29uc3QgRm9udCogZm9udERhdGEgPSBn
bHlwaEJ1ZmZlci5mb250QXQoMCk7CiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQ7
Ci0gICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgwKS53aWR0aCgpOwotICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CisgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50
LngoKSArIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSk7
CisgICAgZmxvYXQgbmV4dFkgPSBzdGFydFBvaW50LnkoKSArIGdseXBoQnVmZmVyQWR2YW5jZUhl
aWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpOwogICAgIHVuc2lnbmVkIGxhc3RGcm9tID0g
MDsKICAgICB1bnNpZ25lZCBuZXh0R2x5cGggPSAxOwogICAgIHdoaWxlIChuZXh0R2x5cGggPCBn
bHlwaEJ1ZmZlci5zaXplKCkpIHsKQEAgLTE0NjQsOCArMTQ2NCw4IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBo
QnVmZmVyJiBnCiAgICAgICAgICAgICBzdGFydFBvaW50LnNldFgobmV4dFgpOwogICAgICAgICAg
ICAgc3RhcnRQb2ludC5zZXRZKG5leHRZKTsKICAgICAgICAgfQotICAgICAgICBuZXh0WCArPSBn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS53aWR0aCgpOwotICAgICAgICBuZXh0WSAr
PSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS5oZWlnaHQoKTsKKyAgICAgICAgbmV4
dFggKz0gZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG5leHRH
bHlwaCkpOworICAgICAgICBuZXh0WSArPSBnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KG5leHRHbHlwaCkpOwogICAgICAgICBuZXh0R2x5cGgrKzsKICAgICB9
CiAKQEAgLTE1MTAsNyArMTUxMCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAgICAgR2x5
cGhCdWZmZXIgbWFya0J1ZmZlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGds
eXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IG1pZGRsZU9mTmV4dEdseXBo
ID0gb2Zmc2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgaSArIDEpOwotICAg
ICAgICBmbG9hdCBhZHZhbmNlID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCkgLSBt
aWRkbGVPZkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOworICAgICAgICBmbG9hdCBhZHZh
bmNlID0gZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKSAt
IG1pZGRsZU9mTGFzdEdseXBoICsgbWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgICAgIG1hcmtCdWZm
ZXIuYWRkKGdseXBoQnVmZmVyLmdseXBoQXQoaSkgPyBtYXJrR2x5cGggOiBzcGFjZUdseXBoLCBt
YXJrRm9udERhdGEsIGFkdmFuY2UpOwogICAgICAgICBtaWRkbGVPZkxhc3RHbHlwaCA9IG1pZGRs
ZU9mTmV4dEdseXBoOwogICAgIH0KQEAgLTE3NTAsNyArMTc1MCw3IEBAIHN0ZDo6cGFpcjxmbG9h
dCwgZmxvYXQ+IEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6ZXh0ZW50cygpCiB7CiAgICAgYXV0byBi
ZWdpbm5pbmcgPSBtX3RyYW5zbGF0aW9uLm1hcFBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
IGF1dG8gYWR2YW5jZSA9IG1fZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwotICAgIGF1
dG8gZW5kID0gbV90cmFuc2xhdGlvbi5tYXBTaXplKEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCks
IGFkdmFuY2UuaGVpZ2h0KCkpKTsKKyAgICBhdXRvIGVuZCA9IG1fdHJhbnNsYXRpb24ubWFwU2l6
ZShmbG9hdFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2UpKTsKICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoYmVnaW5uaW5nLngoKSwgYmVnaW5uaW5nLngoKSArIGVuZC53aWR0aCgp
KTsKIH0KIApAQCAtMTc2Miw3ICsxNzYyLDcgQEAgYXV0byBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6
OnVuZGVybGluZVR5cGUoKSAtPiBHbHlwaFVuZGVybGluZVR5cGUKIHZvaWQgR2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjphZHZhbmNlKCkKIHsKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSA9
IG1fZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwotICAgIG1fdHJhbnNsYXRpb24udHJh
bnNsYXRlKEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCksIGFkdmFuY2UuaGVpZ2h0KCkpKTsKKyAg
ICBtX3RyYW5zbGF0aW9uLnRyYW5zbGF0ZShmbG9hdFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNl
KGFkdmFuY2UpKTsKICAgICArK21faW5kZXg7CiAgICAgaWYgKG1faW5kZXggPCBtX2dseXBoQnVm
ZmVyLnNpemUoKSkKICAgICAgICAgbV9mb250RGF0YSA9IG1fZ2x5cGhCdWZmZXIuZm9udEF0KG1f
aW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKaW5kZXggMTcyZDNhNzgyOGFkMDkwNzMzMGU3YzI0ZmVmNWM5M2M1Zjc2MmJiMC4uNGJlMTAy
MzhiN2IxOWQ4NTNiODE4YTcyYTQ2ZTlkODUwYmQyM2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0zMSwxNDEgKzMxLDE1IEBACiAK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIkds
eXBoQnVmZmVyTWVtYmVycy5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVkZSA8bGltaXRz
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRm9udDsKIAotI2lmIFVTRShXSU5HREkpCi10eXBlZGVmIHdjaGFyX3QgR2x5cGhCdWZm
ZXJHbHlwaDsKLSNlbHNlCi10eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7Ci0jZW5kaWYK
LQotLy8gQ0cgdXNlcyBDR1NpemUgaW5zdGVhZCBvZiBGbG9hdFNpemUgc28gdGhhdCB0aGUgcmVz
dWx0IG9mIGFkdmFuY2VzKCkKLS8vIGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0dDb250ZXh0
U2hvd0dseXBoc1dpdGhBZHZhbmNlcyBpbiBGb250TWFjLm1tCi0jaWYgVVNFKENHKQotCi1zdHJ1
Y3QgR2x5cGhCdWZmZXJBZHZhbmNlIDogQ0dTaXplIHsKLXB1YmxpYzoKLSAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UoKQotICAgICAgICA6IENHU2l6ZShDR1NpemVaZXJvKQotICAgIHsKLSAgICB9Ci0g
ICAgR2x5cGhCdWZmZXJBZHZhbmNlKEZsb2F0U2l6ZSBzaXplKQotICAgICAgICA6IENHU2l6ZShz
aXplKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpCi0gICAgICAgIDogQ0dTaXplKENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCkp
Ci0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwotCi0gICAgb3BlcmF0
b3IgRmxvYXRTaXplKCkgeyByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXpl
Ojp3aWR0aCksIHN0YXRpY19jYXN0PGZsb2F0Pih0aGlzLT5DR1NpemU6OmhlaWdodCkgfTsgfQot
Ci0gICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyB0aGlzLT5DR1NpemU6OndpZHRoID0g
d2lkdGg7IH0KLSAgICB2b2lkIHNldEhlaWdodChmbG9hdCBoZWlnaHQpIHsgdGhpcy0+Q0dTaXpl
OjpoZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHRo
aXMtPkNHU2l6ZTo6d2lkdGg7IH0KLSAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiB0
aGlzLT5DR1NpemU6OmhlaWdodDsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZv
aWQgR2x5cGhCdWZmZXJBZHZhbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IHdpZHRoKCk7Ci0gICAgZW5jb2RlciA8PCBoZWlnaHQoKTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gR2x5
cGhCdWZmZXJBZHZhbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25h
bDxmbG9hdD4gd2lkdGg7Ci0gICAgZGVjb2RlciA+PiB3aWR0aDsKLSAgICBpZiAoIXdpZHRoKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGhlaWdo
dDsKLSAgICBkZWNvZGVyID4+IGhlaWdodDsKLSAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHbHlwaEJ1ZmZlckFkdmFuY2UoKndpZHRo
LCAqaGVpZ2h0KTsKLX0KLQotc3RydWN0IEdseXBoQnVmZmVyT3JpZ2luIDogQ0dQb2ludCB7Ci1w
dWJsaWM6Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4oKQotICAgICAgICA6IENHUG9pbnQoQ0dQb2lu
dFplcm8pCi0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlck9yaWdpbihGbG9hdFBvaW50IHBv
aW50KQotICAgICAgICA6IENHUG9pbnQocG9pbnQpCi0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1
ZmZlck9yaWdpbihmbG9hdCB4LCBmbG9hdCB5KQotICAgICAgICA6IENHUG9pbnQoQ0dQb2ludE1h
a2UoeCwgeSkpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7Ci0KLSAg
ICBvcGVyYXRvciBGbG9hdFBvaW50KCkgeyByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odGhp
cy0+Q0dQb2ludDo6eCksIHN0YXRpY19jYXN0PGZsb2F0Pih0aGlzLT5DR1BvaW50Ojp5KSB9OyB9
Ci0KLSAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyB0aGlzLT5DR1BvaW50Ojp4ID0geDsgfQotICAg
IHZvaWQgc2V0WShmbG9hdCB5KSB7IHRoaXMtPkNHUG9pbnQ6OnkgPSB5OyB9Ci0gICAgZmxvYXQg
eCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9pbnQ6Ong7IH0KLSAgICBmbG9hdCB5KCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+Q0dQb2ludDo6eTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KLXZvaWQgR2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotewotICAgIGVuY29kZXIgPDwgeCgpOwotICAgIGVuY29kZXIgPDwgeSgpOwotfQotCi10
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8R2x5cGhCdWZmZXJPcmlnaW4+IEdseXBo
QnVmZmVyT3JpZ2luOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxm
bG9hdD4geDsKLSAgICBkZWNvZGVyID4+IHg7Ci0gICAgaWYgKCF4KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHk7Ci0gICAgZGVjb2RlciA+PiB5
OwotICAgIGlmICgheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVy
biBHbHlwaEJ1ZmZlck9yaWdpbigqeCwgKnkpOwotfQotCi11c2luZyBHbHlwaEJ1ZmZlclN0cmlu
Z09mZnNldCA9IENGSW5kZXg7Ci0KLSNlbHNlCi0KLXVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9
IEZsb2F0U2l6ZTsKLXVzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKLXVzaW5n
IEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7Ci0KLSNlbmRpZiAvLyAjaWYgVVNF
KENHKQotCi1pbmxpbmUgRmxvYXRTaXplIHRvRmxvYXRTaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSYgYSkKLXsKLSAgICByZXR1cm4gRmxvYXRTaXplKGEud2lkdGgoKSwgYS5oZWlnaHQoKSk7
Ci19Ci0KIGNsYXNzIEdseXBoQnVmZmVyIHsKIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnRzLmlzRW1wdHkoKTsgfQpAQCAtMjAzLDggKzc3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBGb250KiBmb250LCBmbG9hdCB3
aWR0aCwgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgb2Zmc2V0SW5TdHJpbmcgPSBub09mZnNldCkK
ICAgICB7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlOwotICAgICAgICBhZHZh
bmNlLnNldFdpZHRoKHdpZHRoKTsKLSAgICAgICAgYWR2YW5jZS5zZXRIZWlnaHQoMCk7CisgICAg
ICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UsIHdpZHRoKTsKKyAgICAgICAg
c2V0R2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGFkdmFuY2UsIDApOwogICAgICAgICBhZGQoZ2x5
cGgsIGZvbnQsIGFkdmFuY2UsIG9mZnNldEluU3RyaW5nKTsKICAgICB9CiAKQEAgLTIxMyw3ICs4
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb250cy5hcHBlbmQoZm9udCk7CiAgICAgICAgIG1f
Z2x5cGhzLmFwcGVuZChnbHlwaCk7CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2Up
OwotICAgICAgICBtX29yaWdpbnMuYXBwZW5kKEdseXBoQnVmZmVyT3JpZ2luKCkpOworICAgICAg
ICBtX29yaWdpbnMuYXBwZW5kKGNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKCkpOwogICAgICAgICBt
X29mZnNldHNJblN0cmluZy5hcHBlbmQob2Zmc2V0SW5TdHJpbmcpOwogICAgIH0KIApAQCAtMjMx
LDkgKzEwNSw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGxvY2F0aW9uIDw9IHNpemUoKSk7
CiAKICAgICAgICAgbV9mb250cy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3Rvcjxjb25zdCBG
b250Kj4obGVuZ3RoLCBmb250KSk7Ci0gICAgICAgIG1fZ2x5cGhzLmluc2VydFZlY3Rvcihsb2Nh
dGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+KGxlbmd0aCwgMHhGRkZGKSk7Ci0gICAgICAg
IG1fYWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZh
bmNlPihsZW5ndGgsIEdseXBoQnVmZmVyQWR2YW5jZSgwLCAwKSkpOwotICAgICAgICBtX29yaWdp
bnMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJPcmlnaW4+KGxlbmd0
aCwgR2x5cGhCdWZmZXJPcmlnaW4oKSkpOworICAgICAgICBtX2dseXBocy5pbnNlcnRWZWN0b3Io
bG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPihsZW5ndGgsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8R2x5cGhCdWZmZXJHbHlwaD46Om1heCgpKSk7CisgICAgICAgIG1fYWR2YW5jZXMuaW5z
ZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlPihsZW5ndGgsIGNy
ZWF0ZUdseXBoQnVmZmVyQWR2YW5jZSgpKSk7CisgICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0
b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCBjcmVhdGVHbHlw
aEJ1ZmZlck9yaWdpbigpKSk7CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLmluc2VydFZlY3Rv
cihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0PihsZW5ndGgsIDApKTsK
ICAgICB9CiAKQEAgLTI0NywxNSArMTIxLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFT
U0VSVCghaXNFbXB0eSgpKTsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5j
ZSA9IG1fYWR2YW5jZXMubGFzdCgpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0
QWR2YW5jZS53aWR0aCgpICsgd2lkdGgpOworICAgICAgICBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VX
aWR0aChsYXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgobGFzdEFkdmFuY2UpICsg
d2lkdGgpOwogICAgIH0KIAogICAgIHZvaWQgZXhwYW5kTGFzdEFkdmFuY2UoR2x5cGhCdWZmZXJB
ZHZhbmNlIGV4cGFuc2lvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAg
ICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMubGFzdCgp
OwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsgZXhw
YW5zaW9uLndpZHRoKCkpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRIZWlnaHQobGFzdEFkdmFu
Y2UuaGVpZ2h0KCkgKyBleHBhbnNpb24uaGVpZ2h0KCkpOworICAgICAgICBzZXRHbHlwaEJ1ZmZl
ckFkdmFuY2VXaWR0aChsYXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgobGFzdEFk
dmFuY2UpICsgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZXhwYW5zaW9uKSk7CisgICAgICAgIHNl
dEdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChsYXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNl
SGVpZ2h0KGxhc3RBZHZhbmNlKSArIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChleHBhbnNpb24p
KTsKICAgICB9CiAKICAgICB2b2lkIHNocmluayh1bnNpZ25lZCB0cnVuY2F0aW9uUG9pbnQpCkBA
IC0yNzYsMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbGF0dGVuKCkKICAgICB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgbV9hZHZhbmNlc1tpXSA9IEdseXBoQnVmZmVyQWR2YW5jZSgKLSAgICAgICAgICAgICAgICAt
bV9vcmlnaW5zW2ldLngoKSArIG1fYWR2YW5jZXNbaV0ud2lkdGgoKSArIChpICsgMSA8IHNpemUo
KSA/IG1fb3JpZ2luc1tpICsgMV0ueCgpIDogMCksCi0gICAgICAgICAgICAgICAgLW1fb3JpZ2lu
c1tpXS55KCkgKyBtX2FkdmFuY2VzW2ldLmhlaWdodCgpICsgKGkgKyAxIDwgc2l6ZSgpID8gbV9v
cmlnaW5zW2kgKyAxXS55KCkgOiAwKQotICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIG1fYWR2
YW5jZXNbaV0gPSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoRmxvYXRTaXplKAorICAgICAgICAg
ICAgICAgIC1nbHlwaEJ1ZmZlck9yaWdpblgobV9vcmlnaW5zW2ldKSArIGdseXBoQnVmZmVyQWR2
YW5jZVdpZHRoKG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8gZ2x5cGhCdWZmZXJP
cmlnaW5YKG1fb3JpZ2luc1tpICsgMV0pIDogMCksCisgICAgICAgICAgICAgICAgLWdseXBoQnVm
ZmVyT3JpZ2luWShtX29yaWdpbnNbaV0pICsgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KG1fYWR2
YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8gZ2x5cGhCdWZmZXJPcmlnaW5ZKG1fb3JpZ2lu
c1tpICsgMV0pIDogMCkKKyAgICAgICAgICAgICkpOwogICAgICAgICAgICAgbV9vcmlnaW5zW2ld
ID0gR2x5cGhCdWZmZXJPcmlnaW4oKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTQzNGI5NDMyMjc3MjVjYzUyMDYzNGJkNzE4YzAwZGM3ZGE4Njk2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVt
YmVycy5oCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDggVG9yY2ggTW9iaWxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVk
ZSAiR2x5cGguaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NHRm9udC5oPgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dl
b21ldHJ5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUgQ0cgcG9y
dHMgdXNlIHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMg
Y2FuIGJlIGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisjaWYgVVNFKENH
KQordXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IENHR2x5cGg7Cit1c2luZyBHbHlwaEJ1ZmZlckFk
dmFuY2UgPSBDR1NpemU7Cit1c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IENHUG9pbnQ7Cit1c2lu
ZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IENGSW5kZXg7CisjZWxpZiBVU0UoV0lOR0RJKQor
dXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IHdjaGFyX3Q7Cit1c2luZyBHbHlwaEJ1ZmZlckFkdmFu
Y2UgPSBGbG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0UG9pbnQ7Cit1
c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOworI2Vsc2UKK3VzaW5nIEds
eXBoQnVmZmVyR2x5cGggPSBHbHlwaDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0
U2l6ZTsKK3VzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKK3VzaW5nIEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7CisjZW5kaWYKKworaW5saW5lIEdseXBoQnVm
ZmVyQWR2YW5jZSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiA9IEZs
b2F0U2l6ZSgpKTsKK2lubGluZSBGbG9hdFNpemUgZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2
YW5jZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVm
ZmVyQWR2YW5jZVdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYsIGZsb2F0KTsKK2lubGluZSB2b2lk
IHNldEdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7
CitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlJik7CitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSYpOworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIGNyZWF0ZUdseXBo
QnVmZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmID0gRmxvYXRQb2ludCgpKTsKK2lubGluZSBG
bG9hdFBvaW50IGZsb2F0UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgR2x5cGhCdWZm
ZXJPcmlnaW4mKTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWChHbHlwaEJ1ZmZl
ck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWShHbHlw
aEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSBmbG9hdCBnbHlwaEJ1ZmZlck9yaWdpblgo
Y29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mKTsKK2lubGluZSBmbG9hdCBnbHlwaEJ1ZmZlck9yaWdp
blkoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mKTsKKworI2lmIFVTRShDRykKKworaW5saW5lIEds
eXBoQnVmZmVyQWR2YW5jZSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQoreworICAgIHJldHVybiBDR1NpemVNYWtlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7Cit9CisKK2lubGluZSBGbG9hdFNpemUgZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2
YW5jZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIEZs
b2F0U2l6ZShhZHZhbmNlLndpZHRoLCBhZHZhbmNlLmhlaWdodCk7Cit9CisKK2lubGluZSB2b2lk
IHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSwg
ZmxvYXQgd2lkdGgpCit7CisgICAgYWR2YW5jZS53aWR0aCA9IHdpZHRoOworfQorCitpbmxpbmUg
dm9pZCBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZh
bmNlLCBmbG9hdCBoZWlnaHQpCit7CisgICAgYWR2YW5jZS5oZWlnaHQgPSBoZWlnaHQ7Cit9CisK
K2lubGluZSBmbG9hdCBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFuY2Uud2lkdGg7Cit9CisKK2lubGlu
ZSBmbG9hdCBnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
JiBhZHZhbmNlKQoreworICAgIHJldHVybiBhZHZhbmNlLmhlaWdodDsKK30KKworaW5saW5lIEds
eXBoQnVmZmVyT3JpZ2luIGNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50LnkoKSk7
Cit9CisKK2lubGluZSBGbG9hdFBvaW50IGZsb2F0UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4o
Y29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRmxvYXRQb2lu
dChvcmlnaW4ueCwgb3JpZ2luLnkpOworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlck9y
aWdpblgoR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQgeCkKK3sKKyAgICBvcmlnaW4u
eCA9IHg7Cit9CisKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWShHbHlwaEJ1ZmZl
ck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi55ID0geTsKK30KKworaW5s
aW5lIGZsb2F0IGdseXBoQnVmZmVyT3JpZ2luWChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3Jp
Z2luKQoreworICAgIHJldHVybiBvcmlnaW4ueDsKK30KKworaW5saW5lIGZsb2F0IGdseXBoQnVm
ZmVyT3JpZ2luWShjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVy
biBvcmlnaW4ueTsKK30KKworI2Vsc2UKKworaW5saW5lIEdseXBoQnVmZmVyQWR2YW5jZSBjcmVh
dGVHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIHJldHVy
biBzaXplOworfQorCitpbmxpbmUgRmxvYXRTaXplIGZsb2F0U2l6ZUZyb21HbHlwaEJ1ZmZlckFk
dmFuY2UoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBh
ZHZhbmNlOworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChHbHlw
aEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uuc2V0
V2lkdGgod2lkdGgpOworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VIZWln
aHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBmbG9hdCBoZWlnaHQpCit7CisgICAgYWR2
YW5jZS5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKworaW5saW5lIGZsb2F0IGdseXBoQnVmZmVyQWR2
YW5jZVdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1
cm4gYWR2YW5jZS53aWR0aCgpOworfQorCitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNl
SGVpZ2h0KGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4g
YWR2YW5jZS5oZWlnaHQoKTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIGNyZWF0ZUds
eXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBw
b2ludDsKK30KKworaW5saW5lIEZsb2F0UG9pbnQgZmxvYXRQb2ludEZyb21HbHlwaEJ1ZmZlck9y
aWdpbihjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW47Cit9CisKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWChHbHlwaEJ1ZmZlck9y
aWdpbiYgb3JpZ2luLCBmbG9hdCB4KQoreworICAgIG9yaWdpbi5zZXRYKHgpOworfQorCitpbmxp
bmUgdm9pZCBzZXRHbHlwaEJ1ZmZlck9yaWdpblkoR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwg
ZmxvYXQgeSkKK3sKKyAgICBvcmlnaW4uc2V0WSh5KTsKK30KKworaW5saW5lIGZsb2F0IGdseXBo
QnVmZmVyT3JpZ2luWChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJl
dHVybiBvcmlnaW4ueCgpOworfQorCitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJPcmlnaW5ZKGNv
bnN0IEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4pCit7CisgICAgcmV0dXJuIG9yaWdpbi55KCk7
Cit9CisKKyNlbmRpZiAvLyAjaWYgVVNFKENHKQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IDYxNjNiY2UyN2EyNGZi
NzNmN2Y0NzBmMDk5MmFiMWM3MmEwNWVmOWUuLmMwN2MyYjBmZmNiYTRlZTk4NDU4Y2U3YjA2MjRi
NWU3YjdmNTU2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIGZsb2F0IFdpZHRo
SXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBi
b29sIGwKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXItPmFk
dmFuY2VzKDApOwogICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsYXN0R2x5cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBi
ZWZvcmVXaWR0aCArPSBhZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBiZWZvcmVXaWR0aCAr
PSBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChhZHZhbmNlc1tpXSk7CiAKICAgICBBU1NFUlQobGFz
dEdseXBoQ291bnQgPD0gZ2x5cGhCdWZmZXJTaXplKTsKICAgICBpZiAoIWx0cikKQEAgLTExMSw3
ICsxMTEsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3Jt
cyhHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIGJvb2wgbAogICAgIGdseXBoQnVmZmVyU2l6ZSA9
IGdseXBoQnVmZmVyLT5zaXplKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhD
b3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBhZHZhbmNlc1tpXS5zZXRI
ZWlnaHQoLWFkdmFuY2VzW2ldLmhlaWdodCgpKTsKKyAgICAgICAgc2V0R2x5cGhCdWZmZXJBZHZh
bmNlSGVpZ2h0KGFkdmFuY2VzW2ldLCAtZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGFkdmFuY2Vz
W2ldKSk7CiAKICAgICBpZiAoIWx0cikKICAgICAgICAgZ2x5cGhCdWZmZXItPnJldmVyc2UobGFz
dEdseXBoQ291bnQsIGdseXBoQnVmZmVyU2l6ZSAtIGxhc3RHbHlwaENvdW50KTsKQEAgLTEyNiwx
NCArMTI2LDE0IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zv
cm1zKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBsCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgY29uc3QgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1Nw
YWNlJiBvcmlnaW5hbEFkdmFuY2VzID0gY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlW2ldLnNlY29u
ZDsKICAgICAgICAgaWYgKHNwYWNlT2Zmc2V0ICYmICFvcmlnaW5hbEFkdmFuY2VzLmNoYXJhY3Rl
cklzU3BhY2UpCi0gICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWR2YW5jZXMoc3BhY2VPZmZzZXQg
LSAxKS0+c2V0V2lkdGgob3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQmVmb3JlQ2hhcmFjdGVyKTsK
LSAgICAgICAgZ2x5cGhCdWZmZXItPmFkdmFuY2VzKHNwYWNlT2Zmc2V0KS0+c2V0V2lkdGgob3Jp
Z2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIpOworICAgICAgICAgICAgc2V0R2x5cGhC
dWZmZXJBZHZhbmNlV2lkdGgoKmdseXBoQnVmZmVyLT5hZHZhbmNlcyhzcGFjZU9mZnNldCAtIDEp
LCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOworICAgICAgICBzZXRH
bHlwaEJ1ZmZlckFkdmFuY2VXaWR0aCgqZ2x5cGhCdWZmZXItPmFkdmFuY2VzKHNwYWNlT2Zmc2V0
KSwgb3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIpOwogICAgIH0KICAgICBjaGFy
YWN0ZXJzVHJlYXRlZEFzU3BhY2UuY2xlYXIoKTsKIAogICAgIGZsb2F0IGFmdGVyV2lkdGggPSAw
OwogICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJT
aXplOyArK2kpCi0gICAgICAgIGFmdGVyV2lkdGggKz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKKyAg
ICAgICAgYWZ0ZXJXaWR0aCArPSBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChhZHZhbmNlc1tpXSk7
CiAKICAgICBsYXN0R2x5cGhDb3VudCA9IGdseXBoQnVmZmVyU2l6ZTsKICAgICByZXR1cm4gYWZ0
ZXJXaWR0aCAtIGJlZm9yZVdpZHRoOwpAQCAtMzE5LDcgKzMxOSw3IEBAIGlubGluZSB2b2lkIFdp
ZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwg
R2x5cGhCdWZmCiAgICAgICAgIGF1dG8gdHJhbnNmb3Jtc1R5cGUgPSBzaG91bGRBcHBseUZvbnRU
cmFuc2Zvcm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwgcHJldmlvdXNDaGFyYWN0ZXIp
OwogICAgICAgICBpZiAodHJhbnNmb3Jtc1R5cGUgIT0gVHJhbnNmb3Jtc1R5cGU6Ok5vbmUgJiYg
Z2x5cGhCdWZmZXIgJiYgRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpKSB7CiAg
ICAgICAgICAgICBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KGdseXBoQnVmZmVyLT5zaXplKCksCi0gICAgICAgICAgICAgICAgT3JpZ2luYWxBZHZhbmNlc0Zv
ckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKGNoYXJhY3RlciA9PSAnICcsIGdseXBoQnVmZmVyLT5z
aXplKCkgPyBnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoQnVmZmVyLT5zaXplKCkgLSAxKS53
aWR0aCgpIDogMCwgd2lkdGgpKSk7CisgICAgICAgICAgICAgICAgT3JpZ2luYWxBZHZhbmNlc0Zv
ckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKGNoYXJhY3RlciA9PSAnICcsIGdseXBoQnVmZmVyLT5z
aXplKCkgPyBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGds
eXBoQnVmZmVyLT5zaXplKCkgLSAxKSkgOiAwLCB3aWR0aCkpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX2FjY291bnRGb3JHbHlwaEJvdW5kcykgewpAQCAtMzk2LDcgKzM5Niw3IEBAIGJv
b2wgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNoYXJhY3RlcihmbG9hdCYgd2lkdGgsIEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlcikKICAgICBhZHZhbmNlKG1fY3VycmVudENoYXJhY3RlckluZGV4
ICsgMSwgJmdseXBoQnVmZmVyKTsKICAgICBmbG9hdCB3ID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBvbGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIHcgKz0g
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgIHcgKz0gZ2x5cGhCdWZm
ZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICB3aWR0aCA9IHc7
CiAgICAgcmV0dXJuIGdseXBoQnVmZmVyLnNpemUoKSA+IG9sZFNpemU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggOWUwMDcwNDM4YTcxMTE5M2U4N2RjMjllMzcy
Y2Q1MDFlYzNlMTljMC4uOWZlODY4Yjc3NGFlMWQ0MDRmMjE0ODFhMmRiNzM2NDA4NmJlZjU5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTYzLDEwICs1NjMsMTAg
QEAgdm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKICAgICBzaXplX3QgbnVtR2x5cGhz
ID0gbV9nbHlwaHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhz
OyArK2kpIHsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2FkdmFuY2Vz
W2ldOwotICAgICAgICBGbG9hdFJlY3QgZ2x5cGhSZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgp
LCBjdXJyZW50LnkoKSAtIGFzY2VudCwgYWR2YW5jZS53aWR0aCgpLCBhc2NlbnQgKyBkZXNjZW50
KTsKKyAgICAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwg
Y3VycmVudC55KCkgLSBhc2NlbnQsIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UpLCBh
c2NlbnQgKyBkZXNjZW50KTsKICAgICAgICAgbV9ib3VuZHMudW5pdGUoZ2x5cGhSZWN0KTsKIAot
ICAgICAgICBjdXJyZW50Lm1vdmUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKTsK
KyAgICAgICAgY3VycmVudC5tb3ZlKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UpLCBn
bHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoYWR2YW5jZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdmMWEzY2M3ZWI5YzE5
ZjJlNDA1NjlhOTAzYWViNzAyZThlMjFkOTEuLmEwZDI5ODM2NDBhNDAzMmQ0MGRmMTZkOTI2Nzlm
ZmE3M2M1NGQ2YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOC0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2x5cGhCdWZmZXJBZHZhbmNlIGFu
ZCBHbHlwaEJ1ZmZlck9yaWdpbiBtb3JlIHJvYnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisKIDIwMjAtMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBWDogVm9pY2VPdmVyIG5lZWRzIGFjY2VzcyB0byBmb250IHN0eWxpbmcgYXQgaW5z
ZXJ0aW9uIHBvaW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDA4NTA5ZmQ3Y2M2NmZkMjJj
MTFkNzg3YTFlMzM3YzEwN2IzMjU4M2YuLjk2NDMxOTk4OTIwYWNjYmYwNzU2OTAyYzA5MjAwNmVh
OGJmNDEwYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC04MCwxNSArODAsMTUgQEAgVEVT
VF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5J
blJUTCkKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2YW5j
ZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNiwgJmdseXBo
QnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3Bh
Y2VXaWR0aCArIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFk
dmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNl
SGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOwogICAgIEVY
UEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDZVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsK
LSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgYWR2YW5j
ZXNbM10ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMikud2lkdGgoKSwgYWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgYWR2YW5jZXNbMV0ud2lk
dGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCku
d2lkdGgoKSwgLWluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDUpLndpZHRoKCksIHNwYWNlV2lkdGggKyBpbml0aWFs
QWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2
YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIGdseXBoQnVmZmVyQWR2YW5jZVdp
ZHRoKGFkdmFuY2VzWzRdKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFk
dmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCBnbHlwaEJ1ZmZlckFkdmFuY2VX
aWR0aChhZHZhbmNlc1szXSksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJB
ZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgZ2x5cGhCdWZmZXJBZHZhbmNl
V2lkdGgoYWR2YW5jZXNbMl0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
QWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIGdseXBoQnVmZmVyQWR2YW5j
ZVdpZHRoKGFkdmFuY2VzWzFdKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCAtZ2x5cGhCdWZmZXJBZHZh
bmNlV2lkdGgoaW5pdGlhbEFkdmFuY2UpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg1KSksIHNwYWNlV2lkdGgg
KyBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChpbml0aWFsQWR2YW5jZSksIDAuMDAwMSk7CiB9CiAK
IFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQpA
QCAtMTI0LDE1ICsxMjQsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIElu
aXRpYWxBZHZhbmNlSW5SVEwpCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNv
RmFyKCksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZh
bmNlKDUsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0
aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAw
MDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0
KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0
aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
QWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFu
Y2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwg
NVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBh
ZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgxKS53aWR0aCgpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCBhZHZhbmNlc1sy
XS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgzKS53aWR0aCgpLCBhZHZhbmNlc1sxXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCAtaW5pdGlhbEFkdmFuY2Uud2lk
dGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCku
aGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIGFk
dmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJB
ZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgYWR2YW5jZXNbM10ud2lkdGgo
KSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMikpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgzKSksIGFkdmFuY2VzWzFdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5
cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKSwgLWluaXRpYWxB
ZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZh
bmNlSGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KSksIGluaXRpYWxBZHZhbmNlLmhlaWdo
dCgpLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxU
UikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0
aCArIGFkdmFuY2VzWzBdLndpZHRoKCkgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEp
OwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgzLCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9O
RUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgNzYuMzQ3NjU2ICsg
aW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgMCwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CiAgICAg
RVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgM1UpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBzcGFjZVdpZHRoICsgaW5pdGlhbEFkdmFuY2Uu
d2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQo
MSkud2lkdGgoKSwgNTMuMDY2NDA2LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAyMy4yODEyNTAsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwg
c3BhY2VXaWR0aCArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwg
NTMuMDY2NDA2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDIzLjI4MTI1MCwgMC4wMDAxKTsKIH0KIAog
VEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCkBA
IC0yMDgsMTEgKzIwOCwxMSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VJbkxUUikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29G
YXIoKSwgYWR2YW5jZXNbMF0ud2lkdGgoKSArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAw
MSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDIsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNU
X05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDc2LjM0NzY1NiArIGluaXRpYWxBZHZh
bmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlh
bEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIGluaXRp
YWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
QWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5j
ZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhl
aWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0
KCksIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgMlUpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCA1My4wNjY0MDYs
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRo
KCksIDIzLjI4MTI1MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFu
Y2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCA1My4wNjY0MDYsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDEpKSwgMjMuMjgxMjUwLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250
cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKQEAgLTI1MSwxNCArMjUx
LDE0IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUlu
UlRMTm9PcmlnaW5zKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0Zhcigp
LCB0b3RhbFdpZHRoLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg0LCAmZ2x5cGhC
dWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3Rh
bFdpZHRoLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkud2lkdGgoKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCBpbml0aWFsQWR2
YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFu
Y2VXaWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2Uud2lk
dGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQo
Z2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAw
LjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDRVKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgNDMuODExOTM0OTAwNTQy
NSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lk
dGgoKSwgMTIuMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMikud2lkdGgoKSwgMTQuMDM5NzgzMDAxODA4MywgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVB
UihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLmhlaWdodCgp
LCAxMi4zNjg4OTY5MjU4NTksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJB
ZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNDMuODExOTM0OTAwNTQyNSwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMSkpLCAxMi4wLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDE0LjAzOTc4MzAw
MTgwODMsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgzKSksIDEyLjM2ODg5NjkyNTg1OSwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhU
ZXh0Q29udHJvbGxlclRlc3QsIExlYWRpbmdFeHBhbnNpb24pCkBAIC0yODUsMTAgKzI4NSwxMCBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVhZGluZ0V4cGFuc2lvbikKICAg
ICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAg
ICBjb250cm9sbGVyLmFkdmFuY2UoMSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihj
b250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDEwMCwgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgp
LCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAxMDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkp
LCAwLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDFVKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgMjQsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDApKSwgMjQsIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRy
b2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQpAQCAtMzIyLDE3ICszMjIsMTcgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiAgICAgRVhQRUNU
X05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJv
bGxlci5hZHZhbmNlKDQsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxl
ci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDE2LCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5j
ZUhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMTYsIDAuMDAwMSk7CiAgICAg
RVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS5oZWlnaHQoKSwgNCAtIDEgLTgsIDAuMDAwMSk7Ci0g
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDAsIDAuMDAw
MSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLmhlaWdodCgpLCA4
IC0gMiAtIDUxMiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMikud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMikuaGVpZ2h0KCksIDEyOCAtIDMyIC0gMjU2LCAwLjAwMDEpOwotICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS5oZWlnaHQoKSwgMjU2IC0gNjQs
IDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDApKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNCAtIDEgLTgsIDAu
MDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDEpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgOCAtIDIgLSA1MTIsIDAu
MDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDIpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMTI4IC0gMzIgLSAyNTYs
IDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDMpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgMjU2IC0gNjQsIDAu
MDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRo
V2l0aEp1c3RpZmljYXRpb24pCkBAIC0zNjEsNyArMzYxLDEyIEBAIFRFU1RfRihDb21wbGV4VGV4
dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCiAgICAgRVhQRUNU
X05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJv
bGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVy
LnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53
aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMikud2lkdGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpICsg
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndpZHRoKCksIGNvbnRyb2xsZXIudG90YWxBZHZhbmNl
KCkud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VX
aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpCisgICAgICAgICsgZ2x5cGhCdWZmZXJBZHZh
bmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKQorICAgICAgICArIGdseXBoQnVmZmVy
QWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSkKKyAgICAgICAgKyBnbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpCisgICAgICAgICsgZ2x5
cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKQorICAgICAgICAs
IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405959</attachid>
            <date>2020-08-04 16:21:39 -0700</date>
            <delta_ts>2020-08-04 21:49:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215143-20200804162139.patch</filename>
            <type>text/plain</type>
            <size>48928</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgzNjhkNmVhZDVmYjQz
OTNkYjViOTdhMGRiODU4NDAwZWQ2YTgwOS4uMjdlYmI1ZGE2ZWZjNmI0OTA3NmE3MmQ5ODU2MGUw
MDczNWU2MDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA4LTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHbHlwaEJ1ZmZlciBjb250
YWlucyB2ZWN0b3JzIG9mIGFkdmFuY2VzIGFuZCBvcmlnaW5zLCB3aGljaCBhcmUgY29uY2VwdHVh
bGx5CisgICAgICAgIEZsb2F0U2l6ZXMgYW5kIEZsb2F0UG9pbnRzLiBIb3dldmVyLCB3ZSBuZWVk
IHRvIHBhc3MgdGhlc2UgYXJyYXlzIGludG8gQ1RGb250U2hhcGVHbHlwaHMoKQorICAgICAgICBv
ciBDVEZvbnRUcmFuc2Zvcm1HbHlwaHNXaXRoTGFuZ3VhZ2UoKSwgd2hpY2ggZXhwZWN0cyB0aGVz
ZSB2ZWN0b3JzIHRvIHVzZSBwbGF0Zm9ybSB0eXBlcy4KKyAgICAgICAgUmF0aGVyIHRoYW4gY29u
dmVydGluZyBpbi9vdXQgb2YgcGxhdGZvcm0gdHlwZXMgYXJvdW5kIHRoZSBjYWxsIHNpdGUsIHdl
IGNhbiBzaW1wbHkgdXNlCisgICAgICAgIHRoZSBwbGF0Zm9ybSB0eXBlcyB0aHJvdWdob3V0LiBJ
bmRlZWQsIHRoYXQncyB3aGF0IHdlJ3JlIGRvaW5nIHRvZGF5LgorCisgICAgICAgIEhvd2V2ZXIs
IHRoZSBtZWNoYW5pc20gd2UgdXNlIHRvZGF5IHRvIG1ha2UgdGhpcyBwbGF0Zm9ybS1pbmRlcGVu
ZGVudCBpcyB0byBtYWtlIGEgc3RydWN0CisgICAgICAgIHdoaWNoIGluaGVyaXRzIGZyb20gdGhl
IHBsYXRmb3JtIHR5cGVzLiBUaGVuLCB3ZSBzdGF0aWNfY2FzdCB0aGUgYXJyYXkgb2YgdGhlIHN0
cnVjdCB0bworICAgICAgICBhbiBhcnJheSBvZiB0aGUgYmFzZSB0eXBlLiBUaGlzIGlzIGJyaXR0
bGUsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAg
IHN0cnVjdCBkb2Vzbid0IGhhdmUgYW55IG1lbWJlcnMgYWRkZWQgdG8gaXQsIHdoaWNoIHdvdWxk
IGNoYW5nZSB0aGUgc3RyaWRlIG9mIHRoZSBhcnJheQorICAgICAgICBhbmQgZmVlZCBnYXJiYWdl
IGludG8gdGhlIHNoYXBpbmcgZnVuY3Rpb24uCisKKyAgICAgICAgSW5zdGVhZCwgYSBiZXR0ZXIg
ZGVzaWduIGlzIHRvIHR5cGVkZWYgdGhlIG5hdGl2ZSB0eXBlLCBhbmQgaGF2ZSBhbGwgaW50ZXJh
Y3Rpb25zIHdpdGggdGhlCisgICAgICAgIHR5cGVzIGdvIHRocm91Z2ggc3RhbmRhbG9uZSBmdW5j
dGlvbnMgd2hpY2ggZGVhbCB3aXRoIHRoZSBuYXRpdmUgdHlwZS4gVGhhdCB3YXksIHdlIGNhbid0
CisgICAgICAgIGFjY2lkZW50YWxseSBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGFycmF5IGVsZW1l
bnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmFkdmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhU
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoVG9QYXRoVHJhbnNsYXRvcjo6ZXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
OjptYWtlSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6ZXhwYW5kTGFzdEFk
dmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmZsYXR0ZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpHbHlwaEJ1ZmZlckFkdmFuY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpvcGVyYXRvciBGbG9h
dFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6
OnNldEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFu
Y2U6OndpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
QWR2YW5jZTo6aGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
QnVmZmVyQWR2YW5jZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyT3JpZ2luOjpHbHlwaEJ1ZmZlck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6b3BlcmF0b3IgRmxvYXRQb2ludCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyT3JpZ2luOjpkZWNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dG9GbG9hdFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9h
dFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyQWR2
YW5jZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Zmxv
YXRQb2ludEZyb21HbHlwaEJ1ZmZlck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlw
aEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhCdWZmZXJPcmlnaW5Z
KToKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoQnVmZmVyT3JpZ2luWCk6CisgICAgICAgIChXZWJD
b3JlOjpnbHlwaEJ1ZmZlck9yaWdpblkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphZHZhbmNl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNo
YXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmNvbXB1dGVCb3VuZHMpOgorCiAyMDIwLTA4LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWxpZ24gQXVkaW9MaXN0ZW5lciB3aXRoIHRoZSBXM0Mgc3Bl
Y2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDZlMzUxOWEwZDc0ZmRjYzBhMGYwMWNk
YTk4NDZmZmVmMjk4OGZiYi4uZTgwOTk3NjFlMmI5ZWY4Mjk2Nzg4MjAyMzUxOTUwZTU1ODRkNjhi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTI2LDYgKzExMjYsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlV
dGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJN
ZW1iZXJzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDAyZTE4MDJjNDlmMDk4ZTljY2RlOGNkMzk5YTMzZTA4MjhiY2ExOWYuLmI3ZmUy
NDNkMzA4NmNiZjFhZDBmZDhhMzM5MjQ2NDFlMmE1NGQ4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxMyw2ICs2MTMsNyBA
QAogCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUEzMUM3MjlDRTQwMDgw
RjhGQyAvKiBGb250RmFjZVNldC5oICovOyB9OwogCQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMg
LyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUMyNEVFQTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLzsg
fTsKIAkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0
M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDNEQwREQz
MjREOUYxMEQwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAv
KiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzY2MjYxMTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjYyNjBGMUM2
RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oICovOyB9OwogCQkxQzczQTcxMzIxODU3NTdFMDA0
Q0NFQTUgLyogVGV4dFVuZGVybGluZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRl
cmxpbmVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyogVGV4dERlY29yYXRpb25UaGlja25l
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjZC
NEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02NjA0LDYgKzY2MDUs
NyBAQAogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2ODIyQUI0QjhBMDAxNTI3
RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzQzREU2QTIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50
VHJhaXRDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdseXBoQnVmZmVyTWVtYmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0QkUgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1OUIwMTgy
MjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTY29wZWRTZXRBZGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2
MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjU3NjMsNiArMjU3NjUsNyBAQAogCQkJCTBGQjYyNTJEMThERTFCMTUwMEEwN0MwNSAv
KiBHZW9tZXRyeVV0aWxpdGllcy5oICovLAogCQkJCTA4NkJCRDBFMTM2MDM5QzIwMDhCMTVEOCAv
KiBHbHlwaC5oICovLAogCQkJCUIyQzNEQTVCMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZl
ci5oICovLAorCQkJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJl
cnMuaCAqLywKIAkJCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFw
LmggKi8sCiAJCQkJMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovLAog
CQkJCUJDNTNDNjA3MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5jcHAgKi8sCkBAIC0zMTA4
NSw2ICszMTA4OCw3IEBACiAJCQkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhC
MTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNkMwRDAwNkNENjAwRUY2
RjI2IC8qIEdseXBoQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzREMEREMzI0RDlGMTBE
MDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUQ0
QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTE1MThGQzFFNzhDMTVGMDBFQzUxNEEgLyogR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDYyN2U1
NjU0OGE4MWM4MmNiMDViYmUwYTViMTgxMTQ0ZWFhZWM4OTMuLjIzYjhkYjE1MzRiMjdhYzJmMTg4
ZDEzZjc3N2RjZGVlN2JhZDM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNTg0LDcgKzU4
NCw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNl
dCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgICAgIC8vIFdoZW4gbGVmdG1vc3RH
bHlwaCBpcyAwLCBpdCByZXByZXNlbnRzIHRoZSBmaXJzdCBnbHlwaCB0byBkcmF3LCB0YWtpbmcg
aW50bwogICAgICAgICAvLyBhY2NvdW50IHRoZSB0ZXh0IGRpcmVjdGlvbi4KICAgICAgICAgaWYg
KCFpbmRleE9mTGVmdG1vc3RHbHlwaEluQ3VycmVudFJ1biAmJiBnbHlwaEJ1ZmZlcikKLSAgICAg
ICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2Uo
Y29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBjb21wbGV4VGV4dFJ1bi5p
bml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKSk7CisgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+c2V0
SW5pdGlhbEFkdmFuY2UoY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGNvbXBsZXhUZXh0UnVuLmlu
aXRpYWxBZHZhbmNlKCkpKTsKIAogICAgICAgICB3aGlsZSAobV9nbHlwaEluQ3VycmVudFJ1biA8
IGdseXBoQ291bnQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBoU3RhcnRPZmZzZXQgPSBj
b21wbGV4VGV4dFJ1bi5pbmRleEF0KGdseXBoSW5kZXhJbnRvQ3VycmVudFJ1bik7CkBAIC02MDQs
MjMgKzYwNCwyMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25l
ZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogCiAgICAgICAgICAgICBpZiAo
Z2x5cGhCdWZmZXIgJiYgIW1fY2hhcmFjdGVySW5DdXJyZW50R2x5cGgpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGN1cnJlbnRHbHlwaE9yaWdpbiA9IGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRv
Q29tcGxleFRleHRDb250cm9sbGVyKTsKLSAgICAgICAgICAgICAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgcGFpbnRBZHZhbmNlKGFkanVzdGVkQmFzZUFkdmFuY2UpOworICAgICAgICAgICAgICAgIEds
eXBoQnVmZmVyQWR2YW5jZSBwYWludEFkdmFuY2UgPSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2Uo
YWRqdXN0ZWRCYXNlQWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFnbHlwaEluZGV4SW50
b0N1cnJlbnRSdW4pIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGxheW91dCBh
ZHZhbmNlIG9mIGV2ZXJ5IHJ1biBpbmNsdWRlcyB0aGUgImluaXRpYWwgbGF5b3V0IGFkdmFuY2Uu
IiBIb3dldmVyLCBoZXJlLCB3ZSBuZWVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhaW50IGFk
dmFuY2VzLCBzbyBzdWJ0cmFjdCBpdCBvdXQgYmVmb3JlIHRyYW5zZm9ybWluZyB0aGUgbGF5b3V0
IGFkdmFuY2UgaW50byBhIHBhaW50IGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50
QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIChjb21wbGV4VGV4dFJ1bi5p
bml0aWFsQWR2YW5jZSgpLndpZHRoKCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdo
dCgpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJyZW50
R2x5cGhPcmlnaW4ueSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2
YW5jZVdpZHRoKHBhaW50QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgocGFpbnRBZHZh
bmNlKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkgLSBjdXJyZW50
R2x5cGhPcmlnaW4ueCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2
YW5jZUhlaWdodChwYWludEFkdmFuY2UsIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChwYWludEFk
dmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJy
ZW50R2x5cGhPcmlnaW4ueSgpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSArIGdseXBoT3JpZ2lu
KGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEds
eXBoT3JpZ2luLngoKSk7Ci0gICAgICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldEhlaWdodChw
YWludEFkdmFuY2UuaGVpZ2h0KCkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhU
ZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi55KCkpOworICAgICAg
ICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKHBhaW50QWR2YW5jZSwgZ2x5cGhC
dWZmZXJBZHZhbmNlV2lkdGgocGFpbnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJ
bnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngo
KSk7CisgICAgICAgICAgICAgICAgc2V0R2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KHBhaW50QWR2
YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KHBhaW50QWR2YW5jZSkgKyBnbHlwaE9yaWdp
bihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1cnJlbnRH
bHlwaE9yaWdpbi55KCkpOwogICAgICAgICAgICAgICAgIGlmIChnbHlwaEluZGV4SW50b0N1cnJl
bnRSdW4gPT0gZ2x5cGhDb3VudCAtIDEgJiYgY3VycmVudFJ1bkluZGV4ICsgMSA8IHJ1bkNvdW50
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE91ciBwYWludCBhZHZhbmNlIHBvaW50cyB0byB0
aGUgZW5kIG9mIHRoZSBydW4uIEhvd2V2ZXIsIHRoZSBuZXh0IHJ1biBtYXkgaGF2ZSBhbgogICAg
ICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIGFkdmFuY2UsIGFuZCBvdXIgcGFpbnQgYWR2YW5j
ZSBuZWVkcyB0byBwb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIG5leHQKICAgICAgICAgICAg
ICAgICAgICAgLy8gZ2x5cGguIFNvLCB3ZSBuZWVkIHRvIGFkZCBpbiB0aGUgbmV4dCBydW4ncyBp
bml0aWFsIGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0
aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxl
eFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bklu
ZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpIC0gZ2x5cGhPcmln
aW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgKyBtX2NvbXBs
ZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQo
KSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKHBhaW50
QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgocGFpbnRBZHZhbmNlKSAtIGdseXBoT3Jp
Z2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21w
bGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChwYWlu
dEFkdmFuY2UsIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChwYWludEFkdmFuY2UpIC0gZ2x5cGhP
cmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgKyBtX2Nv
bXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS5oZWln
aHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5z
ZXRIZWlnaHQoLXBhaW50QWR2YW5jZS5oZWlnaHQoKSk7IC8vIEluY3JlYXNpbmcgeSBwb2ludHMg
ZG93bgorICAgICAgICAgICAgICAgIHNldEdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChwYWludEFk
dmFuY2UsIC1nbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQocGFpbnRBZHZhbmNlKSk7IC8vIEluY3Jl
YXNpbmcgeSBwb2ludHMgZG93bgogICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQobV9h
ZGp1c3RlZEdseXBoc1tnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlcl0sICZjb21w
bGV4VGV4dFJ1bi5mb250KCksIHBhaW50QWR2YW5jZSwgY29tcGxleFRleHRSdW4uaW5kZXhBdCht
X2dseXBoSW5DdXJyZW50UnVuKSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA4MGZhYmIzMmFkYmY2
OWNjMWU0ODBiMTdiZDFjNjk5Yzg5ZGY0MjZjLi5mNTg2MWQzYzkwOTRjODZjNGYyZjNkZGFlNjBm
N2RjODQ3NzBjMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQpIGNvbnN0CiAgICAgICAgIC8vIHByb2R1
Y2UgZGlmZmVyZW50IHJ1biB3aWR0aC4KICAgICAgICAgZmxvYXQgcnVuV2lkdGhEaWZmZXJlbmNl
V2l0aFRyYW5zZm9ybUFwcGxpZWQgPSAtcnVuV2lkdGg7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBydW5XaWR0aERp
ZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSku
d2lkdGgoKTsKKyAgICAgICAgICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBs
aWVkICs9IGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7
CiAgICAgICAgIHJ1bldpZHRoICs9IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBs
aWVkOwogICAgIH0KIApAQCAtMTQxOCwxNiArMTQxOCwxNiBAQCBHbHlwaEJ1ZmZlciBGb250Q2Fz
Y2FkZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9t
LCB1bgogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5jZXMuCiAgICAgICAg
IEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9hdFNpemUoZHVtbXlHbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZmxv
YXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRTaXplKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBmbG9hdFNp
emVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2Ugc3VidHJhY3QgdGhlIG90aGVyIGluaXRpYWwgYWR2
YW5jZT8KICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkp
OwogICAgICAgICBnbHlwaEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gdG9GbG9h
dFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKTsKKyAgICAgICAgRmxvYXRT
aXplIGluaXRpYWxBZHZhbmNlID0gZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZShkdW1t
eUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGluaXRp
YWxBZHZhbmNlICs9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsK
KyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGZsb2F0U2l6ZUZyb21HbHlwaEJ1ZmZlckFk
dmFuY2UoZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICAvLyBGSVhNRTog
U2hvdWxkbid0IHdlIGFkZCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAgICBnbHlw
aEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfQpAQCAtMTQ0
OCw4ICsxNDQ4LDggQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBBU1NFUlQoZ2x5cGhC
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgY29uc3QgRm9udCogZm9udERhdGEgPSBnbHlwaEJ1
ZmZlci5mb250QXQoMCk7CiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQ7Ci0gICAg
ZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53
aWR0aCgpOwotICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CisgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSAr
IGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSk7CisgICAg
ZmxvYXQgbmV4dFkgPSBzdGFydFBvaW50LnkoKSArIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpOwogICAgIHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKICAg
ICB1bnNpZ25lZCBuZXh0R2x5cGggPSAxOwogICAgIHdoaWxlIChuZXh0R2x5cGggPCBnbHlwaEJ1
ZmZlci5zaXplKCkpIHsKQEAgLTE0NjQsOCArMTQ2NCw4IEBAIHZvaWQgRm9udENhc2NhZGU6OmRy
YXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnCiAgICAgICAgICAgICBzdGFydFBvaW50LnNldFgobmV4dFgpOwogICAgICAgICAgICAgc3Rh
cnRQb2ludC5zZXRZKG5leHRZKTsKICAgICAgICAgfQotICAgICAgICBuZXh0WCArPSBnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS53aWR0aCgpOwotICAgICAgICBuZXh0WSArPSBnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS5oZWlnaHQoKTsKKyAgICAgICAgbmV4dFggKz0g
Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG5leHRHbHlwaCkp
OworICAgICAgICBuZXh0WSArPSBnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KG5leHRHbHlwaCkpOwogICAgICAgICBuZXh0R2x5cGgrKzsKICAgICB9CiAKQEAg
LTE1MTAsNyArMTUxMCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAgICAgR2x5cGhCdWZm
ZXIgbWFya0J1ZmZlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGdseXBoQnVm
ZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IG1pZGRsZU9mTmV4dEdseXBoID0gb2Zm
c2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgaSArIDEpOwotICAgICAgICBm
bG9hdCBhZHZhbmNlID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCkgLSBtaWRkbGVP
Zkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOworICAgICAgICBmbG9hdCBhZHZhbmNlID0g
Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKSAtIG1pZGRs
ZU9mTGFzdEdseXBoICsgbWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgICAgIG1hcmtCdWZmZXIuYWRk
KGdseXBoQnVmZmVyLmdseXBoQXQoaSkgPyBtYXJrR2x5cGggOiBzcGFjZUdseXBoLCBtYXJrRm9u
dERhdGEsIGFkdmFuY2UpOwogICAgICAgICBtaWRkbGVPZkxhc3RHbHlwaCA9IG1pZGRsZU9mTmV4
dEdseXBoOwogICAgIH0KQEAgLTE3NTAsNyArMTc1MCw3IEBAIHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+IEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6ZXh0ZW50cygpCiB7CiAgICAgYXV0byBiZWdpbm5p
bmcgPSBtX3RyYW5zbGF0aW9uLm1hcFBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIGF1dG8g
YWR2YW5jZSA9IG1fZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwotICAgIGF1dG8gZW5k
ID0gbV90cmFuc2xhdGlvbi5tYXBTaXplKEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCksIGFkdmFu
Y2UuaGVpZ2h0KCkpKTsKKyAgICBhdXRvIGVuZCA9IG1fdHJhbnNsYXRpb24ubWFwU2l6ZShmbG9h
dFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFuY2UpKTsKICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoYmVnaW5uaW5nLngoKSwgYmVnaW5uaW5nLngoKSArIGVuZC53aWR0aCgpKTsKIH0K
IApAQCAtMTc2Miw3ICsxNzYyLDcgQEAgYXV0byBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OnVuZGVy
bGluZVR5cGUoKSAtPiBHbHlwaFVuZGVybGluZVR5cGUKIHZvaWQgR2x5cGhUb1BhdGhUcmFuc2xh
dG9yOjphZHZhbmNlKCkKIHsKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSA9IG1fZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwotICAgIG1fdHJhbnNsYXRpb24udHJhbnNsYXRl
KEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCksIGFkdmFuY2UuaGVpZ2h0KCkpKTsKKyAgICBtX3Ry
YW5zbGF0aW9uLnRyYW5zbGF0ZShmbG9hdFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKGFkdmFu
Y2UpKTsKICAgICArK21faW5kZXg7CiAgICAgaWYgKG1faW5kZXggPCBtX2dseXBoQnVmZmVyLnNp
emUoKSkKICAgICAgICAgbV9mb250RGF0YSA9IG1fZ2x5cGhCdWZmZXIuZm9udEF0KG1faW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5k
ZXggMTcyZDNhNzgyOGFkMDkwNzMzMGU3YzI0ZmVmNWM5M2M1Zjc2MmJiMC4uNGJlMTAyMzhiN2Ix
OWQ4NTNiODE4YTcyYTQ2ZTlkODUwYmQyM2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0zMSwxNDEgKzMxLDE1IEBACiAKICNpbmNs
dWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIkdseXBoQnVm
ZmVyTWVtYmVycy5oIgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dHZW9tZXRyeS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udDsKIAotI2lmIFVTRShXSU5HREkpCi10eXBlZGVmIHdjaGFyX3QgR2x5cGhCdWZmZXJHbHlw
aDsKLSNlbHNlCi10eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7Ci0jZW5kaWYKLQotLy8g
Q0cgdXNlcyBDR1NpemUgaW5zdGVhZCBvZiBGbG9hdFNpemUgc28gdGhhdCB0aGUgcmVzdWx0IG9m
IGFkdmFuY2VzKCkKLS8vIGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0dDb250ZXh0U2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyBpbiBGb250TWFjLm1tCi0jaWYgVVNFKENHKQotCi1zdHJ1Y3QgR2x5
cGhCdWZmZXJBZHZhbmNlIDogQ0dTaXplIHsKLXB1YmxpYzoKLSAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UoKQotICAgICAgICA6IENHU2l6ZShDR1NpemVaZXJvKQotICAgIHsKLSAgICB9Ci0gICAgR2x5
cGhCdWZmZXJBZHZhbmNlKEZsb2F0U2l6ZSBzaXplKQotICAgICAgICA6IENHU2l6ZShzaXplKQot
ICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpCi0gICAgICAgIDogQ0dTaXplKENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCkpCi0gICAg
ewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwotCi0gICAgb3BlcmF0b3IgRmxv
YXRTaXplKCkgeyByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjp3aWR0
aCksIHN0YXRpY19jYXN0PGZsb2F0Pih0aGlzLT5DR1NpemU6OmhlaWdodCkgfTsgfQotCi0gICAg
dm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyB0aGlzLT5DR1NpemU6OndpZHRoID0gd2lkdGg7
IH0KLSAgICB2b2lkIHNldEhlaWdodChmbG9hdCBoZWlnaHQpIHsgdGhpcy0+Q0dTaXplOjpoZWln
aHQgPSBoZWlnaHQ7IH0KLSAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNH
U2l6ZTo6d2lkdGg7IH0KLSAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5D
R1NpemU6OmhlaWdodDsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgR2x5
cGhCdWZmZXJBZHZhbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IHdpZHRoKCk7Ci0gICAgZW5jb2RlciA8PCBoZWlnaHQoKTsKLX0KLQotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gR2x5cGhCdWZm
ZXJBZHZhbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxmbG9h
dD4gd2lkdGg7Ci0gICAgZGVjb2RlciA+PiB3aWR0aDsKLSAgICBpZiAoIXdpZHRoKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGhlaWdodDsKLSAg
ICBkZWNvZGVyID4+IGhlaWdodDsKLSAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHbHlwaEJ1ZmZlckFkdmFuY2UoKndpZHRoLCAqaGVp
Z2h0KTsKLX0KLQotc3RydWN0IEdseXBoQnVmZmVyT3JpZ2luIDogQ0dQb2ludCB7Ci1wdWJsaWM6
Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4oKQotICAgICAgICA6IENHUG9pbnQoQ0dQb2ludFplcm8p
Ci0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlck9yaWdpbihGbG9hdFBvaW50IHBvaW50KQot
ICAgICAgICA6IENHUG9pbnQocG9pbnQpCi0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlck9y
aWdpbihmbG9hdCB4LCBmbG9hdCB5KQotICAgICAgICA6IENHUG9pbnQoQ0dQb2ludE1ha2UoeCwg
eSkpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8R2x5cGhCdWZmZXJPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7Ci0KLSAgICBvcGVy
YXRvciBGbG9hdFBvaW50KCkgeyByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dQ
b2ludDo6eCksIHN0YXRpY19jYXN0PGZsb2F0Pih0aGlzLT5DR1BvaW50Ojp5KSB9OyB9Ci0KLSAg
ICB2b2lkIHNldFgoZmxvYXQgeCkgeyB0aGlzLT5DR1BvaW50Ojp4ID0geDsgfQotICAgIHZvaWQg
c2V0WShmbG9hdCB5KSB7IHRoaXMtPkNHUG9pbnQ6OnkgPSB5OyB9Ci0gICAgZmxvYXQgeCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9pbnQ6Ong7IH0KLSAgICBmbG9hdCB5KCkgY29uc3QgeyBy
ZXR1cm4gdGhpcy0+Q0dQb2ludDo6eTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
LXZvaWQgR2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ewotICAgIGVuY29kZXIgPDwgeCgpOwotICAgIGVuY29kZXIgPDwgeSgpOwotfQotCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8R2x5cGhCdWZmZXJPcmlnaW4+IEdseXBoQnVmZmVy
T3JpZ2luOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxmbG9hdD4g
eDsKLSAgICBkZWNvZGVyID4+IHg7Ci0gICAgaWYgKCF4KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHk7Ci0gICAgZGVjb2RlciA+PiB5OwotICAg
IGlmICgheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHbHlw
aEJ1ZmZlck9yaWdpbigqeCwgKnkpOwotfQotCi11c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNl
dCA9IENGSW5kZXg7Ci0KLSNlbHNlCi0KLXVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0
U2l6ZTsKLXVzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKLXVzaW5nIEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7Ci0KLSNlbmRpZiAvLyAjaWYgVVNFKENHKQot
Ci1pbmxpbmUgRmxvYXRTaXplIHRvRmxvYXRTaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYg
YSkKLXsKLSAgICByZXR1cm4gRmxvYXRTaXplKGEud2lkdGgoKSwgYS5oZWlnaHQoKSk7Ci19Ci0K
IGNsYXNzIEdseXBoQnVmZmVyIHsKIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRzLmlzRW1wdHkoKTsgfQpAQCAtMjAzLDggKzc3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBGb250KiBmb250LCBmbG9hdCB3aWR0aCwg
R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgb2Zmc2V0SW5TdHJpbmcgPSBub09mZnNldCkKICAgICB7
CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlOwotICAgICAgICBhZHZhbmNlLnNl
dFdpZHRoKHdpZHRoKTsKLSAgICAgICAgYWR2YW5jZS5zZXRIZWlnaHQoMCk7CisgICAgICAgIHNl
dEdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UsIHdpZHRoKTsKKyAgICAgICAgc2V0R2x5
cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGFkdmFuY2UsIDApOwogICAgICAgICBhZGQoZ2x5cGgsIGZv
bnQsIGFkdmFuY2UsIG9mZnNldEluU3RyaW5nKTsKICAgICB9CiAKQEAgLTIxMyw3ICs4Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb250cy5hcHBlbmQoZm9udCk7CiAgICAgICAgIG1fZ2x5cGhz
LmFwcGVuZChnbHlwaCk7CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwotICAg
ICAgICBtX29yaWdpbnMuYXBwZW5kKEdseXBoQnVmZmVyT3JpZ2luKCkpOworICAgICAgICBtX29y
aWdpbnMuYXBwZW5kKGNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKCkpOwogICAgICAgICBtX29mZnNl
dHNJblN0cmluZy5hcHBlbmQob2Zmc2V0SW5TdHJpbmcpOwogICAgIH0KIApAQCAtMjMxLDkgKzEw
NSw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGxvY2F0aW9uIDw9IHNpemUoKSk7CiAKICAg
ICAgICAgbV9mb250cy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3Rvcjxjb25zdCBGb250Kj4o
bGVuZ3RoLCBmb250KSk7Ci0gICAgICAgIG1fZ2x5cGhzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwg
VmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+KGxlbmd0aCwgMHhGRkZGKSk7Ci0gICAgICAgIG1fYWR2
YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlPihs
ZW5ndGgsIEdseXBoQnVmZmVyQWR2YW5jZSgwLCAwKSkpOwotICAgICAgICBtX29yaWdpbnMuaW5z
ZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJPcmlnaW4+KGxlbmd0aCwgR2x5
cGhCdWZmZXJPcmlnaW4oKSkpOworICAgICAgICBtX2dseXBocy5pbnNlcnRWZWN0b3IobG9jYXRp
b24sIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPihsZW5ndGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8
R2x5cGhCdWZmZXJHbHlwaD46Om1heCgpKSk7CisgICAgICAgIG1fYWR2YW5jZXMuaW5zZXJ0VmVj
dG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlPihsZW5ndGgsIGNyZWF0ZUds
eXBoQnVmZmVyQWR2YW5jZSgpKSk7CisgICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0b3IobG9j
YXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCBjcmVhdGVHbHlwaEJ1ZmZl
ck9yaWdpbigpKSk7CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLmluc2VydFZlY3Rvcihsb2Nh
dGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0PihsZW5ndGgsIDApKTsKICAgICB9
CiAKQEAgLTI0NywxNSArMTIxLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
aXNFbXB0eSgpKTsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1f
YWR2YW5jZXMubGFzdCgpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5j
ZS53aWR0aCgpICsgd2lkdGgpOworICAgICAgICBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChs
YXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgobGFzdEFkdmFuY2UpICsgd2lkdGgp
OwogICAgIH0KIAogICAgIHZvaWQgZXhwYW5kTGFzdEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNl
IGV4cGFuc2lvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICAgICAg
R2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMubGFzdCgpOwotICAg
ICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsgZXhwYW5zaW9u
LndpZHRoKCkpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRIZWlnaHQobGFzdEFkdmFuY2UuaGVp
Z2h0KCkgKyBleHBhbnNpb24uaGVpZ2h0KCkpOworICAgICAgICBzZXRHbHlwaEJ1ZmZlckFkdmFu
Y2VXaWR0aChsYXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgobGFzdEFkdmFuY2Up
ICsgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZXhwYW5zaW9uKSk7CisgICAgICAgIHNldEdseXBo
QnVmZmVyQWR2YW5jZUhlaWdodChsYXN0QWR2YW5jZSwgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0
KGxhc3RBZHZhbmNlKSArIGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChleHBhbnNpb24pKTsKICAg
ICB9CiAKICAgICB2b2lkIHNocmluayh1bnNpZ25lZCB0cnVuY2F0aW9uUG9pbnQpCkBAIC0yNzYs
MTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbGF0dGVuKCkKICAgICB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICAgICAgbV9h
ZHZhbmNlc1tpXSA9IEdseXBoQnVmZmVyQWR2YW5jZSgKLSAgICAgICAgICAgICAgICAtbV9vcmln
aW5zW2ldLngoKSArIG1fYWR2YW5jZXNbaV0ud2lkdGgoKSArIChpICsgMSA8IHNpemUoKSA/IG1f
b3JpZ2luc1tpICsgMV0ueCgpIDogMCksCi0gICAgICAgICAgICAgICAgLW1fb3JpZ2luc1tpXS55
KCkgKyBtX2FkdmFuY2VzW2ldLmhlaWdodCgpICsgKGkgKyAxIDwgc2l6ZSgpID8gbV9vcmlnaW5z
W2kgKyAxXS55KCkgOiAwKQotICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIG1fYWR2YW5jZXNb
aV0gPSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoRmxvYXRTaXplKAorICAgICAgICAgICAgICAg
IC1nbHlwaEJ1ZmZlck9yaWdpblgobV9vcmlnaW5zW2ldKSArIGdseXBoQnVmZmVyQWR2YW5jZVdp
ZHRoKG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8gZ2x5cGhCdWZmZXJPcmlnaW5Y
KG1fb3JpZ2luc1tpICsgMV0pIDogMCksCisgICAgICAgICAgICAgICAgLWdseXBoQnVmZmVyT3Jp
Z2luWShtX29yaWdpbnNbaV0pICsgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KG1fYWR2YW5jZXNb
aV0pICsgKGkgKyAxIDwgc2l6ZSgpID8gZ2x5cGhCdWZmZXJPcmlnaW5ZKG1fb3JpZ2luc1tpICsg
MV0pIDogMCkKKyAgICAgICAgICAgICkpOwogICAgICAgICAgICAgbV9vcmlnaW5zW2ldID0gR2x5
cGhCdWZmZXJPcmlnaW4oKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQzNGI5NDMyMjc3MjVjYzUyMDYzNGJkNzE4YzAwZGM3ZGE4Njk2ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5o
CkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9y
Y2ggTW9iaWxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR2x5
cGguaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHRm9udC5oPgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5
Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGUgQ0cgcG9ydHMgdXNl
IHRoZSBDRyB0eXBlcyBkaXJlY3RseSwgc28gYW4gYXJyYXkgb2YgdGhlc2UgdHlwZXMgY2FuIGJl
IGZlZCBkaXJlY3RseSBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkuCisjaWYgVVNFKENHKQordXNp
bmcgR2x5cGhCdWZmZXJHbHlwaCA9IENHR2x5cGg7Cit1c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2Ug
PSBDR1NpemU7Cit1c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IENHUG9pbnQ7Cit1c2luZyBHbHlw
aEJ1ZmZlclN0cmluZ09mZnNldCA9IENGSW5kZXg7CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcg
R2x5cGhCdWZmZXJHbHlwaCA9IHdjaGFyX3Q7Cit1c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBG
bG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0UG9pbnQ7Cit1c2luZyBH
bHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOworI2Vsc2UKK3VzaW5nIEdseXBoQnVm
ZmVyR2x5cGggPSBHbHlwaDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6ZTsK
K3VzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKK3VzaW5nIEdseXBoQnVmZmVy
U3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7CisjZW5kaWYKKworaW5saW5lIEdseXBoQnVmZmVyQWR2
YW5jZSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiA9IEZsb2F0U2l6
ZSgpKTsKK2lubGluZSBGbG9hdFNpemUgZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZShj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyQWR2
YW5jZVdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYsIGZsb2F0KTsKK2lubGluZSB2b2lkIHNldEds
eXBoQnVmZmVyQWR2YW5jZUhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7Citpbmxp
bmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
Jik7CitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSYpOworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIGNyZWF0ZUdseXBoQnVmZmVy
T3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmID0gRmxvYXRQb2ludCgpKTsKK2lubGluZSBGbG9hdFBv
aW50IGZsb2F0UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgR2x5cGhCdWZmZXJPcmln
aW4mKTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWChHbHlwaEJ1ZmZlck9yaWdp
biYsIGZsb2F0KTsKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWShHbHlwaEJ1ZmZl
ck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSBmbG9hdCBnbHlwaEJ1ZmZlck9yaWdpblgoY29uc3Qg
R2x5cGhCdWZmZXJPcmlnaW4mKTsKK2lubGluZSBmbG9hdCBnbHlwaEJ1ZmZlck9yaWdpblkoY29u
c3QgR2x5cGhCdWZmZXJPcmlnaW4mKTsKKworI2lmIFVTRShDRykKKworaW5saW5lIEdseXBoQnVm
ZmVyQWR2YW5jZSBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXpl
KQoreworICAgIHJldHVybiBDR1NpemVNYWtlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgZmxvYXRTaXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZShj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIEZsb2F0U2l6
ZShhZHZhbmNlLndpZHRoLCBhZHZhbmNlLmhlaWdodCk7Cit9CisKK2lubGluZSB2b2lkIHNldEds
eXBoQnVmZmVyQWR2YW5jZVdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSwgZmxvYXQg
d2lkdGgpCit7CisgICAgYWR2YW5jZS53aWR0aCA9IHdpZHRoOworfQorCitpbmxpbmUgdm9pZCBz
ZXRHbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBm
bG9hdCBoZWlnaHQpCit7CisgICAgYWR2YW5jZS5oZWlnaHQgPSBoZWlnaHQ7Cit9CisKK2lubGlu
ZSBmbG9hdCBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Um
IGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFuY2Uud2lkdGg7Cit9CisKK2lubGluZSBmbG9h
dCBnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZh
bmNlKQoreworICAgIHJldHVybiBhZHZhbmNlLmhlaWdodDsKK30KKworaW5saW5lIEdseXBoQnVm
ZmVyT3JpZ2luIGNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50LnkoKSk7Cit9CisK
K2lubGluZSBGbG9hdFBvaW50IGZsb2F0UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4oY29uc3Qg
R2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludChvcmln
aW4ueCwgb3JpZ2luLnkpOworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlck9yaWdpblgo
R2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQgeCkKK3sKKyAgICBvcmlnaW4ueCA9IHg7
Cit9CisKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWShHbHlwaEJ1ZmZlck9yaWdp
biYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi55ID0geTsKK30KKworaW5saW5lIGZs
b2F0IGdseXBoQnVmZmVyT3JpZ2luWChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQor
eworICAgIHJldHVybiBvcmlnaW4ueDsKK30KKworaW5saW5lIGZsb2F0IGdseXBoQnVmZmVyT3Jp
Z2luWShjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW4ueTsKK30KKworI2Vsc2UKKworaW5saW5lIEdseXBoQnVmZmVyQWR2YW5jZSBjcmVhdGVHbHlw
aEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIHJldHVybiBzaXpl
OworfQorCitpbmxpbmUgRmxvYXRTaXplIGZsb2F0U2l6ZUZyb21HbHlwaEJ1ZmZlckFkdmFuY2Uo
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBhZHZhbmNl
OworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChHbHlwaEJ1ZmZl
ckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uuc2V0V2lkdGgo
d2lkdGgpOworfQorCitpbmxpbmUgdm9pZCBzZXRHbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoR2x5
cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBmbG9hdCBoZWlnaHQpCit7CisgICAgYWR2YW5jZS5z
ZXRIZWlnaHQoaGVpZ2h0KTsKK30KKworaW5saW5lIGZsb2F0IGdseXBoQnVmZmVyQWR2YW5jZVdp
ZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2
YW5jZS53aWR0aCgpOworfQorCitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0
KGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5j
ZS5oZWlnaHQoKTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIGNyZWF0ZUdseXBoQnVm
ZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBwb2ludDsK
K30KKworaW5saW5lIEZsb2F0UG9pbnQgZmxvYXRQb2ludEZyb21HbHlwaEJ1ZmZlck9yaWdpbihj
b25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmlnaW47Cit9
CisKK2lubGluZSB2b2lkIHNldEdseXBoQnVmZmVyT3JpZ2luWChHbHlwaEJ1ZmZlck9yaWdpbiYg
b3JpZ2luLCBmbG9hdCB4KQoreworICAgIG9yaWdpbi5zZXRYKHgpOworfQorCitpbmxpbmUgdm9p
ZCBzZXRHbHlwaEJ1ZmZlck9yaWdpblkoR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQg
eSkKK3sKKyAgICBvcmlnaW4uc2V0WSh5KTsKK30KKworaW5saW5lIGZsb2F0IGdseXBoQnVmZmVy
T3JpZ2luWChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBv
cmlnaW4ueCgpOworfQorCitpbmxpbmUgZmxvYXQgZ2x5cGhCdWZmZXJPcmlnaW5ZKGNvbnN0IEds
eXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4pCit7CisgICAgcmV0dXJuIG9yaWdpbi55KCk7Cit9CisK
KyNlbmRpZiAvLyAjaWYgVVNFKENHKQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IDYxNjNiY2UyN2EyNGZiNzNmN2Y0
NzBmMDk5MmFiMWM3MmEwNWVmOWUuLmMwN2MyYjBmZmNiYTRlZTk4NDU4Y2U3YjA2MjRiNWU3Yjdm
NTU2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0
b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBib29sIGwK
ICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzID0gZ2x5cGhCdWZmZXItPmFkdmFuY2Vz
KDApOwogICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
YXN0R2x5cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBiZWZvcmVX
aWR0aCArPSBhZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBiZWZvcmVXaWR0aCArPSBnbHlw
aEJ1ZmZlckFkdmFuY2VXaWR0aChhZHZhbmNlc1tpXSk7CiAKICAgICBBU1NFUlQobGFzdEdseXBo
Q291bnQgPD0gZ2x5cGhCdWZmZXJTaXplKTsKICAgICBpZiAoIWx0cikKQEAgLTExMSw3ICsxMTEs
NyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlw
aEJ1ZmZlciogZ2x5cGhCdWZmZXIsIGJvb2wgbAogICAgIGdseXBoQnVmZmVyU2l6ZSA9IGdseXBo
QnVmZmVyLT5zaXplKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhDb3VudDsg
aSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBhZHZhbmNlc1tpXS5zZXRIZWlnaHQo
LWFkdmFuY2VzW2ldLmhlaWdodCgpKTsKKyAgICAgICAgc2V0R2x5cGhCdWZmZXJBZHZhbmNlSGVp
Z2h0KGFkdmFuY2VzW2ldLCAtZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGFkdmFuY2VzW2ldKSk7
CiAKICAgICBpZiAoIWx0cikKICAgICAgICAgZ2x5cGhCdWZmZXItPnJldmVyc2UobGFzdEdseXBo
Q291bnQsIGdseXBoQnVmZmVyU2l6ZSAtIGxhc3RHbHlwaENvdW50KTsKQEAgLTEyNiwxNCArMTI2
LDE0IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEds
eXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBsCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgY29uc3QgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlJiBv
cmlnaW5hbEFkdmFuY2VzID0gY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlW2ldLnNlY29uZDsKICAg
ICAgICAgaWYgKHNwYWNlT2Zmc2V0ICYmICFvcmlnaW5hbEFkdmFuY2VzLmNoYXJhY3RlcklzU3Bh
Y2UpCi0gICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWR2YW5jZXMoc3BhY2VPZmZzZXQgLSAxKS0+
c2V0V2lkdGgob3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQmVmb3JlQ2hhcmFjdGVyKTsKLSAgICAg
ICAgZ2x5cGhCdWZmZXItPmFkdmFuY2VzKHNwYWNlT2Zmc2V0KS0+c2V0V2lkdGgob3JpZ2luYWxB
ZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIpOworICAgICAgICAgICAgc2V0R2x5cGhCdWZmZXJB
ZHZhbmNlV2lkdGgoKmdseXBoQnVmZmVyLT5hZHZhbmNlcyhzcGFjZU9mZnNldCAtIDEpLCBvcmln
aW5hbEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOworICAgICAgICBzZXRHbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aCgqZ2x5cGhCdWZmZXItPmFkdmFuY2VzKHNwYWNlT2Zmc2V0KSwgb3Jp
Z2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIpOwogICAgIH0KICAgICBjaGFyYWN0ZXJz
VHJlYXRlZEFzU3BhY2UuY2xlYXIoKTsKIAogICAgIGZsb2F0IGFmdGVyV2lkdGggPSAwOwogICAg
IGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXplOyAr
K2kpCi0gICAgICAgIGFmdGVyV2lkdGggKz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKKyAgICAgICAg
YWZ0ZXJXaWR0aCArPSBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChhZHZhbmNlc1tpXSk7CiAKICAg
ICBsYXN0R2x5cGhDb3VudCA9IGdseXBoQnVmZmVyU2l6ZTsKICAgICByZXR1cm4gYWZ0ZXJXaWR0
aCAtIGJlZm9yZVdpZHRoOwpAQCAtMzE5LDcgKzMxOSw3IEBAIGlubGluZSB2b2lkIFdpZHRoSXRl
cmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGhC
dWZmCiAgICAgICAgIGF1dG8gdHJhbnNmb3Jtc1R5cGUgPSBzaG91bGRBcHBseUZvbnRUcmFuc2Zv
cm1zKGdseXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwgcHJldmlvdXNDaGFyYWN0ZXIpOwogICAg
ICAgICBpZiAodHJhbnNmb3Jtc1R5cGUgIT0gVHJhbnNmb3Jtc1R5cGU6Ok5vbmUgJiYgZ2x5cGhC
dWZmZXIgJiYgRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpKSB7CiAgICAgICAg
ICAgICBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGdseXBo
QnVmZmVyLT5zaXplKCksCi0gICAgICAgICAgICAgICAgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJh
Y3RlclRyZWF0ZWRBc1NwYWNlKGNoYXJhY3RlciA9PSAnICcsIGdseXBoQnVmZmVyLT5zaXplKCkg
PyBnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoQnVmZmVyLT5zaXplKCkgLSAxKS53aWR0aCgp
IDogMCwgd2lkdGgpKSk7CisgICAgICAgICAgICAgICAgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJh
Y3RlclRyZWF0ZWRBc1NwYWNlKGNoYXJhY3RlciA9PSAnICcsIGdseXBoQnVmZmVyLT5zaXplKCkg
PyBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoQnVm
ZmVyLT5zaXplKCkgLSAxKSkgOiAwLCB3aWR0aCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX2FjY291bnRGb3JHbHlwaEJvdW5kcykgewpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgV2lk
dGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNoYXJhY3RlcihmbG9hdCYgd2lkdGgsIEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlcikKICAgICBhZHZhbmNlKG1fY3VycmVudENoYXJhY3RlckluZGV4ICsgMSwg
JmdseXBoQnVmZmVyKTsKICAgICBmbG9hdCB3ID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBv
bGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIHcgKz0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgIHcgKz0gZ2x5cGhCdWZmZXJBZHZh
bmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICB3aWR0aCA9IHc7CiAgICAg
cmV0dXJuIGdseXBoQnVmZmVyLnNpemUoKSA+IG9sZFNpemU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggOWUwMDcwNDM4YTcxMTE5M2U4N2RjMjllMzcyY2Q1MDFl
YzNlMTljMC4uOWZlODY4Yjc3NGFlMWQ0MDRmMjE0ODFhMmRiNzM2NDA4NmJlZjU5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTYzLDEwICs1NjMsMTAgQEAgdm9p
ZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKICAgICBzaXplX3QgbnVtR2x5cGhzID0gbV9n
bHlwaHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kp
IHsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2FkdmFuY2VzW2ldOwot
ICAgICAgICBGbG9hdFJlY3QgZ2x5cGhSZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgpLCBjdXJy
ZW50LnkoKSAtIGFzY2VudCwgYWR2YW5jZS53aWR0aCgpLCBhc2NlbnQgKyBkZXNjZW50KTsKKyAg
ICAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwgY3VycmVu
dC55KCkgLSBhc2NlbnQsIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UpLCBhc2NlbnQg
KyBkZXNjZW50KTsKICAgICAgICAgbV9ib3VuZHMudW5pdGUoZ2x5cGhSZWN0KTsKIAotICAgICAg
ICBjdXJyZW50Lm1vdmUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKTsKKyAgICAg
ICAgY3VycmVudC5tb3ZlKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2UpLCBnbHlwaEJ1
ZmZlckFkdmFuY2VIZWlnaHQoYWR2YW5jZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlN2NkYzhjNzU4YmU2NjdiYzRh
YTRhMThkZTI4ZjlkYjJiNjlkZGUuLmQwOWUwM2Y4N2RlNDZiYTIwZTc2OTUwODhkOTVkZDUxOWE2
OTZiYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOC0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2x5cGhCdWZmZXJBZHZhbmNlIGFuZCBHbHlw
aEJ1ZmZlck9yaWdpbiBtb3JlIHJvYnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjAtMDgtMDQgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIENoZWNrIHRoYXQgQWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5n
IHRoZSBlbmFibGUgQWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKaW5kZXggMDg1MDlmZDdjYzY2ZmQyMmMxMWQ3ODdhMWUzMzdjMTA3YjMyNTgzZi4uOTY0MzE5
OTg5MjBhY2NiZjA3NTY5MDJjMDkyMDA2ZWE4YmY0MTBjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTgwLDE1ICs4MCwxNSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwg
SW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNv
bnRyb2xsZXIuYWR2YW5jZSg2LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRy
b2xsZXIucnVuV2lkdGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgdG90YWxXaWR0aCwgMC4wMDAxKTsK
LSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAs
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5o
ZWlnaHQoKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VX
aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKSksIDAsIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNlUp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBhZHZh
bmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgxKS53aWR0aCgpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCBhZHZhbmNlc1syXS53
aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgz
KS53aWR0aCgpLCBhZHZhbmNlc1sxXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCAtaW5pdGlhbEFkdmFuY2Uud2lkdGgo
KSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNSkud2lk
dGgoKSwgc3BhY2VXaWR0aCArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDApKSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoYWR2YW5jZXNbNF0pLCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgxKSksIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGFkdmFuY2VzWzNdKSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMikpLCBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChhZHZhbmNlc1syXSksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDMpKSwgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoYWR2YW5jZXNbMV0pLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCg0KSksIC1nbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChpbml0aWFsQWR2YW5jZSksIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDUpKSwgc3BhY2VXaWR0aCArIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGluaXRp
YWxBZHZhbmNlKSwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCkBAIC0xMjQsMTUgKzEyNCwxNSBAQCBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTCkKICAgICBFWFBFQ1Rf
TkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4w
MDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsK
LSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIGlu
aXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAu
MDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKICAgICBFWFBF
Q1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCA1VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7Ci0g
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIGFkdmFuY2Vz
WzNdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDIpLndpZHRoKCksIGFkdmFuY2VzWzJdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLndpZHRoKCksIGFkdmFuY2VzWzFdLndpZHRo
KCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndp
ZHRoKCksIC1pbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS5oZWlnaHQoKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0
KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMSkpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIGFkdmFuY2Vz
WzJdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNl
V2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgYWR2YW5jZXNbMV0ud2lkdGgoKSwgMC4w
MDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoNCkpLCAtaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDQpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCkBA
IC0xNzAsMTIgKzE3MCwxMiBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIu
cnVuV2lkdGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgYWR2YW5jZXNbMF0ud2lkdGgoKSArIGluaXRp
YWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDMsICZn
bHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCks
IHNwYWNlV2lkdGggKyA3Ni4zNDc2NTYgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwg
MCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgp
LmhlaWdodCgpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5j
ZVdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2
YW5jZSgpKSwgMCwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCAz
VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIHNw
YWNlV2lkdGggKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCA1My4wNjY0MDYsIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpLndpZHRoKCksIDIzLjI4
MTI1MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCBzcGFjZVdpZHRoICsgaW5pdGlhbEFkdmFuY2Uud2lk
dGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCA1My4wNjY0MDYsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwg
MjMuMjgxMjUwLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVz
dCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKQEAgLTIwOCwxMSArMjA4LDExIEBAIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRSKQogICAgIEVYUEVDVF9O
RUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCBhZHZhbmNlc1swXS53aWR0aCgpICsgaW5p
dGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoMiwg
JmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIo
KSwgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIGluaXRpYWxBZHZh
bmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlh
bEFkdmFuY2UoKS5oZWlnaHQoKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlh
bEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNl
KCkpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5
cGhCdWZmZXIuc2l6ZSgpLCAyVSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDApLndpZHRoKCksIDUzLjA2NjQwNiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgMjMuMjgxMjUwLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgw
KSksIDUzLjA2NjQwNiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFu
Y2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCAyMy4yODEyNTAsIDAuMDAwMSk7CiB9
CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRM
Tm9PcmlnaW5zKQpAQCAtMjUxLDE0ICsyNTEsMTQgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiAgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7CiAgICAgY29u
dHJvbGxlci5hZHZhbmNlKDQsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJv
bGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53
aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwg
aW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVm
ZmVyLnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgw
KS53aWR0aCgpLCA0My44MTE5MzQ5MDA1NDI1LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCAxMi4wLCAwLjAwMDEpOwotICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAxNC4wMzk3ODMwMDE4MDgz
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0
aCgpLCAtNC4zMzk5NjM4MzM2MzQ3MiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMykuaGVpZ2h0KCksIDEyLjM2ODg5NjkyNTg1OSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMCkpLCA0My44MTE5MzQ5MDA1NDI1LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIDEyLjAsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDIpKSwgMTQuMDM5NzgzMDAxODA4MywgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
UihnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCAtNC4z
Mzk5NjM4MzM2MzQ3MiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgMTIuMzY4ODk2OTI1ODU5LCAwLjAw
MDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVhZGluZ0V4cGFu
c2lvbikKQEAgLTI4NSwxMCArMjg1LDEwIEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJU
ZXN0LCBMZWFkaW5nRXhwYW5zaW9uKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lk
dGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgxLCAmZ2x5cGhC
dWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3Rh
bFdpZHRoLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkud2lkdGgoKSwgMTAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
LmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIo
Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDEw
MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQoZ2x5
cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGds
eXBoQnVmZmVyLnNpemUoKSwgMVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgwKS53aWR0aCgpLCAyNCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCAyNCwgMC4wMDAxKTsKIH0K
IAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCkBA
IC0zMjIsMTcgKzMyMiwxNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVy
dGljYWxBZHZhbmNlcykKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIo
KSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNCwgJmdseXBoQnVmZmVyKTsK
ICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsK
LSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAs
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5o
ZWlnaHQoKSwgMTYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNl
V2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkpLCAxNiwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCA0
VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIDAs
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdo
dCgpLCA0IC0gMSAtOCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMSkud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMSkuaGVpZ2h0KCksIDggLSAyIC0gNTEyLCAwLjAwMDEpOwotICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS5oZWlnaHQoKSwgMTI4IC0gMzIg
LSAyNTYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMp
LndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDMpLmhlaWdodCgpLCAyNTYgLSA2NCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlw
aEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCAwLCAwLjAwMDEp
OworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMCkpLCA0IC0gMSAtOCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCAwLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMSkpLCA4IC0gMiAtIDUxMiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikpLCAwLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMikpLCAxMjggLSAzMiAtIDI1NiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlw
aEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCAwLCAwLjAwMDEp
OworICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZUhlaWdodChnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMykpLCAyNTYgLSA2NCwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKQEAgLTM2MSw3ICsz
NjEsMTIgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFRvdGFsV2lkdGhXaXRo
SnVzdGlmaWNhdGlvbikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIo
KSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNSwgJmdseXBoQnVmZmVyKTsK
ICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCA1VSk7Ci0gICAgRVhQRUNUX05FQVIo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQo
MSkud2lkdGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpICsgZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDMpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkud2lkdGgo
KSwgY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSkK
KyAgICAgICAgKyBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQo
MSkpCisgICAgICAgICsgZ2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDIpKQorICAgICAgICArIGdseXBoQnVmZmVyQWR2YW5jZVdpZHRoKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgzKSkKKyAgICAgICAgKyBnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoNCkpCisgICAgICAgICwgY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0
aCgpLCAwLjAwMDEpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405984</attachid>
            <date>2020-08-04 21:49:54 -0700</date>
            <delta_ts>2020-09-05 05:17:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215143-20200804214954.patch</filename>
            <type>text/plain</type>
            <size>46939</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2NjQ5MGJiZjJjNDc4
NmVlYzU2N2UxOTYzNGIzYjc4YmMzY2M4NS4uNDNmYTA4NWM0NTg2MjZjYmYwMTM4M2ZkNzQzOGFh
OTJiMGNlNzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA4LTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHbHlwaEJ1ZmZlciBjb250
YWlucyB2ZWN0b3JzIG9mIGFkdmFuY2VzIGFuZCBvcmlnaW5zLCB3aGljaCBhcmUgY29uY2VwdHVh
bGx5CisgICAgICAgIEZsb2F0U2l6ZXMgYW5kIEZsb2F0UG9pbnRzLiBIb3dldmVyLCB3ZSBuZWVk
IHRvIHBhc3MgdGhlc2UgYXJyYXlzIGludG8gQ1RGb250U2hhcGVHbHlwaHMoKQorICAgICAgICBv
ciBDVEZvbnRUcmFuc2Zvcm1HbHlwaHNXaXRoTGFuZ3VhZ2UoKSwgd2hpY2ggZXhwZWN0cyB0aGVz
ZSB2ZWN0b3JzIHRvIHVzZSBwbGF0Zm9ybSB0eXBlcy4KKyAgICAgICAgUmF0aGVyIHRoYW4gY29u
dmVydGluZyBpbi9vdXQgb2YgcGxhdGZvcm0gdHlwZXMgYXJvdW5kIHRoZSBjYWxsIHNpdGUsIHdl
IGNhbiBzaW1wbHkgdXNlCisgICAgICAgIHRoZSBwbGF0Zm9ybSB0eXBlcyB0aHJvdWdob3V0LiBJ
bmRlZWQsIHRoYXQncyB3aGF0IHdlJ3JlIGRvaW5nIHRvZGF5LgorCisgICAgICAgIEhvd2V2ZXIs
IHRoZSBtZWNoYW5pc20gd2UgdXNlIHRvZGF5IHRvIG1ha2UgdGhpcyBwbGF0Zm9ybS1pbmRlcGVu
ZGVudCBpcyB0byBtYWtlIGEgc3RydWN0CisgICAgICAgIHdoaWNoIGluaGVyaXRzIGZyb20gdGhl
IHBsYXRmb3JtIHR5cGVzLiBUaGVuLCB3ZSBzdGF0aWNfY2FzdCB0aGUgYXJyYXkgb2YgdGhlIHN0
cnVjdCB0bworICAgICAgICBhbiBhcnJheSBvZiB0aGUgYmFzZSB0eXBlLiBUaGlzIGlzIGJyaXR0
bGUsIGJlY2F1c2UgaXQgcmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlCisgICAgICAg
IHN0cnVjdCBkb2Vzbid0IGhhdmUgYW55IG1lbWJlcnMgYWRkZWQgdG8gaXQsIHdoaWNoIHdvdWxk
IGNoYW5nZSB0aGUgc3RyaWRlIG9mIHRoZSBhcnJheQorICAgICAgICBhbmQgZmVlZCBnYXJiYWdl
IGludG8gdGhlIHNoYXBpbmcgZnVuY3Rpb24uCisKKyAgICAgICAgSW5zdGVhZCwgYSBiZXR0ZXIg
ZGVzaWduIGlzIHRvIHR5cGVkZWYgdGhlIG5hdGl2ZSB0eXBlLCBhbmQgaGF2ZSBhbGwgaW50ZXJh
Y3Rpb25zIHdpdGggdGhlCisgICAgICAgIHR5cGVzIGdvIHRocm91Z2ggc3RhbmRhbG9uZSBmdW5j
dGlvbnMgd2hpY2ggZGVhbCB3aXRoIHRoZSBuYXRpdmUgdHlwZS4gVGhhdCB3YXksIHdlIGNhbid0
CisgICAgICAgIGFjY2lkZW50YWxseSBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGFycmF5IGVsZW1l
bnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmFkdmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhU
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoVG9QYXRoVHJhbnNsYXRvcjo6ZXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
OjptYWtlSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6ZXhwYW5kTGFzdEFk
dmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmZsYXR0ZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpHbHlwaEJ1ZmZlckFkdmFuY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpvcGVyYXRvciBGbG9h
dFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6
OnNldEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFu
Y2U6OndpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVy
QWR2YW5jZTo6aGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
QnVmZmVyQWR2YW5jZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdseXBoQnVmZmVyT3JpZ2luOjpHbHlwaEJ1ZmZlck9yaWdpbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6b3BlcmF0b3IgRmxvYXRQb2ludCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6c2V0WSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6eSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyT3JpZ2luOjpkZWNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dG9GbG9hdFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9h
dFNpemVGcm9tR2x5cGhCdWZmZXJBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBo
QnVmZmVyQWR2YW5jZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyQWR2
YW5jZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlckFkdmFuY2VIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Zmxv
YXRQb2ludEZyb21HbHlwaEJ1ZmZlck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlw
aEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhCdWZmZXJPcmlnaW5Z
KToKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoQnVmZmVyT3JpZ2luWCk6CisgICAgICAgIChXZWJD
b3JlOjpnbHlwaEJ1ZmZlck9yaWdpblkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphZHZhbmNl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZU9uZUNo
YXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmNvbXB1dGVCb3VuZHMpOgorCiAyMDIwLTA4LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICAiRG91YmxlRG93biBDYXNpbm8iIHJlc3BpbiBidXR0b24g
c3RvcHMgd29ya2luZyB3aXRoIHRyYWNrcGFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwNmUzNTE5
YTBkNzRmZGNjMGEwZjAxY2RhOTg0NmZmZWYyOTg4ZmJiLi5lODA5OTc2MWUyYjllZjgyOTY3ODgy
MDIzNTE5NTBlNTU4NGQ2OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMjYsNiArMTEyNiw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGgu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0
cmljc01hcC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDJlMTgwMmM0OWYwOThlOWNjZGU4Y2QzOTlhMzNl
MDgyOGJjYTE5Zi4uYjdmZTI0M2QzMDg2Y2JmMWFkMGZkOGEzMzkyNDY0MWUyYTU0ZDgyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjEzLDYgKzYxMyw3IEBACiAJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFj
ZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMy
NEVFQTMxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggKi87IH07CiAJCTFDMjRFRUE5
MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNG
b250RmFjZVNldC5oICovOyB9OwogCQkxQzQzREU2QjIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxD
dXJyZW50VHJhaXRDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzQzREU2ODIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJh
aXRDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMUM0RDBERDMyNEQ5RjEwRDAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0RDBERDEy
NEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNjYyNjExMUM2RTdDQTYwMEFCNTI3
QyAvKiBGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi87IH07CiAJCTFD
NzNBNzEzMjE4NTc1N0UwMDRDQ0VBNSAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGQjIxN0I4Mzk0MDA5
M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTY2MDQsNiArNjYwNSw3IEBACiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250
Q2FjaGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
b250Q2FjaGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNE
RTY4MjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNERTZBMjJBQjRCOEEwMDE1MjdE
OSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBHbHlw
aEJ1ZmZlck1lbWJlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhCdWZmZXJNZW1iZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTBDNDk1MjJDODRGMjQwMEE2RTRCRSAvKiBX
SExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzU5QjAxODIyMzg2ODc5MDA4NTM4MDUgLyogV0hMU0xTY29wZWRTZXRBZGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFNjb3BlZFNldEFkZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTc2Myw2ICsyNTc2NSw3IEBACiAJCQkJMEZCNjI1MkQx
OERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi8sCiAJCQkJMDg2QkJEMEUx
MzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggKi8sCiAJCQkJQjJDM0RBNUIwRDAwNkNENjAwRUY2
RjI2IC8qIEdseXBoQnVmZmVyLmggKi8sCisJCQkJMUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8q
IEdseXBoQnVmZmVyTWVtYmVycy5oICovLAogCQkJCUM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAv
KiBHbHlwaE1ldHJpY3NNYXAuaCAqLywKIAkJCQkwODczQjg2QTEzNjA2NEVBMDBBNTIyQzIgLyog
R2x5cGhQYWdlLmggKi8sCiAJCQkJQkM1M0M2MDcwREE1NkM1NzAwMjFFQjVEIC8qIEdyYWRpZW50
LmNwcCAqLywKQEAgLTMxMDg1LDYgKzMxMDg4LDcgQEAKIAkJCQk0NkI5NTE5NzIwN0Q2MzQwMDBB
N0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2
QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMz
REE2QzBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTFDNEQwREQzMjREOUYxMEQwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMTUxOEZDMUU3OEMxNUYwMEVDNTE0QSAvKiBHUFVC
YXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAKaW5kZXggNjI3ZTU2NTQ4YTgxYzgyY2IwNWJiZTBhNWIxODExNDRlYWFlYzg5My4uOWNj
ZWNkN2RjMTA5MThkMDE2YzQzY2Y2YmM1N2Y4ODUyNmY3OWI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFu
Y2UodW5zaWduZWQgb2Zmc2V0LCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIEcKICAgICAgICAg
Ly8gV2hlbiBsZWZ0bW9zdEdseXBoIGlzIDAsIGl0IHJlcHJlc2VudHMgdGhlIGZpcnN0IGdseXBo
IHRvIGRyYXcsIHRha2luZyBpbnRvCiAgICAgICAgIC8vIGFjY291bnQgdGhlIHRleHQgZGlyZWN0
aW9uLgogICAgICAgICBpZiAoIWluZGV4T2ZMZWZ0bW9zdEdseXBoSW5DdXJyZW50UnVuICYmIGds
eXBoQnVmZmVyKQotICAgICAgICAgICAgZ2x5cGhCdWZmZXItPnNldEluaXRpYWxBZHZhbmNlKEds
eXBoQnVmZmVyQWR2YW5jZShjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCks
IGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAg
IGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2YW5jZShtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGNv
bXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkpKTsKIAogICAgICAgICB3aGlsZSAobV9nbHlw
aEluQ3VycmVudFJ1biA8IGdseXBoQ291bnQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBo
U3RhcnRPZmZzZXQgPSBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGdseXBoSW5kZXhJbnRvQ3VycmVu
dFJ1bik7CkBAIC02MDQsMjMgKzYwNCwyMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6
YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogCiAg
ICAgICAgICAgICBpZiAoZ2x5cGhCdWZmZXIgJiYgIW1fY2hhcmFjdGVySW5DdXJyZW50R2x5cGgp
IHsKICAgICAgICAgICAgICAgICBhdXRvIGN1cnJlbnRHbHlwaE9yaWdpbiA9IGdseXBoT3JpZ2lu
KGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyKTsKLSAgICAgICAgICAgICAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UgcGFpbnRBZHZhbmNlKGFkanVzdGVkQmFzZUFkdmFuY2UpOworICAg
ICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFkdmFuY2UgPSBtYWtlR2x5cGhC
dWZmZXJBZHZhbmNlKGFkanVzdGVkQmFzZUFkdmFuY2UpOwogICAgICAgICAgICAgICAgIGlmICgh
Z2x5cGhJbmRleEludG9DdXJyZW50UnVuKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBm
aXJzdCBsYXlvdXQgYWR2YW5jZSBvZiBldmVyeSBydW4gaW5jbHVkZXMgdGhlICJpbml0aWFsIGxh
eW91dCBhZHZhbmNlLiIgSG93ZXZlciwgaGVyZSwgd2UgbmVlZAogICAgICAgICAgICAgICAgICAg
ICAvLyBwYWludCBhZHZhbmNlcywgc28gc3VidHJhY3QgaXQgb3V0IGJlZm9yZSB0cmFuc2Zvcm1p
bmcgdGhlIGxheW91dCBhZHZhbmNlIGludG8gYSBwYWludCBhZHZhbmNlLgotICAgICAgICAgICAg
ICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNlLndpZHRoKCkgLSAoY29t
cGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpIC0gY3VycmVudEdseXBoT3JpZ2lu
LngoKSkpOwotICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50
QWR2YW5jZS5oZWlnaHQoKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdo
dCgpIC0gY3VycmVudEdseXBoT3JpZ2luLnkoKSkpOworICAgICAgICAgICAgICAgICAgICBzZXRX
aWR0aChwYWludEFkdmFuY2UsIHdpZHRoKHBhaW50QWR2YW5jZSkgLSAoY29tcGxleFRleHRSdW4u
aW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSkpOworICAg
ICAgICAgICAgICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCBoZWlnaHQocGFpbnRBZHZh
bmNlKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpIC0gY3VycmVu
dEdseXBoT3JpZ2luLnkoKSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBw
YWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNlLndpZHRoKCkgKyBnbHlwaE9yaWdpbihn
bHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSAtIGN1cnJlbnRHbHlw
aE9yaWdpbi54KCkpOwotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFp
bnRBZHZhbmNlLmhlaWdodCgpICsgZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4
dENvbnRyb2xsZXIgKyAxKS55KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKTsKKyAgICAgICAg
ICAgICAgICBzZXRXaWR0aChwYWludEFkdmFuY2UsIHdpZHRoKHBhaW50QWR2YW5jZSkgKyBnbHlw
aE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSAtIGN1
cnJlbnRHbHlwaE9yaWdpbi54KCkpOworICAgICAgICAgICAgICAgIHNldEhlaWdodChwYWludEFk
dmFuY2UsIGhlaWdodChwYWludEFkdmFuY2UpICsgZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9D
b21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoZ2x5cGhJbmRleEludG9DdXJyZW50UnVuID09IGdseXBoQ291
bnQgLSAxICYmIGN1cnJlbnRSdW5JbmRleCArIDEgPCBydW5Db3VudCkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBPdXIgcGFpbnQgYWR2YW5jZSBwb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcnVu
LiBIb3dldmVyLCB0aGUgbmV4dCBydW4gbWF5IGhhdmUgYW4KICAgICAgICAgICAgICAgICAgICAg
Ly8gaW5pdGlhbCBhZHZhbmNlLCBhbmQgb3VyIHBhaW50IGFkdmFuY2UgbmVlZHMgdG8gcG9pbnQg
dG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBuZXh0CiAgICAgICAgICAgICAgICAgICAgIC8vIGdseXBo
LiBTbywgd2UgbmVlZCB0byBhZGQgaW4gdGhlIG5leHQgcnVuJ3MgaW5pdGlhbCBhZHZhbmNlLgot
ICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNlLndp
ZHRoKCkgLSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciAr
IDEpLngoKSArIG1fY29tcGxleFRleHRSdW5zW2N1cnJlbnRSdW5JbmRleCArIDFdLT5pbml0aWFs
QWR2YW5jZSgpLndpZHRoKCkpOwotICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0
SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQoKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRv
Q29tcGxleFRleHRDb250cm9sbGVyICsgMSkueSgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVu
dFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgICAgICAgICAg
ICAgICAgICBzZXRXaWR0aChwYWludEFkdmFuY2UsIHdpZHRoKHBhaW50QWR2YW5jZSkgLSBnbHlw
aE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSArIG1f
Y29tcGxleFRleHRSdW5zW2N1cnJlbnRSdW5JbmRleCArIDFdLT5pbml0aWFsQWR2YW5jZSgpLndp
ZHRoKCkpOworICAgICAgICAgICAgICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCBoZWln
aHQocGFpbnRBZHZhbmNlKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRD
b250cm9sbGVyICsgMSkueSgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4ICsg
MV0tPmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KC1wYWludEFkdmFuY2UuaGVpZ2h0KCkp
OyAvLyBJbmNyZWFzaW5nIHkgcG9pbnRzIGRvd24KKyAgICAgICAgICAgICAgICBzZXRIZWlnaHQo
cGFpbnRBZHZhbmNlLCAtaGVpZ2h0KHBhaW50QWR2YW5jZSkpOyAvLyBJbmNyZWFzaW5nIHkgcG9p
bnRzIGRvd24KICAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWRkKG1fYWRqdXN0ZWRHbHlw
aHNbZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXJdLCAmY29tcGxleFRleHRSdW4u
Zm9udCgpLCBwYWludEFkdmFuY2UsIGNvbXBsZXhUZXh0UnVuLmluZGV4QXQobV9nbHlwaEluQ3Vy
cmVudFJ1bikpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggODBmYWJiMzJhZGJmNjljYzFlNDgwYjE3
YmQxYzY5OWM4OWRmNDI2Yy4uMGMwNTQzMjUwMmM1NjVjOTk2N2QzNGY3YThhODNlNTM5NWFiYjg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBs
ZVRleHQoU3RyaW5nVmlldyB0ZXh0KSBjb25zdAogICAgICAgICAvLyBwcm9kdWNlIGRpZmZlcmVu
dCBydW4gd2lkdGguCiAgICAgICAgIGZsb2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zv
cm1BcHBsaWVkID0gLXJ1bldpZHRoOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGds
eXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgcnVuV2lkdGhEaWZmZXJlbmNlV2l0
aFRyYW5zZm9ybUFwcGxpZWQgKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7Cisg
ICAgICAgICAgICBydW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBXZWJD
b3JlOjp3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBydW5XaWR0aCAr
PSBydW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZDsKICAgICB9CiAKQEAgLTE0
MTgsMTYgKzE0MTgsMTYgQEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dENvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW4KICAgICAgICAgLy8gdGhl
IHN1bSBvZiB0aGUgbGF5b3V0IGFkdmFuY2VzLgogICAgICAgICBGbG9hdFNpemUgaW5pdGlhbEFk
dmFuY2UgPSBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGlu
aXRpYWxBZHZhbmNlIC09IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkp
KTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IFdlYkNvcmU6OnNpemUoZHVtbXlHbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Z2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0
b0Zsb2F0U2l6ZShnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlh
bEFkdmFuY2UgLT0gV2ViQ29yZTo6c2l6ZShnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHN1YnRyYWN0IHRoZSBvdGhlciBpbml0aWFsIGFk
dmFuY2U/CiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgp
KTsKICAgICAgICAgZ2x5cGhCdWZmZXIuc2V0SW5pdGlhbEFkdmFuY2UoaW5pdGlhbEFkdmFuY2Up
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSA9IHRvRmxv
YXRTaXplKGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CisgICAgICAgIEZsb2F0
U2l6ZSBpbml0aWFsQWR2YW5jZSA9IFdlYkNvcmU6OnNpemUoZHVtbXlHbHlwaEJ1ZmZlci5pbml0
aWFsQWR2YW5jZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSB0b0Zs
b2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0
aWFsQWR2YW5jZSArPSBXZWJDb3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkp
KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBhZGQgdGhlIG90aGVyIGluaXRpYWwg
YWR2YW5jZT8KICAgICAgICAgZ2x5cGhCdWZmZXIuc2V0SW5pdGlhbEFkdmFuY2UoaW5pdGlhbEFk
dmFuY2UpOwogICAgIH0KQEAgLTE0NDgsOCArMTQ0OCw4IEBAIHZvaWQgRm9udENhc2NhZGU6OmRy
YXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnCiAgICAgQVNTRVJUKGdseXBoQnVmZmVyLmlzRmxhdHRlbmVkKCkpOwogICAgIGNvbnN0IEZv
bnQqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0KDApOwogICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludCA9IHBvaW50OwotICAgIGZsb2F0IG5leHRYID0gc3RhcnRQb2ludC54KCkgKyBnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKLSAgICBmbG9hdCBuZXh0WSA9IHN0YXJ0UG9p
bnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgpOworICAgIGZsb2F0IG5l
eHRYID0gc3RhcnRQb2ludC54KCkgKyBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMCkpOworICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBoZWlnaHQoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDApKTsKICAgICB1bnNpZ25lZCBsYXN0RnJvbSA9IDA7CiAgICAgdW5z
aWduZWQgbmV4dEdseXBoID0gMTsKICAgICB3aGlsZSAobmV4dEdseXBoIDwgZ2x5cGhCdWZmZXIu
c2l6ZSgpKSB7CkBAIC0xNDY0LDggKzE0NjQsOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwog
ICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRYKG5leHRYKTsKICAgICAgICAgICAgIHN0YXJ0UG9p
bnQuc2V0WShuZXh0WSk7CiAgICAgICAgIH0KLSAgICAgICAgbmV4dFggKz0gZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KG5leHRHbHlwaCkud2lkdGgoKTsKLSAgICAgICAgbmV4dFkgKz0gZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KG5leHRHbHlwaCkuaGVpZ2h0KCk7CisgICAgICAgIG5leHRYICs9IFdlYkNv
cmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKKyAgICAgICAgbmV4
dFkgKz0gaGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKICAgICAgICAg
bmV4dEdseXBoKys7CiAgICAgfQogCkBAIC0xNTEwLDcgKzE1MTAsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEds
eXBoQnVmZmVyJgogICAgIEdseXBoQnVmZmVyIG1hcmtCdWZmZXI7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSArIDEgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBmbG9h
dCBtaWRkbGVPZk5leHRHbHlwaCA9IG9mZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhC
dWZmZXIsIGkgKyAxKTsKLSAgICAgICAgZmxvYXQgYWR2YW5jZSA9IGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKS53aWR0aCgpIC0gbWlkZGxlT2ZMYXN0R2x5cGggKyBtaWRkbGVPZk5leHRHbHlwaDsK
KyAgICAgICAgZmxvYXQgYWR2YW5jZSA9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKSkgLSBtaWRkbGVPZkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOwogICAgICAg
ICBtYXJrQnVmZmVyLmFkZChnbHlwaEJ1ZmZlci5nbHlwaEF0KGkpID8gbWFya0dseXBoIDogc3Bh
Y2VHbHlwaCwgbWFya0ZvbnREYXRhLCBhZHZhbmNlKTsKICAgICAgICAgbWlkZGxlT2ZMYXN0R2x5
cGggPSBtaWRkbGVPZk5leHRHbHlwaDsKICAgICB9CkBAIC0xNzUwLDcgKzE3NTAsNyBAQCBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVudHMoKQogewog
ICAgIGF1dG8gYmVnaW5uaW5nID0gbV90cmFuc2xhdGlvbi5tYXBQb2ludChGbG9hdFBvaW50KDAs
IDApKTsKICAgICBhdXRvIGFkdmFuY2UgPSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4
KTsKLSAgICBhdXRvIGVuZCA9IG1fdHJhbnNsYXRpb24ubWFwU2l6ZShGbG9hdFNpemUoYWR2YW5j
ZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKSk7CisgICAgYXV0byBlbmQgPSBtX3RyYW5zbGF0
aW9uLm1hcFNpemUoc2l6ZShhZHZhbmNlKSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJl
Z2lubmluZy54KCksIGJlZ2lubmluZy54KCkgKyBlbmQud2lkdGgoKSk7CiB9CiAKQEAgLTE3NjIs
NyArMTc2Miw3IEBAIGF1dG8gR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjp1bmRlcmxpbmVUeXBlKCkg
LT4gR2x5cGhVbmRlcmxpbmVUeXBlCiB2b2lkIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6YWR2YW5j
ZSgpCiB7CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2dseXBoQnVmZmVyLmFk
dmFuY2VBdChtX2luZGV4KTsKLSAgICBtX3RyYW5zbGF0aW9uLnRyYW5zbGF0ZShGbG9hdFNpemUo
YWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKSk7CisgICAgbV90cmFuc2xhdGlvbi50
cmFuc2xhdGUoc2l6ZShhZHZhbmNlKSk7CiAgICAgKyttX2luZGV4OwogICAgIGlmIChtX2luZGV4
IDwgbV9nbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIG1fZm9udERhdGEgPSBtX2dseXBoQnVm
ZmVyLmZvbnRBdChtX2luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaEJ1ZmZlci5oCmluZGV4IDE3MmQzYTc4MjhhZDA5MDczMzBlN2MyNGZlZjVjOTNjNWY3
NjJiYjAuLmFjMmUyMWYxNzZhOWY1NDQ4NTQxODMwYzdjZDc4N2FmMzg1NWFkZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtMzEsMTQx
ICszMSwxNSBAQAogCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR2x5cGguaCIK
KyNpbmNsdWRlICJHbHlwaEJ1ZmZlck1lbWJlcnMuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0j
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnQ7CiAKLSNpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiB3Y2hh
cl90IEdseXBoQnVmZmVyR2x5cGg7Ci0jZWxzZQotdHlwZWRlZiBHbHlwaCBHbHlwaEJ1ZmZlckds
eXBoOwotI2VuZGlmCi0KLS8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2YgRmxvYXRTaXplIHNv
IHRoYXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCi0vLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5
IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQotI2lmIFVT
RShDRykKLQotc3RydWN0IEdseXBoQnVmZmVyQWR2YW5jZSA6IENHU2l6ZSB7Ci1wdWJsaWM6Ci0g
ICAgR2x5cGhCdWZmZXJBZHZhbmNlKCkKLSAgICAgICAgOiBDR1NpemUoQ0dTaXplWmVybykKLSAg
ICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShGbG9hdFNpemUgc2l6ZSkKLSAgICAg
ICAgOiBDR1NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IENHU2l6ZShDR1NpemVNYWtlKHdp
ZHRoLCBoZWlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gZGVjb2RlKERlY29kZXImKTsK
LQotICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRoaXMtPkNHU2l6ZTo6d2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjpo
ZWlnaHQpIH07IH0KLQotICAgIHZvaWQgc2V0V2lkdGgoZmxvYXQgd2lkdGgpIHsgdGhpcy0+Q0dT
aXplOjp3aWR0aCA9IHdpZHRoOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7
IHRoaXMtPkNHU2l6ZTo6aGVpZ2h0ID0gaGVpZ2h0OyB9Ci0gICAgZmxvYXQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiB0aGlzLT5DR1NpemU6OndpZHRoOyB9Ci0gICAgZmxvYXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+Q0dTaXplOjpoZWlnaHQ7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyQWR2YW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCB3aWR0aCgpOwotICAgIGVuY29kZXIgPDwgaGVp
Z2h0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxHbHlwaEJ1ZmZl
ckFkdmFuY2U+IEdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwotICAgIGRlY29kZXIgPj4gd2lkdGg7Ci0gICAg
aWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PGZsb2F0PiBoZWlnaHQ7Ci0gICAgZGVjb2RlciA+PiBoZWlnaHQ7Ci0gICAgaWYgKCFoZWlnaHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJB
ZHZhbmNlKCp3aWR0aCwgKmhlaWdodCk7Ci19Ci0KLXN0cnVjdCBHbHlwaEJ1ZmZlck9yaWdpbiA6
IENHUG9pbnQgewotcHVibGljOgotICAgIEdseXBoQnVmZmVyT3JpZ2luKCkKLSAgICAgICAgOiBD
R1BvaW50KENHUG9pbnRaZXJvKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4o
RmxvYXRQb2ludCBwb2ludCkKLSAgICAgICAgOiBDR1BvaW50KHBvaW50KQotICAgIHsKLSAgICB9
Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiBDR1Bv
aW50KENHUG9pbnRNYWtlKHgsIHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyT3JpZ2luPiBkZWNvZGUoRGVj
b2RlciYpOwotCi0gICAgb3BlcmF0b3IgRmxvYXRQb2ludCgpIHsgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHRoaXMtPkNHUG9pbnQ6OngpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dQ
b2ludDo6eSkgfTsgfQotCi0gICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgdGhpcy0+Q0dQb2ludDo6
eCA9IHg7IH0KLSAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyB0aGlzLT5DR1BvaW50Ojp5ID0geTsg
fQotICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1BvaW50Ojp4OyB9Ci0gICAg
ZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9pbnQ6Onk7IH0KLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyT3JpZ2luOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHgoKTsKLSAgICBlbmNvZGVyIDw8
IHkoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdseXBoQnVmZmVy
T3JpZ2luPiBHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgT3B0aW9uYWw8ZmxvYXQ+IHg7Ci0gICAgZGVjb2RlciA+PiB4OwotICAgIGlmICgheCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAg
IGRlY29kZXIgPj4geTsKLSAgICBpZiAoIXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJPcmlnaW4oKngsICp5KTsKLX0KLQotdXNpbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSBDRkluZGV4OwotCi0jZWxzZQotCi11c2luZyBHbHlwaEJ1
ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Ci11c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0
UG9pbnQ7Ci11c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOwotCi0jZW5k
aWYgLy8gI2lmIFVTRShDRykKLQotaW5saW5lIEZsb2F0U2l6ZSB0b0Zsb2F0U2l6ZShjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UmIGEpCi17Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCks
IGEuaGVpZ2h0KCkpOwotfQotCiBjbGFzcyBHbHlwaEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7IH0KQEAgLTIwMyw4
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZChHbHlwaCBnbHlwaCwgY29uc3QgRm9udCog
Zm9udCwgZmxvYXQgd2lkdGgsIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IG9mZnNldEluU3RyaW5n
ID0gbm9PZmZzZXQpCiAgICAgewogICAgICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZTsK
LSAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCh3aWR0aCk7Ci0gICAgICAgIGFkdmFuY2Uuc2V0SGVp
Z2h0KDApOworICAgICAgICBzZXRXaWR0aChhZHZhbmNlLCB3aWR0aCk7CisgICAgICAgIHNldEhl
aWdodChhZHZhbmNlLCAwKTsKICAgICAgICAgYWRkKGdseXBoLCBmb250LCBhZHZhbmNlLCBvZmZz
ZXRJblN0cmluZyk7CiAgICAgfQogCkBAIC0yMTMsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9udHMuYXBwZW5kKGZvbnQpOwogICAgICAgICBtX2dseXBocy5hcHBlbmQoZ2x5cGgpOwog
ICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKLSAgICAgICAgbV9vcmlnaW5zLmFw
cGVuZChHbHlwaEJ1ZmZlck9yaWdpbigpKTsKKyAgICAgICAgbV9vcmlnaW5zLmFwcGVuZCh7IH0p
OwogICAgICAgICBtX29mZnNldHNJblN0cmluZy5hcHBlbmQob2Zmc2V0SW5TdHJpbmcpOwogICAg
IH0KIApAQCAtMjMxLDkgKzEwNSw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
IDw9IHNpemUoKSk7CiAKICAgICAgICAgbV9mb250cy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZl
Y3Rvcjxjb25zdCBGb250Kj4obGVuZ3RoLCBmb250KSk7Ci0gICAgICAgIG1fZ2x5cGhzLmluc2Vy
dFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+KGxlbmd0aCwgMHhGRkZG
KSk7Ci0gICAgICAgIG1fYWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5
cGhCdWZmZXJBZHZhbmNlPihsZW5ndGgsIEdseXBoQnVmZmVyQWR2YW5jZSgwLCAwKSkpOwotICAg
ICAgICBtX29yaWdpbnMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJP
cmlnaW4+KGxlbmd0aCwgR2x5cGhCdWZmZXJPcmlnaW4oKSkpOworICAgICAgICBtX2dseXBocy5p
bnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPihsZW5ndGgsIHN0
ZDo6bnVtZXJpY19saW1pdHM8R2x5cGhCdWZmZXJHbHlwaD46Om1heCgpKSk7CisgICAgICAgIG1f
YWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNl
PihsZW5ndGgsIHsgfSkpOworICAgICAgICBtX29yaWdpbnMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9u
LCBWZWN0b3I8R2x5cGhCdWZmZXJPcmlnaW4+KGxlbmd0aCwgeyB9KSk7CiAgICAgICAgIG1fb2Zm
c2V0c0luU3RyaW5nLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyU3Ry
aW5nT2Zmc2V0PihsZW5ndGgsIDApKTsKICAgICB9CiAKQEAgLTI0NywxNSArMTIxLDE1IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICAgICAgR2x5cGhC
dWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMubGFzdCgpOwotICAgICAgICBs
YXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsgd2lkdGgpOworICAgICAg
ICBzZXRXaWR0aChsYXN0QWR2YW5jZSwgV2ViQ29yZTo6d2lkdGgobGFzdEFkdmFuY2UpICsgd2lk
dGgpOwogICAgIH0KIAogICAgIHZvaWQgZXhwYW5kTGFzdEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZh
bmNlIGV4cGFuc2lvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICAg
ICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMubGFzdCgpOwot
ICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsgZXhwYW5z
aW9uLndpZHRoKCkpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRIZWlnaHQobGFzdEFkdmFuY2Uu
aGVpZ2h0KCkgKyBleHBhbnNpb24uaGVpZ2h0KCkpOworICAgICAgICBzZXRXaWR0aChsYXN0QWR2
YW5jZSwgd2lkdGgobGFzdEFkdmFuY2UpICsgd2lkdGgoZXhwYW5zaW9uKSk7CisgICAgICAgIHNl
dEhlaWdodChsYXN0QWR2YW5jZSwgaGVpZ2h0KGxhc3RBZHZhbmNlKSArIGhlaWdodChleHBhbnNp
b24pKTsKICAgICB9CiAKICAgICB2b2lkIHNocmluayh1bnNpZ25lZCB0cnVuY2F0aW9uUG9pbnQp
CkBAIC0yNzYsOSArMTUwLDkgQEAgcHVibGljOgogICAgIHZvaWQgZmxhdHRlbigpCiAgICAgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIG1fYWR2YW5jZXNbaV0gPSBHbHlwaEJ1ZmZlckFkdmFuY2UoCi0gICAgICAgICAgICAgICAg
LW1fb3JpZ2luc1tpXS54KCkgKyBtX2FkdmFuY2VzW2ldLndpZHRoKCkgKyAoaSArIDEgPCBzaXpl
KCkgPyBtX29yaWdpbnNbaSArIDFdLngoKSA6IDApLAotICAgICAgICAgICAgICAgIC1tX29yaWdp
bnNbaV0ueSgpICsgbV9hZHZhbmNlc1tpXS5oZWlnaHQoKSArIChpICsgMSA8IHNpemUoKSA/IG1f
b3JpZ2luc1tpICsgMV0ueSgpIDogMCkKKyAgICAgICAgICAgIG1fYWR2YW5jZXNbaV0gPSBtYWtl
R2x5cGhCdWZmZXJBZHZhbmNlKAorICAgICAgICAgICAgICAgIC14KG1fb3JpZ2luc1tpXSkgKyB3
aWR0aChtX2FkdmFuY2VzW2ldKSArIChpICsgMSA8IHNpemUoKSA/IHgobV9vcmlnaW5zW2kgKyAx
XSkgOiAwKSwKKyAgICAgICAgICAgICAgICAteShtX29yaWdpbnNbaV0pICsgaGVpZ2h0KG1fYWR2
YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geShtX29yaWdpbnNbaSArIDFdKSA6IDApCiAg
ICAgICAgICAgICApOwogICAgICAgICAgICAgbV9vcmlnaW5zW2ldID0gR2x5cGhCdWZmZXJPcmln
aW4oKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzNiNTQ4MjMxZWM0YTU2NDZl
MTUyYzBmNDBhMjY2YWEzOTUwN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKQEAgLTAsMCArMSwyMjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHbHlwaC5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250
Lmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoZSBDRyBwb3J0cyB1c2UgdGhlIENHIHR5cGVzIGRpcmVj
dGx5LCBzbyBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcyBjYW4gYmUgZmVkIGRpcmVjdGx5IGludG8g
Q1RGb250U2hhcGVHbHlwaHMoKS4KKyNpZiBVU0UoQ0cpCit1c2luZyBHbHlwaEJ1ZmZlckdseXBo
ID0gQ0dHbHlwaDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IENHU2l6ZTsKK3VzaW5nIEds
eXBoQnVmZmVyT3JpZ2luID0gQ0dQb2ludDsKK3VzaW5nIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0
ID0gQ0ZJbmRleDsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0g
d2NoYXJfdDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6ZTsKK3VzaW5nIEds
eXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKK3VzaW5nIEdseXBoQnVmZmVyU3RyaW5nT2Zm
c2V0ID0gdW5zaWduZWQ7CisjZWxzZQordXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9IEdseXBoOwor
dXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwordXNpbmcgR2x5cGhCdWZmZXJP
cmlnaW4gPSBGbG9hdFBvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSB1bnNp
Z25lZDsKKyNlbmRpZgorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZl
ckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiA9IEZsb2F0U2l6ZSgpKTsKK2lubGluZSBHbHlwaEJ1
ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCA9IDAsIGZsb2F0ID0gMCk7
CitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJik7Citpbmxp
bmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7CitpbmxpbmUgdm9p
ZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiwgZmxvYXQpOworaW5saW5lIGZsb2F0IHdp
ZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYpOworaW5saW5lIGZsb2F0IGhlaWdodChjb25z
dCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsKK2lubGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5
cGhCdWZmZXJPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYgPSBGbG9hdFBvaW50KCkpOworaW5saW5l
IEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCA9IDAsIGZsb2F0
ID0gMCk7CitpbmxpbmUgRmxvYXRQb2ludCBwb2ludChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYp
OworaW5saW5lIHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSB2
b2lkIHNldFkoR2x5cGhCdWZmZXJPcmlnaW4mLCBmbG9hdCk7CitpbmxpbmUgZmxvYXQgeChjb25z
dCBHbHlwaEJ1ZmZlck9yaWdpbiYpOworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5cGhCdWZmZXJP
cmlnaW4mKTsKKworI2lmIFVTRShDRykKKworaW5saW5lIEdseXBoQnVmZmVyQWR2YW5jZSBtYWtl
R2x5cGhCdWZmZXJBZHZhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4g
Q0dTaXplTWFrZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitpbmxpbmUgR2x5
cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkKK3sKKyAgICByZXR1cm4gQ0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KTsKK30KKwor
aW5saW5lIEZsb2F0U2l6ZSBzaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkK
K3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGFkdmFuY2Uud2lkdGgsIGFkdmFuY2UuaGVpZ2h0KTsK
K30KKworaW5saW5lIHZvaWQgc2V0V2lkdGgoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBm
bG9hdCB3aWR0aCkKK3sKKyAgICBhZHZhbmNlLndpZHRoID0gd2lkdGg7Cit9CisKK2lubGluZSB2
b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICBhZHZhbmNlLmhlaWdodCA9IGhlaWdodDsKK30KKworaW5saW5lIGZsb2F0IHdpZHRo
KGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5j
ZS53aWR0aDsKK30KKworaW5saW5lIGZsb2F0IGhlaWdodChjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFuY2UuaGVpZ2h0OworfQorCitpbmxpbmUg
R2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50LnkoKSk7
Cit9CisKK2lubGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoeCwgeSk7Cit9CisKK2lu
bGluZSBGbG9hdFBvaW50IHBvaW50KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4pCit7
CisgICAgcmV0dXJuIEZsb2F0UG9pbnQob3JpZ2luLngsIG9yaWdpbi55KTsKK30KKworaW5saW5l
IHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB4KQoreworICAgIG9y
aWdpbi54ID0geDsKK30KKworaW5saW5lIHZvaWQgc2V0WShHbHlwaEJ1ZmZlck9yaWdpbiYgb3Jp
Z2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi55ID0geTsKK30KKworaW5saW5lIGZsb2F0IHgo
Y29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gb3JpZ2luLng7
Cit9CisKK2lubGluZSBmbG9hdCB5KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4pCit7
CisgICAgcmV0dXJuIG9yaWdpbi55OworfQorCisjZWxzZQorCitpbmxpbmUgR2x5cGhCdWZmZXJB
ZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIHJldHVybiBzaXplOworfQorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlw
aEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICByZXR1cm4g
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBhZHZhbmNlOwor
fQorCitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZs
b2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOworfQorCitpbmxpbmUg
dm9pZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBmbG9hdCBoZWlnaHQp
Cit7CisgICAgYWR2YW5jZS5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKworaW5saW5lIGZsb2F0IHdp
ZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2
YW5jZS53aWR0aCgpOworfQorCitpbmxpbmUgZmxvYXQgaGVpZ2h0KGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5jZS5oZWlnaHQoKTsKK30KKwor
aW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcG9pbnQ7Cit9CisKK2lubGluZSBHbHlwaEJ1
ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAg
ICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KTsKK30KKworaW5saW5lIEZsb2F0UG9pbnQgcG9pbnQo
Y29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gb3JpZ2luOwor
fQorCitpbmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4sIGZsb2F0IHgp
Cit7CisgICAgb3JpZ2luLnNldFgoeCk7Cit9CisKK2lubGluZSB2b2lkIHNldFkoR2x5cGhCdWZm
ZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQgeSkKK3sKKyAgICBvcmlnaW4uc2V0WSh5KTsKK30KKwor
aW5saW5lIGZsb2F0IHgoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBy
ZXR1cm4gb3JpZ2luLngoKTsKK30KKworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5cGhCdWZmZXJP
cmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gb3JpZ2luLnkoKTsKK30KKworI2VuZGlmIC8v
ICNpZiBVU0UoQ0cpCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggNjE2M2JjZTI3YTI0ZmI3M2Y3ZjQ3MGYwOTkyYWIx
YzcyYTA1ZWY5ZS4uMDdkMzkxN2YxODMyMjljNmI5OWM3OTY1YmZkMjRhN2ZkZGMyMjIxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlG
b250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIGJvb2wgbAogICAgIEdseXBo
QnVmZmVyQWR2YW5jZSogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci0+YWR2YW5jZXMoMCk7CiAgICAg
ZmxvYXQgYmVmb3JlV2lkdGggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENv
dW50OyBpIDwgZ2x5cGhCdWZmZXJTaXplOyArK2kpCi0gICAgICAgIGJlZm9yZVdpZHRoICs9IGFk
dmFuY2VzW2ldLndpZHRoKCk7CisgICAgICAgIGJlZm9yZVdpZHRoICs9IHdpZHRoKGFkdmFuY2Vz
W2ldKTsKIAogICAgIEFTU0VSVChsYXN0R2x5cGhDb3VudCA8PSBnbHlwaEJ1ZmZlclNpemUpOwog
ICAgIGlmICghbHRyKQpAQCAtMTExLDcgKzExMSw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJh
dG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBs
CiAgICAgZ2x5cGhCdWZmZXJTaXplID0gZ2x5cGhCdWZmZXItPnNpemUoKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXplOyArK2kpCi0g
ICAgICAgIGFkdmFuY2VzW2ldLnNldEhlaWdodCgtYWR2YW5jZXNbaV0uaGVpZ2h0KCkpOworICAg
ICAgICBzZXRIZWlnaHQoYWR2YW5jZXNbaV0sIC1oZWlnaHQoYWR2YW5jZXNbaV0pKTsKIAogICAg
IGlmICghbHRyKQogICAgICAgICBnbHlwaEJ1ZmZlci0+cmV2ZXJzZShsYXN0R2x5cGhDb3VudCwg
Z2x5cGhCdWZmZXJTaXplIC0gbGFzdEdseXBoQ291bnQpOwpAQCAtMTI2LDE0ICsxMjYsMTQgQEAg
aW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXIqIGdseXBoQnVmZmVyLCBib29sIGwKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBj
b25zdCBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3BhY2UmIG9yaWdpbmFs
QWR2YW5jZXMgPSBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2VbaV0uc2Vjb25kOwogICAgICAgICBp
ZiAoc3BhY2VPZmZzZXQgJiYgIW9yaWdpbmFsQWR2YW5jZXMuY2hhcmFjdGVySXNTcGFjZSkKLSAg
ICAgICAgICAgIGdseXBoQnVmZmVyLT5hZHZhbmNlcyhzcGFjZU9mZnNldCAtIDEpLT5zZXRXaWR0
aChvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOwotICAgICAgICBnbHlw
aEJ1ZmZlci0+YWR2YW5jZXMoc3BhY2VPZmZzZXQpLT5zZXRXaWR0aChvcmlnaW5hbEFkdmFuY2Vz
LmFkdmFuY2VBdENoYXJhY3Rlcik7CisgICAgICAgICAgICBzZXRXaWR0aCgqZ2x5cGhCdWZmZXIt
PmFkdmFuY2VzKHNwYWNlT2Zmc2V0IC0gMSksIG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUJlZm9y
ZUNoYXJhY3Rlcik7CisgICAgICAgIHNldFdpZHRoKCpnbHlwaEJ1ZmZlci0+YWR2YW5jZXMoc3Bh
Y2VPZmZzZXQpLCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VBdENoYXJhY3Rlcik7CiAgICAgfQog
ICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jbGVhcigpOwogCiAgICAgZmxvYXQgYWZ0ZXJX
aWR0aCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlw
aEJ1ZmZlclNpemU7ICsraSkKLSAgICAgICAgYWZ0ZXJXaWR0aCArPSBhZHZhbmNlc1tpXS53aWR0
aCgpOworICAgICAgICBhZnRlcldpZHRoICs9IHdpZHRoKGFkdmFuY2VzW2ldKTsKIAogICAgIGxh
c3RHbHlwaENvdW50ID0gZ2x5cGhCdWZmZXJTaXplOwogICAgIHJldHVybiBhZnRlcldpZHRoIC0g
YmVmb3JlV2lkdGg7CkBAIC0zMTksNyArMzE5LDcgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRv
cjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYK
ICAgICAgICAgYXV0byB0cmFuc2Zvcm1zVHlwZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMo
Z2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50LCBwcmV2aW91c0NoYXJhY3Rlcik7CiAgICAgICAg
IGlmICh0cmFuc2Zvcm1zVHlwZSAhPSBUcmFuc2Zvcm1zVHlwZTo6Tm9uZSAmJiBnbHlwaEJ1ZmZl
ciAmJiBGb250Q2FzY2FkZTo6dHJlYXRBc1NwYWNlKGNoYXJhY3RlcikpIHsKICAgICAgICAgICAg
IGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZ2x5cGhCdWZm
ZXItPnNpemUoKSwKLSAgICAgICAgICAgICAgICBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVy
VHJlYXRlZEFzU3BhY2UoY2hhcmFjdGVyID09ICcgJywgZ2x5cGhCdWZmZXItPnNpemUoKSA/IGds
eXBoQnVmZmVyLT5hZHZhbmNlQXQoZ2x5cGhCdWZmZXItPnNpemUoKSAtIDEpLndpZHRoKCkgOiAw
LCB3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVy
VHJlYXRlZEFzU3BhY2UoY2hhcmFjdGVyID09ICcgJywgZ2x5cGhCdWZmZXItPnNpemUoKSA/IFdl
YkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLT5hZHZhbmNlQXQoZ2x5cGhCdWZmZXItPnNpemUoKSAt
IDEpKSA6IDAsIHdpZHRoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fYWNjb3VudEZv
ckdseXBoQm91bmRzKSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXaWR0aEl0ZXJhdG9yOjph
ZHZhbmNlT25lQ2hhcmFjdGVyKGZsb2F0JiB3aWR0aCwgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVy
KQogICAgIGFkdmFuY2UobV9jdXJyZW50Q2hhcmFjdGVySW5kZXggKyAxLCAmZ2x5cGhCdWZmZXIp
OwogICAgIGZsb2F0IHcgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFNpemU7IGkgPCBn
bHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgdyArPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgdyArPSBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoaSkpOwogICAgIHdpZHRoID0gdzsKICAgICByZXR1cm4gZ2x5cGhCdWZmZXIuc2l6
ZSgpID4gb2xkU2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRl
eCA5ZTAwNzA0MzhhNzExMTkzZTg3ZGMyOWUzNzJjZDUwMWVjM2UxOWMwLi42MjY2YjUyYWU4ZDEx
ZDhhOWZjMWQ0Y2JhNDkxZDQ1NzNhYmQ4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC01NjMsMTAgKzU2MywxMCBAQCB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVC
b3VuZHMoKQogICAgIHNpemVfdCBudW1HbHlwaHMgPSBtX2dseXBocy5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAgICAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UgYWR2YW5jZSA9IG1fYWR2YW5jZXNbaV07Ci0gICAgICAgIEZsb2F0UmVjdCBnbHlw
aFJlY3QgPSBGbG9hdFJlY3QoY3VycmVudC54KCksIGN1cnJlbnQueSgpIC0gYXNjZW50LCBhZHZh
bmNlLndpZHRoKCksIGFzY2VudCArIGRlc2NlbnQpOworICAgICAgICBGbG9hdFJlY3QgZ2x5cGhS
ZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgpLCBjdXJyZW50LnkoKSAtIGFzY2VudCwgd2lkdGgo
YWR2YW5jZSksIGFzY2VudCArIGRlc2NlbnQpOwogICAgICAgICBtX2JvdW5kcy51bml0ZShnbHlw
aFJlY3QpOwogCi0gICAgICAgIGN1cnJlbnQubW92ZShhZHZhbmNlLndpZHRoKCksIGFkdmFuY2Uu
aGVpZ2h0KCkpOworICAgICAgICBjdXJyZW50Lm1vdmUod2lkdGgoYWR2YW5jZSksIGhlaWdodChh
ZHZhbmNlKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmQ3NzMyNjE2NmJkZjBhYzFlYjAyMjVmMDdiOGNmNWUyMDRhODE0
Mi4uNzExZDhmNDRmNGFiMDI3NGY5YTk0ZmI5NzEyZWM1YTRlZjk5YzQwNCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTA4LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBHbHlwaEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUg
cm9idXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTUxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMC0wOC0wNCAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5
XSBSRUdSRVNTSU9OKHIyNjUyNTQpOiBhdXRvaW5zdGFsbGVyIGlzIGZhaWxpbmcgdG8gZXhlY3V0
ZSBzZXR1cC5weSBvbiB3aW4zMiBQeXRob24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMDg1
MDlmZDdjYzY2ZmQyMmMxMWQ3ODdhMWUzMzdjMTA3YjMyNTgzZi4uOWM4ZjZhN2YwNjk5OWQzZGVj
OTU0YjkzMjJjYTEzYTczZWU3ODNiMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTgwLDE1
ICs4MCwxNSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFu
Y2VXaXRoTGVmdFJ1bkluUlRMKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhT
b0ZhcigpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2
YW5jZSg2LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lk
dGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgdG90YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBFQ1Rf
TkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0g
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgMCwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5j
ZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5p
dGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNp
emUoKSwgNlUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0
aCgpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCBhZHZh
bmNlc1syXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgzKS53aWR0aCgpLCBhZHZhbmNlc1sxXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCAtaW5pdGlhbEFkdmFu
Y2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoNSkud2lkdGgoKSwgc3BhY2VXaWR0aCArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgd2lk
dGgoYWR2YW5jZXNbNF0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgxKSksIHdpZHRoKGFkdmFuY2VzWzNdKSwgMC4wMDAxKTsKKyAgICBFWFBF
Q1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikpLCB3aWR0aChhZHZhbmNlc1sy
XSksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDMpKSwgd2lkdGgoYWR2YW5jZXNbMV0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRo
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KSksIC13aWR0aChpbml0aWFsQWR2YW5jZSksIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDUpKSwgc3Bh
Y2VXaWR0aCArIHdpZHRoKGluaXRpYWxBZHZhbmNlKSwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENv
bXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCkBAIC0xMjQsMTUg
KzEyNCwxNSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFu
Y2VJblJUTCkKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2
YW5jZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNSwgJmds
eXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwg
dG90YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpLndpZHRoKCksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAg
RVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgaW5pdGlh
bEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7
CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBp
bml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZm
ZXIuc2l6ZSgpLCA1VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDAp
LndpZHRoKCksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIGFkdmFuY2VzWzNdLndpZHRoKCksIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpLndpZHRoKCks
IGFkdmFuY2VzWzJdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDMpLndpZHRoKCksIGFkdmFuY2VzWzFdLndpZHRoKCksIDAuMDAwMSk7Ci0g
ICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndpZHRoKCksIC1pbml0aWFs
QWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCg0KS5oZWlnaHQoKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgYWR2YW5jZXNb
NF0ud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMSkpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9O
RUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIGFkdmFuY2VzWzJdLndpZHRoKCks
IDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMp
KSwgYWR2YW5jZXNbMV0ud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCAtaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAx
KTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKSwgaW5p
dGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCkBAIC0xNzAsMTIg
KzE3MCwxMiBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFu
Y2VXaXRoTGVmdFJ1bkluTFRSKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhT
b0ZhcigpLCBzcGFjZVdpZHRoICsgYWR2YW5jZXNbMF0ud2lkdGgoKSArIGluaXRpYWxBZHZhbmNl
LndpZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDMsICZnbHlwaEJ1ZmZl
cik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHNwYWNlV2lk
dGggKyA3Ni4zNDc2NTYgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgMCwgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgp
LCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZl
ci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZm
ZXIuc2l6ZSgpLCAzVSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDAp
LndpZHRoKCksIHNwYWNlV2lkdGggKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwot
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCA1My4wNjY0
MDYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpLndp
ZHRoKCksIDIzLjI4MTI1MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMCkpLCBzcGFjZVdpZHRoICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkp
LCA1My4wNjY0MDYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDIpKSwgMjMuMjgxMjUwLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKQEAgLTIwOCwxMSArMjA4LDEx
IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRS
KQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCBhZHZhbmNlc1sw
XS53aWR0aCgpICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKICAgICBjb250cm9s
bGVyLmFkdmFuY2UoMiwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVy
LnJ1bldpZHRoU29GYXIoKSwgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRo
KCksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5
cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0
KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFk
dmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05F
QVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS5o
ZWlnaHQoKSwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCAyVSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIDUzLjA2
NjQwNiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSku
d2lkdGgoKSwgMjMuMjgxMjUwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKSksIDUzLjA2NjQwNiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCAyMy4yODEyNTAsIDAuMDAwMSk7CiB9
CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRM
Tm9PcmlnaW5zKQpAQCAtMjUxLDE0ICsyNTEsMTQgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiAgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7CiAgICAgY29u
dHJvbGxlci5hZHZhbmNlKDQsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJv
bGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53
aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2
YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZl
ci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAg
ICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCA0My44MTE5MzQ5MDA1NDI1LCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCAxMi4w
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0
aCgpLCAxNC4wMzk3ODMwMDE4MDgzLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCAtNC4zMzk5NjM4MzM2MzQ3MiwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykuaGVpZ2h0KCksIDEyLjM2ODg5
NjkyNTg1OSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMCkpLCA0My44MTE5MzQ5MDA1NDI1LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIDEyLjAsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMTQuMDM5NzgzMDAxODA4Mywg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykp
LCAtNC4zMzk5NjM4MzM2MzQ3MiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgMTIuMzY4ODk2OTI1ODU5LCAwLjAwMDEpOwogfQogCiBU
RVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVhZGluZ0V4cGFuc2lvbikKQEAgLTI4
NSwxMCArMjg1LDEwIEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWFkaW5n
RXhwYW5zaW9uKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCAw
LCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgxLCAmZ2x5cGhCdWZmZXIpOwogICAg
IEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdpZHRoLCAwLjAw
MDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgo
KSwgMTAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDEwMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUiho
ZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CiAgICAgRVhQ
RUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgMVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCAyNCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3
aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCAyNCwgMC4wMDAxKTsKIH0KIAogVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCkBAIC0zMjIsMTcg
KzMyMiwxNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZh
bmNlcykKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4w
MDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNCwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAsIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwg
MTYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFk
dmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVy
LmluaXRpYWxBZHZhbmNlKCkpLCAxNiwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZm
ZXIuc2l6ZSgpLCA0VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDAp
LndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDApLmhlaWdodCgpLCA0IC0gMSAtOCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVB
UihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkuaGVpZ2h0KCksIDggLSAyIC0gNTEyLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAwLCAw
LjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS5oZWlnaHQo
KSwgMTI4IC0gMzIgLSAyNTYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDMpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDMpLmhlaWdodCgpLCAyNTYgLSA2NCwgMC4wMDAxKTsKKyAgICBFWFBF
Q1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCAwLCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCA0IC0gMSAtOCwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkp
LCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMSkpLCA4IC0gMiAtIDUxMiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMikpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdo
dChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikpLCAxMjggLSAzMiAtIDI1NiwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCAwLCAwLjAwMDEp
OworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCAyNTYg
LSA2NCwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFRv
dGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKQEAgLTM2MSw3ICszNjEsMTIgQEAgVEVTVF9GKENv
bXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKICAg
ICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAg
ICBjb250cm9sbGVyLmFkdmFuY2UoNSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfRVEoZ2x5
cGhCdWZmZXIuc2l6ZSgpLCA1VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDApLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLndp
ZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkud2lkdGgoKSwgY29udHJvbGxlci50b3Rh
bEFkdmFuY2UoKS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKSkKKyAgICAgICAgKyB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMSkpCisgICAgICAgICsgd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKQorICAgICAg
ICArIHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSkKKyAgICAgICAgKyB3aWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoNCkpCisgICAgICAgICwgY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpLCAwLjAwMDEpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="421395"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408113</attachid>
            <date>2020-09-05 21:15:40 -0700</date>
            <delta_ts>2020-09-05 21:33:13 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215143-20200905211539.patch</filename>
            <type>text/plain</type>
            <size>52323</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZhZGEyOWZlNmRhOGRh
ZGY4MDQ4OTNkODJhZDkyOGVmMzQ0YzBjOC4uYTkyOGFiM2UwYjk4NGQ4Yzc3NGY5YmNlMDY4MzJl
Y2Q2NTk4M2Y3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgR2x5cGhCdWZmZXIgY29udGFp
bnMgdmVjdG9ycyBvZiBhZHZhbmNlcyBhbmQgb3JpZ2lucywgd2hpY2ggYXJlIGNvbmNlcHR1YWxs
eQorICAgICAgICBGbG9hdFNpemVzIGFuZCBGbG9hdFBvaW50cy4gSG93ZXZlciwgd2UgbmVlZCB0
byBwYXNzIHRoZXNlIGFycmF5cyBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkKKyAgICAgICAgb3Ig
Q1RGb250VHJhbnNmb3JtR2x5cGhzV2l0aExhbmd1YWdlKCksIHdoaWNoIGV4cGVjdHMgdGhlc2Ug
dmVjdG9ycyB0byB1c2UgcGxhdGZvcm0gdHlwZXMuCisgICAgICAgIFJhdGhlciB0aGFuIGNvbnZl
cnRpbmcgaW4vb3V0IG9mIHBsYXRmb3JtIHR5cGVzIGFyb3VuZCB0aGUgY2FsbCBzaXRlLCB3ZSBj
YW4gc2ltcGx5IHVzZQorICAgICAgICB0aGUgcGxhdGZvcm0gdHlwZXMgdGhyb3VnaG91dC4gSW5k
ZWVkLCB0aGF0J3Mgd2hhdCB3ZSdyZSBkb2luZyB0b2RheS4KKworICAgICAgICBIb3dldmVyLCB0
aGUgbWVjaGFuaXNtIHdlIHVzZSB0b2RheSB0byBtYWtlIHRoaXMgcGxhdGZvcm0taW5kZXBlbmRl
bnQgaXMgdG8gbWFrZSBhIHN0cnVjdAorICAgICAgICB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSBw
bGF0Zm9ybSB0eXBlcy4gVGhlbiwgd2Ugc3RhdGljX2Nhc3QgdGhlIGFycmF5IG9mIHRoZSBzdHJ1
Y3QgdG8KKyAgICAgICAgYW4gYXJyYXkgb2YgdGhlIGJhc2UgdHlwZS4gVGhpcyBpcyBicml0dGxl
LCBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBz
dHJ1Y3QgZG9lc24ndCBoYXZlIGFueSBtZW1iZXJzIGFkZGVkIHRvIGl0LCB3aGljaCB3b3VsZCBj
aGFuZ2UgdGhlIHN0cmlkZSBvZiB0aGUgYXJyYXkKKyAgICAgICAgYW5kIGZlZWQgZ2FyYmFnZSBp
bnRvIHRoZSBzaGFwaW5nIGZ1bmN0aW9uLgorCisgICAgICAgIEluc3RlYWQsIGEgYmV0dGVyIGRl
c2lnbiBpcyB0byB0eXBlZGVmIHRoZSBuYXRpdmUgdHlwZSwgYW5kIGhhdmUgYWxsIGludGVyYWN0
aW9ucyB3aXRoIHRoZQorICAgICAgICB0eXBlcyBnbyB0aHJvdWdoIHN0YW5kYWxvbmUgZnVuY3Rp
b25zIHdoaWNoIGRlYWwgd2l0aCB0aGUgbmF0aXZlIHR5cGUuIFRoYXQgd2F5LCB3ZSBjYW4ndAor
ICAgICAgICBhY2NpZGVudGFsbHkgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBhcnJheSBlbGVtZW50
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2x5cGhCdWZmZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6
bWFrZUhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmV4cGFuZExhc3RBZHZh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpmbGF0dGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6R2x5cGhCdWZmZXJBZHZhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6b3BlcmF0b3IgRmxvYXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6c2V0
V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNl
Ojp3aWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFk
dmFuY2U6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1
ZmZlckFkdmFuY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlckFkdmFuY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlck9yaWdpbjo6R2x5cGhCdWZmZXJPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46Om9wZXJhdG9yIEZsb2F0UG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRT
aXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0
UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhC
dWZmZXJPcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyT3JpZ2luWSk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhCdWZmZXJPcmlnaW5ZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZUlu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
Ojpjb21wdXRlQm91bmRzKToKKwogMjAyMC0wOS0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVVNFKFBMQVRGT1JNX1NZU1RFTV9G
QUxMQkFDS19MSVNUKSBpcyB0cnVlIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMsIHNvIHRoZXJlJ3Mg
bm8gbmVlZCB0byBjb25zdWx0IGl0IGluIENvY29hLXNwZWNpZmljIGZpbGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCAyMGM4NmFmM2Y5NGUyMWMyNmRmYTk3N2I1M2EwYmUwOTk2MDkzM2Q4Li5lMjYy
ZjI5YWI4ZWM2NDNiOTQ0ZTU0ZTFkYTY5M2M2ZWU4ZmMzZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExMjcsNiArMTEyNyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGguaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjkzY2NjZmQxMmFi
NDNiZGE5MTFmMzc5ZGU4Y2JiYTE0MGIxMmFhNy4uZGJhZDk5NzZkYWRlNWZhNDYxNTEyZGMzOWVj
OTRkY2Q0ZDFmNmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjEzLDYgKzYxMyw3IEBACiAJCTFDMjRFRUE1MUM3MjlDRTQw
MDgwRjhGQyAvKiBGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUMyNEVFQTMxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0Lmgg
Ki87IH07CiAJCTFDMjRFRUE5MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBNzFDNzJB
N0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oICovOyB9OwogCQkxQzQzREU2QjIyQUI0QjhB
MDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzQzREU2ODIyQUI0QjhBMDAxNTI3RDkg
LyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM0RDBERDMyNEQ5RjEwRDAwM0Q3NDk4IC8qIEds
eXBoQnVmZmVyTWVtYmVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNjYy
NjExMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRG
YWNlLmggKi87IH07CiAJCTFDNzNBNzEzMjE4NTc1N0UwMDRDQ0VBNSAvKiBUZXh0VW5kZXJsaW5l
T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNzNBNzE1MjE4NTc1
ODcwMDRDQ0VBNSAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8q
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY2MzMsNiArNjYzNCw3IEBACiAJCTFDMzk2OUNGMUI3NDIx
MUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNDNERTY4MjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFp
dENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDdXJy
ZW50VHJhaXRDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNDNE
RTZBMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRUcmFpdENv
bGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNEQwREQxMjREOUYw
REIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhC
dWZmZXJNZW1iZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTBDNDk1MjJD
ODRGMjQwMEE2RTRCRSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeUZ1bmN0aW9uTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzU5QjAxODIyMzg2ODc5MDA4NTM4MDUgLyogV0hM
U0xTY29wZWRTZXRBZGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFNjb3BlZFNldEFkZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAv
KiBGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250
RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQ2NiwxMSArMTc0Njgs
MTEgQEAKIAkJCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oICov
LAogCQkJCTZGRTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5jcHAg
Ki8sCiAJCQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVha2VyLmgg
Ki8sCisJCQkJNkYyNUIyMDAyMjBBODVBQjAwMDAwMTFCIC8qIElubGluZUxpbmVCdWlsZGVyLmNw
cCAqLywKKwkJCQk2RjI2RUI0NjIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIu
aCAqLywKIAkJCQk2RjM2MEU0RTIzOTk5NDIwMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVh
a0l0ZW0uaCAqLywKIAkJCQk2RjFDQzFEQzIyNUY4QjQxMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0
ZW0uY3BwICovLAogCQkJCTZGMUNDMUREMjI1RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRl
bS5oICovLAotCQkJCTZGMjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVpbGRl
ci5jcHAgKi8sCi0JCQkJNkYyNkVCNDYyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVCdWls
ZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlubGluZWZvcm1hdHRpbmc7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjU5MTcsNiArMjU5MTksNyBAQAogCQkJCTBGQjYyNTJEMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oICovLAogCQkJCTA4NkJCRDBFMTM2
MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oICovLAogCQkJCUIyQzNEQTVCMEQwMDZDRDYwMEVGNkYy
NiAvKiBHbHlwaEJ1ZmZlci5oICovLAorCQkJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBH
bHlwaEJ1ZmZlck1lbWJlcnMuaCAqLywKIAkJCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyog
R2x5cGhNZXRyaWNzTWFwLmggKi8sCiAJCQkJMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEds
eXBoUGFnZS5oICovLAogCQkJCUJDNTNDNjA3MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5j
cHAgKi8sCkBAIC0zMTMyMCw2ICszMTMyMyw3IEBACiAJCQkJNDZCOTUxOTcyMDdENjM0MDAwQTdE
MkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NkJC
RDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RB
NkMwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QzREMEREMzI0RDlGMTBEMDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTE1MThGQzFFNzhDMTVGMDBFQzUxNEEgLyogR1BVQmFz
ZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjUxLDYgKzMx
NjU1LDcgQEAKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8qIElubGluZUxpbmVC
b3guaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTE5ODE3MjE3ODM5N0MwMDQ0NkYwOCAvKiBJbmxp
bmVMaW5lQnJlYWtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkYyNkVCNDgyMzQwMDRBNTAwNjkw
NkUyIC8qIElubGluZUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDU3NzVDRTI0
MTQzN0Q1MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTZG
MzYwRTUwMjM5OTk0MjEwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hl
ZXRPd25lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjY2Miw3ICszMjY2Nyw2IEBACiAJCQkJODQ3
MzBEOTExMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1w
VmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGMjZFQjQ4MjM0MDA0QTUwMDY5MDZFMiAvKiBJ
bmxpbmVMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFCMkExODM4MERBMDAw
NTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4NEEzM0Uy
MzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0MzQzRDI1MjM5Mjc3OTAwMEVCQkI2NiAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsQ29tcGxl
eFBhdGguaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggOGYxYzIwNWEw
NDM1OWRhZGJiZWVlMTEyYTVkMDI4ZDkxM2M4MTY2ZS4uZjZiNWYwZTM4ZGI4M2U5ZWMwNTBiNWUx
ZGFlMzUxMDkwOTllNWE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC01ODQsNyArNTg0LDcg
QEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0LCBH
bHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIEcKICAgICAgICAgLy8gV2hlbiBsZWZ0bW9zdEdseXBo
IGlzIDAsIGl0IHJlcHJlc2VudHMgdGhlIGZpcnN0IGdseXBoIHRvIGRyYXcsIHRha2luZyBpbnRv
CiAgICAgICAgIC8vIGFjY291bnQgdGhlIHRleHQgZGlyZWN0aW9uLgogICAgICAgICBpZiAoIWlu
ZGV4T2ZMZWZ0bW9zdEdseXBoSW5DdXJyZW50UnVuICYmIGdseXBoQnVmZmVyKQotICAgICAgICAg
ICAgZ2x5cGhCdWZmZXItPnNldEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZShjb21w
bGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIGNvbXBsZXhUZXh0UnVuLmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0
aWFsQWR2YW5jZShtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxB
ZHZhbmNlKCkpKTsKIAogICAgICAgICB3aGlsZSAobV9nbHlwaEluQ3VycmVudFJ1biA8IGdseXBo
Q291bnQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBoU3RhcnRPZmZzZXQgPSBjb21wbGV4
VGV4dFJ1bi5pbmRleEF0KGdseXBoSW5kZXhJbnRvQ3VycmVudFJ1bik7CkBAIC02MDQsMjMgKzYw
NCwyMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZz
ZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogCiAgICAgICAgICAgICBpZiAoZ2x5cGhC
dWZmZXIgJiYgIW1fY2hhcmFjdGVySW5DdXJyZW50R2x5cGgpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGN1cnJlbnRHbHlwaE9yaWdpbiA9IGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxl
eFRleHRDb250cm9sbGVyKTsKLSAgICAgICAgICAgICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgcGFp
bnRBZHZhbmNlKGFkanVzdGVkQmFzZUFkdmFuY2UpOworICAgICAgICAgICAgICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBwYWludEFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGFkanVzdGVk
QmFzZUFkdmFuY2UpOwogICAgICAgICAgICAgICAgIGlmICghZ2x5cGhJbmRleEludG9DdXJyZW50
UnVuKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBsYXlvdXQgYWR2YW5jZSBv
ZiBldmVyeSBydW4gaW5jbHVkZXMgdGhlICJpbml0aWFsIGxheW91dCBhZHZhbmNlLiIgSG93ZXZl
ciwgaGVyZSwgd2UgbmVlZAogICAgICAgICAgICAgICAgICAgICAvLyBwYWludCBhZHZhbmNlcywg
c28gc3VidHJhY3QgaXQgb3V0IGJlZm9yZSB0cmFuc2Zvcm1pbmcgdGhlIGxheW91dCBhZHZhbmNl
IGludG8gYSBwYWludCBhZHZhbmNlLgotICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uu
c2V0V2lkdGgocGFpbnRBZHZhbmNlLndpZHRoKCkgLSAoY29tcGxleFRleHRSdW4uaW5pdGlhbEFk
dmFuY2UoKS53aWR0aCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSkpOwotICAgICAgICAgICAg
ICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQoKSAtIChj
b21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpIC0gY3VycmVudEdseXBoT3Jp
Z2luLnkoKSkpOworICAgICAgICAgICAgICAgICAgICBzZXRXaWR0aChwYWludEFkdmFuY2UsIHdp
ZHRoKHBhaW50QWR2YW5jZSkgLSAoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0
aCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSkpOworICAgICAgICAgICAgICAgICAgICBzZXRI
ZWlnaHQocGFpbnRBZHZhbmNlLCBoZWlnaHQocGFpbnRBZHZhbmNlKSAtIChjb21wbGV4VGV4dFJ1
bi5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpIC0gY3VycmVudEdseXBoT3JpZ2luLnkoKSkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgo
cGFpbnRBZHZhbmNlLndpZHRoKCkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhU
ZXh0Q29udHJvbGxlciArIDEpLngoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi54KCkpOwotICAgICAg
ICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpICsg
Z2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkg
LSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKTsKKyAgICAgICAgICAgICAgICBzZXRXaWR0aChwYWlu
dEFkdmFuY2UsIHdpZHRoKHBhaW50QWR2YW5jZSkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50
b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi54KCkp
OworICAgICAgICAgICAgICAgIHNldEhlaWdodChwYWludEFkdmFuY2UsIGhlaWdodChwYWludEFk
dmFuY2UpICsgZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIg
KyAxKS55KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKTsKICAgICAgICAgICAgICAgICBpZiAo
Z2x5cGhJbmRleEludG9DdXJyZW50UnVuID09IGdseXBoQ291bnQgLSAxICYmIGN1cnJlbnRSdW5J
bmRleCArIDEgPCBydW5Db3VudCkgewogICAgICAgICAgICAgICAgICAgICAvLyBPdXIgcGFpbnQg
YWR2YW5jZSBwb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcnVuLiBIb3dldmVyLCB0aGUgbmV4dCBy
dW4gbWF5IGhhdmUgYW4KICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBhZHZhbmNlLCBh
bmQgb3VyIHBhaW50IGFkdmFuY2UgbmVlZHMgdG8gcG9pbnQgdG8gdGhlIGxvY2F0aW9uIG9mIHRo
ZSBuZXh0CiAgICAgICAgICAgICAgICAgICAgIC8vIGdseXBoLiBTbywgd2UgbmVlZCB0byBhZGQg
aW4gdGhlIG5leHQgcnVuJ3MgaW5pdGlhbCBhZHZhbmNlLgotICAgICAgICAgICAgICAgICAgICBw
YWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNlLndpZHRoKCkgLSBnbHlwaE9yaWdpbihn
bHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSArIG1fY29tcGxleFRl
eHRSdW5zW2N1cnJlbnRSdW5JbmRleCArIDFdLT5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkpOwot
ICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5o
ZWlnaHQoKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVy
ICsgMSkueSgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICBzZXRXaWR0aChwYWlu
dEFkdmFuY2UsIHdpZHRoKHBhaW50QWR2YW5jZSkgLSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50
b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLngoKSArIG1fY29tcGxleFRleHRSdW5zW2N1cnJl
bnRSdW5JbmRleCArIDFdLT5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkpOworICAgICAgICAgICAg
ICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCBoZWlnaHQocGFpbnRBZHZhbmNlKSAtIGds
eXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueSgpICsg
bV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCku
aGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWludEFkdmFu
Y2Uuc2V0SGVpZ2h0KC1wYWludEFkdmFuY2UuaGVpZ2h0KCkpOyAvLyBJbmNyZWFzaW5nIHkgcG9p
bnRzIGRvd24KKyAgICAgICAgICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCAtaGVpZ2h0
KHBhaW50QWR2YW5jZSkpOyAvLyBJbmNyZWFzaW5nIHkgcG9pbnRzIGRvd24KICAgICAgICAgICAg
ICAgICBnbHlwaEJ1ZmZlci0+YWRkKG1fYWRqdXN0ZWRHbHlwaHNbZ2x5cGhJbmRleEludG9Db21w
bGV4VGV4dENvbnRyb2xsZXJdLCBjb21wbGV4VGV4dFJ1bi5mb250KCksIHBhaW50QWR2YW5jZSwg
Y29tcGxleFRleHRSdW4uaW5kZXhBdChtX2dseXBoSW5DdXJyZW50UnVuKSk7CiAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcAppbmRleCA1OWM4MmFmN2JhNDZiNTVjMzk4MzdiNjMxYjgxMzA1ZmUyNDA3NDlhLi4xYTE2
NWFlNmYxYzI5MDUxY2U0NGYxOTQ4YWZlZDE2ZWJlODU0YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC00NTEsNyArNDUxLDcg
QEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGkKICAgICAvLyBTYW1lIGdseXBoIHdpZHRocyBidXQg
ZGlmZmVyZW50IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgY2FuIHByb2R1Y2UgZGlmZmVyZW50
IHJ1biB3aWR0aC4KICAgICBmbG9hdCBydW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBw
bGllZCA9IC1ydW5XaWR0aDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdseXBoQnVmZmVy
LnNpemUoKTsgKytpKQotICAgICAgICBydW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBw
bGllZCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgcnVuV2lk
dGhEaWZmZXJlbmNlV2l0aFRyYW5zZm9ybUFwcGxpZWQgKz0gV2ViQ29yZTo6d2lkdGgoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICBydW5XaWR0aCArPSBydW5XaWR0aERpZmZlcmVuY2VX
aXRoVHJhbnNmb3JtQXBwbGllZDsKIAogICAgIGlmIChjYWNoZUVudHJ5KQpAQCAtMTQwMSw3ICsx
NDAxLDcgQEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnMKICAgICBpZiAoIWdseXBoQnVmZmVyLmlz
RW1wdHkoKSkgewogICAgICAgICAvLyBUaGUgaW5pdGlhbCBhZHZhbmNlIGlzIHN1cHBvc2VkIHRv
IHBvaW50IGRpcmVjdGx5IHRvIHRoZSBmaXJzdCBnbHlwaCdzIHBhaW50IHBvc2l0aW9uLgogICAg
ICAgICAvLyBTZWUgdGhlIGFzY2lpLWFydCBkaWFncmFtIGluIENvbXBsZXhUZXh0Q29udHJvbGxl
ci5oLgotICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZl
ckFkdmFuY2UoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkueCgpLCBnbHlwaEJ1ZmZlci5vcmlnaW5B
dCgwKS55KCkpKTsKKyAgICAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kSW5pdGlhbEFkdmFuY2UobWFr
ZUdseXBoQnVmZmVyQWR2YW5jZSh4KGdseXBoQnVmZmVyLm9yaWdpbkF0KDApKSwgeShnbHlwaEJ1
ZmZlci5vcmlnaW5BdCgwKSkpKTsKICAgICB9CiAKICAgICAvLyBUaGUgZ2x5cGggYnVmZmVyIGlz
IGN1cnJlbnRseSBpbiBsb2dpY2FsIG9yZGVyLApAQCAtMTQyOSwxNiArMTQyOSwxNiBAQCBHbHlw
aEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCB1bnNpZ25lZCBmcm9tLCB1bgogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2
YW5jZXMuCiAgICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90
YWxBZHZhbmNlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBo
QnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9h
dFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlh
bEFkdmFuY2UgLT0gV2ViQ29yZTo6c2l6ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRTaXplKGdseXBoQnVmZmVy
LmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBXZWJDb3JlOjpz
aXplKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGRu
J3Qgd2Ugc3VidHJhY3QgdGhlIG90aGVyIGluaXRpYWwgYWR2YW5jZT8KICAgICAgICAgZ2x5cGhC
dWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOwogICAgICAgICBnbHlwaEJ1ZmZl
ci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gdG9GbG9hdFNpemUoZHVtbXlHbHlwaEJ1ZmZl
ci5pbml0aWFsQWR2YW5jZSgpKTsKKyAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0g
V2ViQ29yZTo6c2l6ZShkdW1teUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KGkpKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IFdlYkNvcmU6
OnNpemUoZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICAvLyBGSVhNRTog
U2hvdWxkbid0IHdlIGFkZCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAgICBnbHlw
aEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShpbml0aWFsQWR2YW5jZSk7CiAgICAgfQpAQCAtMTQ1
OSw4ICsxNDU5LDggQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAgICBBU1NFUlQoZ2x5cGhC
dWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgY29uc3QgRm9udCogZm9udERhdGEgPSAmZ2x5cGhC
dWZmZXIuZm9udEF0KDApOwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50OwotICAg
IGZsb2F0IG5leHRYID0gc3RhcnRQb2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCku
d2lkdGgoKTsKLSAgICBmbG9hdCBuZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDApLmhlaWdodCgpOworICAgIGZsb2F0IG5leHRYID0gc3RhcnRQb2ludC54KCkg
KyBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpOworICAgIGZsb2F0IG5l
eHRZID0gc3RhcnRQb2ludC55KCkgKyBoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKTsK
ICAgICB1bnNpZ25lZCBsYXN0RnJvbSA9IDA7CiAgICAgdW5zaWduZWQgbmV4dEdseXBoID0gMTsK
ICAgICB3aGlsZSAobmV4dEdseXBoIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpKSB7CkBAIC0xNDc1LDgg
KzE0NzUsOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgICAgICAgICAgc3RhcnRQb2lu
dC5zZXRYKG5leHRYKTsKICAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0WShuZXh0WSk7CiAgICAg
ICAgIH0KLSAgICAgICAgbmV4dFggKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG5leHRHbHlwaCku
d2lkdGgoKTsKLSAgICAgICAgbmV4dFkgKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG5leHRHbHlw
aCkuaGVpZ2h0KCk7CisgICAgICAgIG5leHRYICs9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKKyAgICAgICAgbmV4dFkgKz0gaGVpZ2h0KGdseXBoQnVm
ZmVyLmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKICAgICAgICAgbmV4dEdseXBoKys7CiAgICAgfQog
CkBAIC0xNTIxLDcgKzE1MjEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJgogICAgIEdseXBo
QnVmZmVyIG1hcmtCdWZmZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSArIDEgPCBnbHlw
aEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBmbG9hdCBtaWRkbGVPZk5leHRHbHlwaCA9
IG9mZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIsIGkgKyAxKTsKLSAgICAg
ICAgZmxvYXQgYWR2YW5jZSA9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpIC0gbWlk
ZGxlT2ZMYXN0R2x5cGggKyBtaWRkbGVPZk5leHRHbHlwaDsKKyAgICAgICAgZmxvYXQgYWR2YW5j
ZSA9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSkgLSBtaWRkbGVPZkxh
c3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOwogICAgICAgICBtYXJrQnVmZmVyLmFkZChnbHlw
aEJ1ZmZlci5nbHlwaEF0KGkpID8gbWFya0dseXBoIDogc3BhY2VHbHlwaCwgKm1hcmtGb250RGF0
YSwgYWR2YW5jZSk7CiAgICAgICAgIG1pZGRsZU9mTGFzdEdseXBoID0gbWlkZGxlT2ZOZXh0R2x5
cGg7CiAgICAgfQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpleHRlbnRzKCkKIHsKICAgICBhdXRvIGJlZ2lubmluZyA9
IG1fdHJhbnNsYXRpb24ubWFwUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgYXV0byBhZHZh
bmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9pbmRleCk7Ci0gICAgYXV0byBlbmQgPSBt
X3RyYW5zbGF0aW9uLm1hcFNpemUoRmxvYXRTaXplKGFkdmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5o
ZWlnaHQoKSkpOworICAgIGF1dG8gZW5kID0gbV90cmFuc2xhdGlvbi5tYXBTaXplKHNpemUoYWR2
YW5jZSkpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdpbm5pbmcueCgpLCBiZWdpbm5p
bmcueCgpICsgZW5kLndpZHRoKCkpOwogfQogCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBhdXRvIEds
eXBoVG9QYXRoVHJhbnNsYXRvcjo6dW5kZXJsaW5lVHlwZSgpIC0+IEdseXBoVW5kZXJsaW5lVHlw
ZQogdm9pZCBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQogewogICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBhZHZhbmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9pbmRleCk7Ci0g
ICAgbV90cmFuc2xhdGlvbi50cmFuc2xhdGUoRmxvYXRTaXplKGFkdmFuY2Uud2lkdGgoKSwgYWR2
YW5jZS5oZWlnaHQoKSkpOworICAgIG1fdHJhbnNsYXRpb24udHJhbnNsYXRlKHNpemUoYWR2YW5j
ZSkpOwogICAgICsrbV9pbmRleDsKICAgICBpZiAobV9pbmRleCA8IG1fZ2x5cGhCdWZmZXIuc2l6
ZSgpKQogICAgICAgICBtX2ZvbnREYXRhID0gJm1fZ2x5cGhCdWZmZXIuZm9udEF0KG1faW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5k
ZXggZDcwMzE5YzE1NzEwYzllNTllMjA4NWFhODgyZmU4ZjRmMzYyMDlkOS4uY2ViZjE0NWZhN2Vj
YmI2Y2M0OWMwYmJiMGI0NWRlNTZiYTM4ZTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0zMiwxNDEgKzMyLDE1IEBACiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBo
LmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXJNZW1iZXJzLmgiCiAjaW5jbHVkZSA8Y2xpbWl0cz4K
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgVVNFKENH
KQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+Ci0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250OwogCi0jaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYg
d2NoYXJfdCBHbHlwaEJ1ZmZlckdseXBoOwotI2Vsc2UKLXR5cGVkZWYgR2x5cGggR2x5cGhCdWZm
ZXJHbHlwaDsKLSNlbmRpZgotCi0vLyBDRyB1c2VzIENHU2l6ZSBpbnN0ZWFkIG9mIEZsb2F0U2l6
ZSBzbyB0aGF0IHRoZSByZXN1bHQgb2YgYWR2YW5jZXMoKQotLy8gY2FuIGJlIHBhc3NlZCBkaXJl
Y3RseSB0byBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzIGluIEZvbnRNYWMubW0KLSNp
ZiBVU0UoQ0cpCi0KLXN0cnVjdCBHbHlwaEJ1ZmZlckFkdmFuY2UgOiBDR1NpemUgewotcHVibGlj
OgotICAgIEdseXBoQnVmZmVyQWR2YW5jZSgpCi0gICAgICAgIDogQ0dTaXplKENHU2l6ZVplcm8p
Ci0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoRmxvYXRTaXplIHNpemUpCi0g
ICAgICAgIDogQ0dTaXplKHNpemUpCi0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICAgICAgOiBDR1NpemUoQ0dTaXplTWFr
ZSh3aWR0aCwgaGVpZ2h0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IGRlY29kZShEZWNvZGVy
Jik7Ci0KLSAgICBvcGVyYXRvciBGbG9hdFNpemUoKSB7IHJldHVybiB7IHN0YXRpY19jYXN0PGZs
b2F0Pih0aGlzLT5DR1NpemU6OndpZHRoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRoaXMtPkNHU2l6
ZTo6aGVpZ2h0KSB9OyB9Ci0KLSAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHdpZHRoKSB7IHRoaXMt
PkNHU2l6ZTo6d2lkdGggPSB3aWR0aDsgfQotICAgIHZvaWQgc2V0SGVpZ2h0KGZsb2F0IGhlaWdo
dCkgeyB0aGlzLT5DR1NpemU6OmhlaWdodCA9IGhlaWdodDsgfQotICAgIGZsb2F0IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gdGhpcy0+Q0dTaXplOjp3aWR0aDsgfQotICAgIGZsb2F0IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHU2l6ZTo6aGVpZ2h0OyB9Ci19OwotCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgotdm9pZCBHbHlwaEJ1ZmZlckFkdmFuY2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgd2lkdGgoKTsKLSAgICBlbmNvZGVyIDw8
IGhlaWdodCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8R2x5cGhC
dWZmZXJBZHZhbmNlPiBHbHlwaEJ1ZmZlckFkdmFuY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKLSAgICBkZWNvZGVyID4+IHdpZHRoOwot
ICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRp
b25hbDxmbG9hdD4gaGVpZ2h0OwotICAgIGRlY29kZXIgPj4gaGVpZ2h0OwotICAgIGlmICghaGVp
Z2h0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIEdseXBoQnVm
ZmVyQWR2YW5jZSgqd2lkdGgsICpoZWlnaHQpOwotfQotCi1zdHJ1Y3QgR2x5cGhCdWZmZXJPcmln
aW4gOiBDR1BvaW50IHsKLXB1YmxpYzoKLSAgICBHbHlwaEJ1ZmZlck9yaWdpbigpCi0gICAgICAg
IDogQ0dQb2ludChDR1BvaW50WmVybykKLSAgICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyT3Jp
Z2luKEZsb2F0UG9pbnQgcG9pbnQpCi0gICAgICAgIDogQ0dQb2ludChwb2ludCkKLSAgICB7Ci0g
ICAgfQotICAgIEdseXBoQnVmZmVyT3JpZ2luKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgICAgIDog
Q0dQb2ludChDR1BvaW50TWFrZSh4LCB5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbHlwaEJ1ZmZlck9yaWdpbj4gZGVjb2Rl
KERlY29kZXImKTsKLQotICAgIG9wZXJhdG9yIEZsb2F0UG9pbnQoKSB7IHJldHVybiB7IHN0YXRp
Y19jYXN0PGZsb2F0Pih0aGlzLT5DR1BvaW50Ojp4KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRoaXMt
PkNHUG9pbnQ6OnkpIH07IH0KLQotICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IHRoaXMtPkNHUG9p
bnQ6OnggPSB4OyB9Ci0gICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgdGhpcy0+Q0dQb2ludDo6eSA9
IHk7IH0KLSAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+Q0dQb2ludDo6eDsgfQot
ICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1BvaW50Ojp5OyB9Ci19OwotCi10
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBHbHlwaEJ1ZmZlck9yaWdpbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCB4KCk7Ci0gICAgZW5jb2Rl
ciA8PCB5KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxHbHlwaEJ1
ZmZlck9yaWdpbj4gR2x5cGhCdWZmZXJPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQot
ewotICAgIE9wdGlvbmFsPGZsb2F0PiB4OwotICAgIGRlY29kZXIgPj4geDsKLSAgICBpZiAoIXgp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxmbG9hdD4geTsK
LSAgICBkZWNvZGVyID4+IHk7Ci0gICAgaWYgKCF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgcmV0dXJuIEdseXBoQnVmZmVyT3JpZ2luKCp4LCAqeSk7Ci19Ci0KLXVzaW5n
IEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0ID0gQ0ZJbmRleDsKLQotI2Vsc2UKLQotdXNpbmcgR2x5
cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwotdXNpbmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBG
bG9hdFBvaW50OwotdXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSB1bnNpZ25lZDsKLQot
I2VuZGlmIC8vICNpZiBVU0UoQ0cpCi0KLWlubGluZSBGbG9hdFNpemUgdG9GbG9hdFNpemUoY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhKQotewotICAgIHJldHVybiBGbG9hdFNpemUoYS53aWR0
aCgpLCBhLmhlaWdodCgpKTsKLX0KLQogY2xhc3MgR2x5cGhCdWZmZXIgewogcHVibGljOgogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHMuaXNFbXB0eSgpOyB9CkBAIC0y
MDQsMTkgKzc4LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW5pdGlhbEFkdmFuY2UoR2x5
cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZhbmNlKSB7IG1faW5pdGlhbEFkdmFuY2UgPSBpbml0
aWFsQWR2YW5jZTsgfQogICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgaW5pdGlhbEFkdmFu
Y2UoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxBZHZhbmNlOyB9Ci0gICAgdm9pZCBleHBhbmRJ
bml0aWFsQWR2YW5jZShmbG9hdCB3aWR0aCkgeyBtX2luaXRpYWxBZHZhbmNlLnNldFdpZHRoKG1f
aW5pdGlhbEFkdmFuY2Uud2lkdGgoKSArIHdpZHRoKTsgfQorICAgIHZvaWQgZXhwYW5kSW5pdGlh
bEFkdmFuY2UoZmxvYXQgd2lkdGgpIHsgc2V0V2lkdGgobV9pbml0aWFsQWR2YW5jZSwgV2ViQ29y
ZTo6d2lkdGgobV9pbml0aWFsQWR2YW5jZSkgKyB3aWR0aCk7IH0KICAgICB2b2lkIGV4cGFuZElu
aXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSBhZGRpdGlvbmFsQWR2YW5jZSkKICAgICB7
Ci0gICAgICAgIG1faW5pdGlhbEFkdmFuY2Uuc2V0V2lkdGgobV9pbml0aWFsQWR2YW5jZS53aWR0
aCgpICsgYWRkaXRpb25hbEFkdmFuY2Uud2lkdGgoKSk7Ci0gICAgICAgIG1faW5pdGlhbEFkdmFu
Y2Uuc2V0SGVpZ2h0KG1faW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCkgKyBhZGRpdGlvbmFsQWR2YW5j
ZS5oZWlnaHQoKSk7CisgICAgICAgIHNldFdpZHRoKG1faW5pdGlhbEFkdmFuY2UsIHdpZHRoKG1f
aW5pdGlhbEFkdmFuY2UpICsgd2lkdGgoYWRkaXRpb25hbEFkdmFuY2UpKTsKKyAgICAgICAgc2V0
SGVpZ2h0KG1faW5pdGlhbEFkdmFuY2UsIGhlaWdodChtX2luaXRpYWxBZHZhbmNlKSArIGhlaWdo
dChhZGRpdGlvbmFsQWR2YW5jZSkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3RleHBy
IEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IG5vT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czxH
bHlwaEJ1ZmZlclN0cmluZ09mZnNldD46Om1heCgpOwogICAgIHZvaWQgYWRkKEdseXBoIGdseXBo
LCBjb25zdCBGb250JiBmb250LCBmbG9hdCB3aWR0aCwgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQg
b2Zmc2V0SW5TdHJpbmcgPSBub09mZnNldCkKICAgICB7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2
YW5jZSBhZHZhbmNlOwotICAgICAgICBhZHZhbmNlLnNldFdpZHRoKHdpZHRoKTsKLSAgICAgICAg
YWR2YW5jZS5zZXRIZWlnaHQoMCk7CisgICAgICAgIHNldFdpZHRoKGFkdmFuY2UsIHdpZHRoKTsK
KyAgICAgICAgc2V0SGVpZ2h0KGFkdmFuY2UsIDApOwogICAgICAgICBhZGQoZ2x5cGgsIGZvbnQs
IGFkdmFuY2UsIG9mZnNldEluU3RyaW5nKTsKICAgICB9CiAKQEAgLTIyNSw3ICs5OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb250cy5hcHBlbmQoJmZvbnQpOwogICAgICAgICBtX2dseXBocy5h
cHBlbmQoZ2x5cGgpOwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKLSAgICAg
ICAgbV9vcmlnaW5zLmFwcGVuZChHbHlwaEJ1ZmZlck9yaWdpbigpKTsKKyAgICAgICAgbV9vcmln
aW5zLmFwcGVuZCh7IH0pOwogICAgICAgICBtX29mZnNldHNJblN0cmluZy5hcHBlbmQob2Zmc2V0
SW5TdHJpbmcpOwogICAgIH0KIApAQCAtMjQzLDkgKzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKGxvY2F0aW9uIDw9IHNpemUoKSk7CiAKICAgICAgICAgbV9mb250cy5pbnNlcnRWZWN0
b3IobG9jYXRpb24sIFZlY3Rvcjxjb25zdCBGb250Kj4obGVuZ3RoLCBmb250KSk7Ci0gICAgICAg
IG1fZ2x5cGhzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+
KGxlbmd0aCwgMHhGRkZGKSk7Ci0gICAgICAgIG1fYWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0
aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlPihsZW5ndGgsIEdseXBoQnVmZmVyQWR2YW5j
ZSgwLCAwKSkpOwotICAgICAgICBtX29yaWdpbnMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0
b3I8R2x5cGhCdWZmZXJPcmlnaW4+KGxlbmd0aCwgR2x5cGhCdWZmZXJPcmlnaW4oKSkpOworICAg
ICAgICBtX2dseXBocy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlckds
eXBoPihsZW5ndGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8R2x5cGhCdWZmZXJHbHlwaD46Om1heCgp
KSk7CisgICAgICAgIG1fYWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5
cGhCdWZmZXJBZHZhbmNlPihsZW5ndGgsIHsgfSkpOworICAgICAgICBtX29yaWdpbnMuaW5zZXJ0
VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJPcmlnaW4+KGxlbmd0aCwgeyB9KSk7
CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9y
PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0PihsZW5ndGgsIDApKTsKICAgICB9CiAKQEAgLTI1OSwy
MiArMTMzLDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsK
ICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMubGFz
dCgpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsg
d2lkdGgpOworICAgICAgICBzZXRXaWR0aChsYXN0QWR2YW5jZSwgV2ViQ29yZTo6d2lkdGgobGFz
dEFkdmFuY2UpICsgd2lkdGgpOwogICAgIH0KIAogICAgIHZvaWQgZXhwYW5kQWR2YW5jZSh1bnNp
Z25lZCBpbmRleCwgZmxvYXQgd2lkdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBz
aXplKCkpOwogICAgICAgICBhdXRvJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXNbaW5kZXhdOwot
ICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgpICsgd2lkdGgp
OworICAgICAgICBzZXRXaWR0aChsYXN0QWR2YW5jZSwgV2ViQ29yZTo6d2lkdGgobGFzdEFkdmFu
Y2UpICsgd2lkdGgpOwogICAgIH0KIAogICAgIHZvaWQgZXhwYW5kTGFzdEFkdmFuY2UoR2x5cGhC
dWZmZXJBZHZhbmNlIGV4cGFuc2lvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgp
KTsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlJiBsYXN0QWR2YW5jZSA9IG1fYWR2YW5jZXMu
bGFzdCgpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgp
ICsgZXhwYW5zaW9uLndpZHRoKCkpOwotICAgICAgICBsYXN0QWR2YW5jZS5zZXRIZWlnaHQobGFz
dEFkdmFuY2UuaGVpZ2h0KCkgKyBleHBhbnNpb24uaGVpZ2h0KCkpOworICAgICAgICBzZXRXaWR0
aChsYXN0QWR2YW5jZSwgd2lkdGgobGFzdEFkdmFuY2UpICsgd2lkdGgoZXhwYW5zaW9uKSk7Cisg
ICAgICAgIHNldEhlaWdodChsYXN0QWR2YW5jZSwgaGVpZ2h0KGxhc3RBZHZhbmNlKSArIGhlaWdo
dChleHBhbnNpb24pKTsKICAgICB9CiAKICAgICB2b2lkIHNocmluayh1bnNpZ25lZCB0cnVuY2F0
aW9uUG9pbnQpCkBAIC0yOTUsOSArMTY5LDkgQEAgcHVibGljOgogICAgIHZvaWQgZmxhdHRlbigp
CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIG1fYWR2YW5jZXNbaV0gPSBHbHlwaEJ1ZmZlckFkdmFuY2UoCi0gICAgICAg
ICAgICAgICAgLW1fb3JpZ2luc1tpXS54KCkgKyBtX2FkdmFuY2VzW2ldLndpZHRoKCkgKyAoaSAr
IDEgPCBzaXplKCkgPyBtX29yaWdpbnNbaSArIDFdLngoKSA6IDApLAotICAgICAgICAgICAgICAg
IC1tX29yaWdpbnNbaV0ueSgpICsgbV9hZHZhbmNlc1tpXS5oZWlnaHQoKSArIChpICsgMSA8IHNp
emUoKSA/IG1fb3JpZ2luc1tpICsgMV0ueSgpIDogMCkKKyAgICAgICAgICAgIG1fYWR2YW5jZXNb
aV0gPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKAorICAgICAgICAgICAgICAgIC14KG1fb3JpZ2lu
c1tpXSkgKyB3aWR0aChtX2FkdmFuY2VzW2ldKSArIChpICsgMSA8IHNpemUoKSA/IHgobV9vcmln
aW5zW2kgKyAxXSkgOiAwKSwKKyAgICAgICAgICAgICAgICAteShtX29yaWdpbnNbaV0pICsgaGVp
Z2h0KG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geShtX29yaWdpbnNbaSArIDFd
KSA6IDApCiAgICAgICAgICAgICApOwogICAgICAgICAgICAgbV9vcmlnaW5zW2ldID0gR2x5cGhC
dWZmZXJPcmlnaW4oKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzNiNTQ4MjMx
ZWM0YTU2NDZlMTUyYzBmNDBhMjY2YWEzOTUwN2ZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJNZW1iZXJzLmgKQEAgLTAsMCAr
MSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHbHlwaC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dGb250Lmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoZSBDRyBwb3J0cyB1c2UgdGhlIENHIHR5
cGVzIGRpcmVjdGx5LCBzbyBhbiBhcnJheSBvZiB0aGVzZSB0eXBlcyBjYW4gYmUgZmVkIGRpcmVj
dGx5IGludG8gQ1RGb250U2hhcGVHbHlwaHMoKS4KKyNpZiBVU0UoQ0cpCit1c2luZyBHbHlwaEJ1
ZmZlckdseXBoID0gQ0dHbHlwaDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IENHU2l6ZTsK
K3VzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gQ0dQb2ludDsKK3VzaW5nIEdseXBoQnVmZmVyU3Ry
aW5nT2Zmc2V0ID0gQ0ZJbmRleDsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBHbHlwaEJ1ZmZl
ckdseXBoID0gd2NoYXJfdDsKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6ZTsK
K3VzaW5nIEdseXBoQnVmZmVyT3JpZ2luID0gRmxvYXRQb2ludDsKK3VzaW5nIEdseXBoQnVmZmVy
U3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7CisjZWxzZQordXNpbmcgR2x5cGhCdWZmZXJHbHlwaCA9
IEdseXBoOwordXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwordXNpbmcgR2x5
cGhCdWZmZXJPcmlnaW4gPSBGbG9hdFBvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZz
ZXQgPSB1bnNpZ25lZDsKKyNlbmRpZgorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNlIG1ha2VH
bHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiA9IEZsb2F0U2l6ZSgpKTsKK2lubGlu
ZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCA9IDAsIGZs
b2F0ID0gMCk7CitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
Jik7CitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7Citp
bmxpbmUgdm9pZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiwgZmxvYXQpOworaW5saW5l
IGZsb2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYpOworaW5saW5lIGZsb2F0IGhl
aWdodChjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsKK2lubGluZSBHbHlwaEJ1ZmZlck9yaWdp
biBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYgPSBGbG9hdFBvaW50KCkp
OworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCA9
IDAsIGZsb2F0ID0gMCk7CitpbmxpbmUgRmxvYXRQb2ludCBwb2ludChjb25zdCBHbHlwaEJ1ZmZl
ck9yaWdpbiYpOworaW5saW5lIHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsK
K2lubGluZSB2b2lkIHNldFkoR2x5cGhCdWZmZXJPcmlnaW4mLCBmbG9hdCk7CitpbmxpbmUgZmxv
YXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYpOworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5
cGhCdWZmZXJPcmlnaW4mKTsKKworI2lmIFVTRShDRykKKworaW5saW5lIEdseXBoQnVmZmVyQWR2
YW5jZSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAg
ICByZXR1cm4gQ0dTaXplTWFrZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitp
bmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICByZXR1cm4gQ0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0
KTsKK30KKworaW5saW5lIEZsb2F0U2l6ZSBzaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYg
YWR2YW5jZSkKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGFkdmFuY2Uud2lkdGgsIGFkdmFuY2Uu
aGVpZ2h0KTsKK30KKworaW5saW5lIHZvaWQgc2V0V2lkdGgoR2x5cGhCdWZmZXJBZHZhbmNlJiBh
ZHZhbmNlLCBmbG9hdCB3aWR0aCkKK3sKKyAgICBhZHZhbmNlLndpZHRoID0gd2lkdGg7Cit9CisK
K2lubGluZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0
IGhlaWdodCkKK3sKKyAgICBhZHZhbmNlLmhlaWdodCA9IGhlaWdodDsKK30KKworaW5saW5lIGZs
b2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1
cm4gYWR2YW5jZS53aWR0aDsKK30KKworaW5saW5lIGZsb2F0IGhlaWdodChjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFuY2UuaGVpZ2h0OworfQor
CitpbmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShwb2ludC54KCksIHBv
aW50LnkoKSk7Cit9CisKK2lubGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJP
cmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoeCwgeSk7
Cit9CisKK2lubGluZSBGbG9hdFBvaW50IHBvaW50KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBv
cmlnaW4pCit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQob3JpZ2luLngsIG9yaWdpbi55KTsKK30K
KworaW5saW5lIHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB4KQor
eworICAgIG9yaWdpbi54ID0geDsKK30KKworaW5saW5lIHZvaWQgc2V0WShHbHlwaEJ1ZmZlck9y
aWdpbiYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi55ID0geTsKK30KKworaW5saW5l
IGZsb2F0IHgoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
b3JpZ2luLng7Cit9CisKK2lubGluZSBmbG9hdCB5KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBv
cmlnaW4pCit7CisgICAgcmV0dXJuIG9yaWdpbi55OworfQorCisjZWxzZQorCitpbmxpbmUgR2x5
cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBz
aXplKQoreworICAgIHJldHVybiBzaXplOworfQorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNl
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAg
ICByZXR1cm4gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitpbmxpbmUgRmxvYXRTaXpl
IHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBh
ZHZhbmNlOworfQorCitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFk
dmFuY2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOworfQor
CitpbmxpbmUgdm9pZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBmbG9h
dCBoZWlnaHQpCit7CisgICAgYWR2YW5jZS5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKworaW5saW5l
IGZsb2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICBy
ZXR1cm4gYWR2YW5jZS53aWR0aCgpOworfQorCitpbmxpbmUgZmxvYXQgaGVpZ2h0KGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5jZS5oZWlnaHQo
KTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihj
b25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcG9pbnQ7Cit9CisKK2lubGlu
ZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQg
eSkKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KTsKK30KKworaW5saW5lIEZsb2F0UG9p
bnQgcG9pbnQoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
b3JpZ2luOworfQorCitpbmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4s
IGZsb2F0IHgpCit7CisgICAgb3JpZ2luLnNldFgoeCk7Cit9CisKK2lubGluZSB2b2lkIHNldFko
R2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQgeSkKK3sKKyAgICBvcmlnaW4uc2V0WSh5
KTsKK30KKworaW5saW5lIGZsb2F0IHgoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikK
K3sKKyAgICByZXR1cm4gb3JpZ2luLngoKTsKK30KKworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5
cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gb3JpZ2luLnkoKTsKK30KKwor
I2VuZGlmIC8vICNpZiBVU0UoQ0cpCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMTE4MzcyZWJhODFmZmUzNGU4ZjYz
ZmMyMTc2ZWIxY2QyMTI4MzA1Ni4uYTg4NjY3NWM0YjUzNDU4MWI4MGE2MzY4MGNjMGViNDk1OWFj
OWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRv
cjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgog
ICAgIEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcygw
KTsKICAgICBmbG9hdCBiZWZvcmVXaWR0aCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFz
dEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKLSAgICAgICAgYmVmb3JlV2lk
dGggKz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKKyAgICAgICAgYmVmb3JlV2lkdGggKz0gd2lkdGgo
YWR2YW5jZXNbaV0pOwogCiAgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50IDw9IGdseXBoQnVmZmVy
U2l6ZSk7CiAKQEAgLTExMCw4ICsxMTAsOCBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6
YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogCiAg
ICAgR2x5cGhCdWZmZXJPcmlnaW4qIG9yaWdpbnMgPSBnbHlwaEJ1ZmZlci5vcmlnaW5zKDApOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXpl
OyArK2kpIHsKLSAgICAgICAgYWR2YW5jZXNbaV0uc2V0SGVpZ2h0KC1hZHZhbmNlc1tpXS5oZWln
aHQoKSk7Ci0gICAgICAgIG9yaWdpbnNbaV0uc2V0WSgtb3JpZ2luc1tpXS55KCkpOworICAgICAg
ICBzZXRIZWlnaHQoYWR2YW5jZXNbaV0sIC1oZWlnaHQoYWR2YW5jZXNbaV0pKTsKKyAgICAgICAg
c2V0WShvcmlnaW5zW2ldLCAteShvcmlnaW5zW2ldKSk7CiAgICAgfQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkgewpAQCAt
MTIzLDE0ICsxMjMsMTQgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRy
YW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBjb25zdCBhdXRvJiBvcmlnaW5hbEFkdmFuY2VzID0gKml0ZXJhdG9y
OwogICAgICAgICBpZiAoaSAmJiAhb3JpZ2luYWxBZHZhbmNlcy5jaGFyYWN0ZXJJc1NwYWNlKQot
ICAgICAgICAgICAgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLT5zZXRXaWR0aChvcmlnaW5h
bEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOwotICAgICAgICBnbHlwaEJ1ZmZlci5h
ZHZhbmNlcyhpKS0+c2V0V2lkdGgob3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIp
OworICAgICAgICAgICAgc2V0V2lkdGgoKmdseXBoQnVmZmVyLmFkdmFuY2VzKGkgLSAxKSwgb3Jp
Z2luYWxBZHZhbmNlcy5hZHZhbmNlQmVmb3JlQ2hhcmFjdGVyKTsKKyAgICAgICAgc2V0V2lkdGgo
KmdseXBoQnVmZmVyLmFkdmFuY2VzKGkpLCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VBdENoYXJh
Y3Rlcik7CiAgICAgfQogICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jbGVhcigpOwogCiAg
ICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBo
Q291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKLSAgICAgICAgYWZ0ZXJXaWR0aCArPSBh
ZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBhZnRlcldpZHRoICs9IHdpZHRoKGFkdmFuY2Vz
W2ldKTsKIAogICAgIHJldHVybiBhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGg7CiB9CkBAIC0yNDgs
NyArMjQ4LDcgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFsKFRl
eHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAgICAgICAgICAgIGNoYXJhY3Rl
cnNUcmVhdGVkQXNTcGFjZS5jb25zdHJ1Y3RBbmRBcHBlbmQoCiAgICAgICAgICAgICAgICAgY3Vy
cmVudENoYXJhY3RlckluZGV4LAogICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9PSAnICcsCi0g
ICAgICAgICAgICAgICAgZ2x5cGhCdWZmZXIuc2l6ZSgpID8gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGdseXBoQnVmZmVyLnNpemUoKSAtIDEpLndpZHRoKCkgOiAwLAorICAgICAgICAgICAgICAgIGds
eXBoQnVmZmVyLnNpemUoKSA/IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChn
bHlwaEJ1ZmZlci5zaXplKCkgLSAxKSkgOiAwLAogICAgICAgICAgICAgICAgIHdpZHRoKTsKICAg
ICAgICAgfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9yOjpjYWxjdWxh
dGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlwaEJ1ZmYKICAg
ICBpZiAoY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlciAmJiBtX3J1bi5hbGxvd1RhYnMoKSkgewog
ICAgICAgICBhdXRvJiBmb250ID0gZ2x5cGhCdWZmZXIuZm9udEF0KHRyYWlsaW5nR2x5cGhJbmRl
eCk7CiAgICAgICAgIGF1dG8gbmV3V2lkdGggPSBtX2ZvbnQudGFiV2lkdGgoZm9udCwgbV9ydW4u
dGFiU2l6ZSgpLCBwb3NpdGlvbik7Ci0gICAgICAgIGF1dG8gY3VycmVudFdpZHRoID0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KHRyYWlsaW5nR2x5cGhJbmRleCkud2lkdGgoKTsKKyAgICAgICAgYXV0
byBjdXJyZW50V2lkdGggPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQodHJhaWxpbmdHbHlw
aEluZGV4KSk7CiAgICAgICAgIHJpZ2h0QWRkaXRpb25hbFdpZHRoICs9IG5ld1dpZHRoIC0gY3Vy
cmVudFdpZHRoOwogICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIGF1dG8gV2lkdGhJdGVyYXRv
cjo6Y2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgR2x5
cGhCdWZmCiAgICAgICAgIC8vIFRoaXMgaXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSBjaGFyYWN0ZXIgaXMgbm9uLXZpc2libGUuIE5vbi12aXNpYmxlIGNoYXJhY3RlcnMgZG9uJ3Qg
Z2V0IGxldHRlci1zcGFjaW5nLgogICAgICAgICBmbG9hdCBiYXNlV2lkdGggPSAwOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZWFkaW5nR2x5cGhJbmRleDsgaSA8PSB0cmFpbGluZ0dseXBo
SW5kZXg7ICsraSkKLSAgICAgICAgICAgIGJhc2VXaWR0aCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGJhc2VXaWR0aCArPSB3aWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBpZiAoYmFzZVdpZHRoKQogICAgICAgICAgICAgcmln
aHRBZGRpdGlvbmFsV2lkdGggKz0gbV9mb250LmxldHRlclNwYWNpbmcoKTsKIApAQCAtMzg4LDcg
KzM4OCw3IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBp
bmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgVmVjdG9yPGZsb2F0PiBhZHZh
bmNlV2lkdGhzKG1fcnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBnbHlw
aEJ1ZmZlclN0YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAg
ICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLnN0cmluZ09mZnNldEF0KGkpOwotICAg
ICAgICBhZHZhbmNlV2lkdGhzW3N0cmluZ09mZnNldF0gKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpLndpZHRoKCk7CisgICAgICAgIGFkdmFuY2VXaWR0aHNbc3RyaW5nT2Zmc2V0XSArPSB3aWR0
aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBhdXRvJiBnbHlwaEluZGV4UmFu
Z2UgPSBjaGFyYWN0ZXJJbmRleFRvR2x5cGhJbmRleFJhbmdlW3N0cmluZ09mZnNldF07CiAgICAg
ICAgIGlmIChnbHlwaEluZGV4UmFuZ2UpCiAgICAgICAgICAgICBnbHlwaEluZGV4UmFuZ2UtPnRy
YWlsaW5nR2x5cGhJbmRleCA9IGk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBXaWR0aEl0ZXJh
dG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIHVuc2kKICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFiQ2hhcmFjdGVyKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGN1cnJlbnRBZHZhbmNl
ID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBhdXRvIGN1
cnJlbnRBZHZhbmNlID0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAg
ICAgIGF1dG8gbmV3QWR2YW5jZSA9IGN1cnJlbnRBZHZhbmNlICogbV9ydW4uaG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgpOwogICAgICAgICAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kQWR2YW5jZShpLCBu
ZXdBZHZhbmNlIC0gY3VycmVudEFkdmFuY2UpOwogICAgICAgICB9CkBAIC00OTMsNyArNDkzLDcg
QEAgYm9vbCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlT25lQ2hhcmFjdGVyKGZsb2F0JiB3aWR0aCwg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKQogICAgIGFkdmFuY2UobV9jdXJyZW50Q2hhcmFjdGVy
SW5kZXggKyAxLCBnbHlwaEJ1ZmZlcik7CiAgICAgZmxvYXQgdyA9IDA7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gb2xkU2l6ZTsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICB3
ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICB3ICs9IFdlYkNv
cmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgd2lkdGggPSB3OwogICAg
IHJldHVybiBnbHlwaEJ1ZmZlci5zaXplKCkgPiBvbGRTaXplOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDI0OWEwMTg1MmI1OGMyMGE2OWM0MTMzMTAxNDczMzk5
YzMyYzg1NTcuLjVhY2QzMzdkMDM2ODVjZmE5MDcwNzAwZWRlODA1MDFjMjRiNTg0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTU2MywxMCArNTYzLDEwIEBAIHZv
aWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCiAgICAgc2l6ZV90IG51bUdseXBocyA9IG1f
Z2x5cGhzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUdseXBoczsgKytp
KSB7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlID0gbV9hZHZhbmNlc1tpXTsK
LSAgICAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwgY3Vy
cmVudC55KCkgLSBhc2NlbnQsIGFkdmFuY2Uud2lkdGgoKSwgYXNjZW50ICsgZGVzY2VudCk7Cisg
ICAgICAgIEZsb2F0UmVjdCBnbHlwaFJlY3QgPSBGbG9hdFJlY3QoY3VycmVudC54KCksIGN1cnJl
bnQueSgpIC0gYXNjZW50LCB3aWR0aChhZHZhbmNlKSwgYXNjZW50ICsgZGVzY2VudCk7CiAgICAg
ICAgIG1fYm91bmRzLnVuaXRlKGdseXBoUmVjdCk7CiAKLSAgICAgICAgY3VycmVudC5tb3ZlKGFk
dmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5oZWlnaHQoKSk7CisgICAgICAgIGN1cnJlbnQubW92ZSh3
aWR0aChhZHZhbmNlKSwgaGVpZ2h0KGFkdmFuY2UpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODhiOTgxYzg3YzliYTJh
MWI4ODQyZDg2OTMyYTdiNmUzZWE1MmUyLi45NDc4ZGFiNGU0NGM3MDFiOGRjMGIyZGI4OTQ1MGMx
ZDNlM2M0NGE2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDktMDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIEdseXBoQnVmZmVyQWR2YW5jZSBhbmQg
R2x5cGhCdWZmZXJPcmlnaW4gbW9yZSByb2J1c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTE0MworCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFu
IEJ1anRhcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMC0wOS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE1vdmUgUERGIGhlYWRzLXVwIGRpc3BsYXkgdG8gVUkgcHJvY2VzcyBvbiBtYWNP
UwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA1NTkzMGM2OTQ4YWNjZGJjZTk4NTUxMjE2MjU1
MGMwZDc2ZDlhOGE5Li5iY2YwMzI5NTViZTJlYmRmZmU2OTNkOGE4YmJkODJiZjk0MmY5ZDk5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiAgICAg
RVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIGFkdmFuY2VzWzRdLndpZHRo
KCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDYsICZnbHlwaEJ1ZmZlcik7CiAg
ICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHNwYWNlV2lkdGggKyB0
b3RhbFdpZHRoLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAx
KTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCA2VSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIGFkdmFuY2VzWzRdLndpZHRoKCks
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRo
KCksIGFkdmFuY2VzWzNdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDIpLndpZHRoKCksIGFkdmFuY2VzWzJdLndpZHRoKCksIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLndpZHRoKCksIGFkdmFu
Y2VzWzFdLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDQpLndpZHRoKCksIC1pbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg1KS53aWR0aCgpLCBzcGFjZVdpZHRo
ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0
aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCB3aWR0aChhZHZhbmNlc1s0XSksIDAuMDAwMSk7
CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgd2lkdGgo
YWR2YW5jZXNbM10pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgyKSksIHdpZHRoKGFkdmFuY2VzWzJdKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1Rf
TkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCB3aWR0aChhZHZhbmNlc1sxXSks
IDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQp
KSwgLXdpZHRoKGluaXRpYWxBZHZhbmNlKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0
aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNSkpLCBzcGFjZVdpZHRoICsgd2lkdGgoaW5pdGlhbEFk
dmFuY2UpLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwg
SW5pdGlhbEFkdmFuY2VJblJUTCkKQEAgLTEyNCwxNSArMTI0LDE1IEBAIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogICAgIEVYUEVDVF9ORUFS
KGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEp
OwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg1LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9O
RUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOwotICAg
IEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgaW5pdGlh
bEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAx
KTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwg
aW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQo
Z2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAw
LjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDVVKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgYWR2YW5jZXNbNF0ud2lk
dGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSku
d2lkdGgoKSwgYWR2YW5jZXNbM10ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwgYWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwg
YWR2YW5jZXNbMV0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoNCkud2lkdGgoKSwgLWluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLmhlaWdodCgpLCBpbml0
aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIGFkdmFuY2VzWzNd
LndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDIpKSwgYWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCBhZHZhbmNlc1sxXS53aWR0aCgpLCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KSks
IC1pbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdo
dChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4w
MDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZh
bmNlV2l0aExlZnRSdW5JbkxUUikKQEAgLTE3MCwxMiArMTcwLDEyIEBAIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiAgICAg
RVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHNwYWNlV2lkdGggKyBhZHZh
bmNlc1swXS53aWR0aCgpICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKICAgICBj
b250cm9sbGVyLmFkdmFuY2UoMywgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250
cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIDc2LjM0NzY1NiArIGluaXRpYWxB
ZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5p
dGlhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAw
LjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDNVKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgc3BhY2VXaWR0aCArIGlu
aXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDUzLjA2NjQwNiwgMC4wMDAxKTsKLSAgICBFWFBFQ1Rf
TkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwgMjMuMjgxMjUwLCAwLjAwMDEp
OworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIHNwYWNl
V2lkdGggKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIDUzLjA2NjQwNiwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikpLCAyMy4yODEyNTAs
IDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFs
QWR2YW5jZUluTFRSKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiAgICAgRVhQRUNUX05FQVIoY29udHJv
bGxlci5ydW5XaWR0aFNvRmFyKCksIGFkdmFuY2VzWzBdLndpZHRoKCkgKyBpbml0aWFsQWR2YW5j
ZS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgyLCAmZ2x5cGhCdWZm
ZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCA3Ni4zNDc2
NTYgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgo
KSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgp
LmhlaWdodCgpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1Rf
TkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2Uu
d2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5p
dGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwogICAgIEVY
UEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDJVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgNTMuMDY2NDA2LCAwLjAwMDEpOwotICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCAyMy4yODEyNTAsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNTMu
MDY2NDA2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgxKSksIDIzLjI4MTI1MCwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCkBAIC0yNTEsMTQgKzI1
MSwxNCBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJ
blJUTE5vT3JpZ2lucykKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIo
KSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNCwgJmdseXBo
QnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgdG90
YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2
YW5jZSgpLndpZHRoKCksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgaW5pdGlhbEFk
dmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0
aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIu
c2l6ZSgpLCA0VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndp
ZHRoKCksIDQzLjgxMTkzNDkwMDU0MjUsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDEyLjAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpLndpZHRoKCksIDE0LjAzOTc4MzAwMTgwODMsIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLndpZHRoKCks
IC00LjMzOTk2MzgzMzYzNDcyLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgzKS5oZWlnaHQoKSwgMTIuMzY4ODk2OTI1ODU5LCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIDQzLjgxMTkzNDkwMDU0
MjUsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKSwgMTIuMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMikpLCAxNC4wMzk3ODMwMDE4MDgzLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIC00LjMzOTk2MzgzMzYzNDcyLCAwLjAw
MDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpLCAx
Mi4zNjg4OTY5MjU4NTksIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xs
ZXJUZXN0LCBMZWZ0RXhwYW5zaW9uKQpAQCAtMjg1LDEwICsyODUsMTAgQEAgVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiAgICAgRVhQRUNUX05FQVIoY29u
dHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZh
bmNlKDEsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0
aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCAxMDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgMCwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMTAwLCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5j
ZSgpKSwgMCwgMC4wMDAxKTsKICAgICBFWFBFQ1RfRVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCAxVSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCksIDI0LCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSks
IDI0LCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVy
dGljYWxBZHZhbmNlcykKQEAgLTMyMiwxNyArMzIyLDE3IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg0
LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0Zh
cigpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCAxNiwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3
aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBF
Q1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDE2LCAwLjAwMDEp
OwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDRVKTsKLSAgICBFWFBFQ1RfTkVB
UihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkuaGVpZ2h0KCksIDQgLSAxIC04LCAwLjAw
MDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCAw
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS5oZWln
aHQoKSwgOCAtIDIgLSA1MTIsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDIpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDIpLmhlaWdodCgpLCAxMjggLSAzMiAtIDI1NiwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgMCwgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykuaGVpZ2h0KCksIDI1
NiAtIDY0LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgwKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgwKSksIDQgLSAxIC04LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRo
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIo
aGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSksIDggLSAyIC0gNTEyLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDAsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDEy
OCAtIDMyIC0gMjU2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgzKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgzKSksIDI1NiAtIDY0LCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxXaWR0aFdpdGhKdXN0aWZpY2F0aW9uKQpAQCAt
MzYxLDcgKzM2MSwxMiBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxX
aWR0aFdpdGhKdXN0aWZpY2F0aW9uKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lk
dGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg1LCAmZ2x5cGhC
dWZmZXIpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDVVKTsKLSAgICBFWFBF
Q1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSArIGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgxKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpLndpZHRoKCkgKyBn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0
KS53aWR0aCgpLCBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCksIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKQorICAgICAgICAr
IHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKSkKKyAgICAgICAgKyB3aWR0aChnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMikpCisgICAgICAgICsgd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDMpKQorICAgICAgICArIHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KSkKKyAgICAgICAg
LCBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCksIDAuMDAwMSk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408114</attachid>
            <date>2020-09-05 21:34:10 -0700</date>
            <delta_ts>2020-09-06 15:09:28 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215143-20200905213409.patch</filename>
            <type>text/plain</type>
            <size>50552</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc5MmE4ZTQwNjZmMjBl
MjAyOTYwOTY1NzAzYTU3MzNlOTNlNTAwMS4uZTMzOTdiMjgyNDU0ZTdmNjk3M2FiZmM4Njk1ZDc4
NTMwNzRkMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgR2x5cGhCdWZmZXIgY29udGFp
bnMgdmVjdG9ycyBvZiBhZHZhbmNlcyBhbmQgb3JpZ2lucywgd2hpY2ggYXJlIGNvbmNlcHR1YWxs
eQorICAgICAgICBGbG9hdFNpemVzIGFuZCBGbG9hdFBvaW50cy4gSG93ZXZlciwgd2UgbmVlZCB0
byBwYXNzIHRoZXNlIGFycmF5cyBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkKKyAgICAgICAgb3Ig
Q1RGb250VHJhbnNmb3JtR2x5cGhzV2l0aExhbmd1YWdlKCksIHdoaWNoIGV4cGVjdHMgdGhlc2Ug
dmVjdG9ycyB0byB1c2UgcGxhdGZvcm0gdHlwZXMuCisgICAgICAgIFJhdGhlciB0aGFuIGNvbnZl
cnRpbmcgaW4vb3V0IG9mIHBsYXRmb3JtIHR5cGVzIGFyb3VuZCB0aGUgY2FsbCBzaXRlLCB3ZSBj
YW4gc2ltcGx5IHVzZQorICAgICAgICB0aGUgcGxhdGZvcm0gdHlwZXMgdGhyb3VnaG91dC4gSW5k
ZWVkLCB0aGF0J3Mgd2hhdCB3ZSdyZSBkb2luZyB0b2RheS4KKworICAgICAgICBIb3dldmVyLCB0
aGUgbWVjaGFuaXNtIHdlIHVzZSB0b2RheSB0byBtYWtlIHRoaXMgcGxhdGZvcm0taW5kZXBlbmRl
bnQgaXMgdG8gbWFrZSBhIHN0cnVjdAorICAgICAgICB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSBw
bGF0Zm9ybSB0eXBlcy4gVGhlbiwgd2Ugc3RhdGljX2Nhc3QgdGhlIGFycmF5IG9mIHRoZSBzdHJ1
Y3QgdG8KKyAgICAgICAgYW4gYXJyYXkgb2YgdGhlIGJhc2UgdHlwZS4gVGhpcyBpcyBicml0dGxl
LCBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBz
dHJ1Y3QgZG9lc24ndCBoYXZlIGFueSBtZW1iZXJzIGFkZGVkIHRvIGl0LCB3aGljaCB3b3VsZCBj
aGFuZ2UgdGhlIHN0cmlkZSBvZiB0aGUgYXJyYXkKKyAgICAgICAgYW5kIGZlZWQgZ2FyYmFnZSBp
bnRvIHRoZSBzaGFwaW5nIGZ1bmN0aW9uLgorCisgICAgICAgIEluc3RlYWQsIGEgYmV0dGVyIGRl
c2lnbiBpcyB0byB0eXBlZGVmIHRoZSBuYXRpdmUgdHlwZSwgYW5kIGhhdmUgYWxsIGludGVyYWN0
aW9ucyB3aXRoIHRoZQorICAgICAgICB0eXBlcyBnbyB0aHJvdWdoIHN0YW5kYWxvbmUgZnVuY3Rp
b25zIHdoaWNoIGRlYWwgd2l0aCB0aGUgbmF0aXZlIHR5cGUuIFRoYXQgd2F5LCB3ZSBjYW4ndAor
ICAgICAgICBhY2NpZGVudGFsbHkgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBhcnJheSBlbGVtZW50
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2x5cGhCdWZmZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6
bWFrZUhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmV4cGFuZExhc3RBZHZh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpmbGF0dGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6R2x5cGhCdWZmZXJBZHZhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6b3BlcmF0b3IgRmxvYXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6c2V0
V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNl
Ojp3aWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFk
dmFuY2U6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1
ZmZlckFkdmFuY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlckFkdmFuY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlck9yaWdpbjo6R2x5cGhCdWZmZXJPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46Om9wZXJhdG9yIEZsb2F0UG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRT
aXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0
UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhC
dWZmZXJPcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyT3JpZ2luWSk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhCdWZmZXJPcmlnaW5ZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZUlu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
Ojpjb21wdXRlQm91bmRzKToKKwogMjAyMC0wOS0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgZm9yIGludGVyZmFjZSBtaXhp
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDIwYzg2YWYzZjk0ZTIxYzI2ZGZhOTc3YjUzYTBiZTA5
OTYwOTMzZDguLmUyNjJmMjlhYjhlYzY0M2I5NDRlNTRlMWRhNjkzYzZlZThmYzNkZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTEyNyw2ICsxMTI3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVz
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2OWUwODIyOTlkZmZlNmRhODVjOTg2OTZjNzg1NmYwNTI2OGJkODQxLi41YWM2MjM1MmU4NWIw
YmFkZDZlNzRlNmJjNDcxY2FkNDk1OGRlM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTMsNiArNjEzLDcgQEAKIAkJMUMy
NEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyog
Rm9udEZhY2VTZXQuaCAqLzsgfTsKIAkJMUMyNEVFQTkxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9u
dEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi87IH07CiAJCTFD
NDNERTZCMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNDNERTY4MjJB
QjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzREMEREMzI0RDlGMTBE
MDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhC
dWZmZXJNZW1iZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUM2NjI2MTExQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY2MjYwRjFDNkU3Q0E2MDBB
QjUyN0MgLyogRm9udEZhY2UuaCAqLzsgfTsKIAkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8q
IFRleHRVbmRlcmxpbmVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zm
c2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4
MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjYzMyw2ICs2NjM0LDcgQEAKIAkJ
MUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExv
Y2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM0M0RFNkEyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29s
bGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2Fs
Q3VycmVudFRyYWl0Q29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHbHlwaEJ1ZmZlck1lbWJlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM1MEM0OTUyMkM4NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTlCMDE4MjIzODY4Nzkw
MDg1MzgwNSAvKiBXSExTTFNjb3BlZFNldEFkZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2Nv
cGVkU2V0QWRkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZF
N0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1
OTE0LDYgKzI1OTE2LDcgQEAKIAkJCQkwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0
cnlVdGlsaXRpZXMuaCAqLywKIAkJCQkwODZCQkQwRTEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGgu
aCAqLywKIAkJCQlCMkMzREE1QjBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCAqLywK
KwkJCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggKi8s
CiAJCQkJQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovLAog
CQkJCTA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLywKIAkJCQlCQzUz
QzYwNzBEQTU2QzU3MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwICovLApAQCAtMzEzMTYsNiArMzEz
MTksNyBAQAogCQkJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyog
R2x5cGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBH
bHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM0RDBERDMyNEQ5RjEwRDAwM0Q3NDk4
IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZC
QUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3
M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZjFjMjA1YTA0MzU5
ZGFkYmJlZWUxMTJhNWQwMjhkOTEzYzgxNjZlLi5mNmI1ZjBlMzhkYjgzZTllYzA1MGI1ZTFkYWUz
NTEwOTA5OWU1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTU4NCw3ICs1ODQsNyBAQCB2
b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBo
QnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICAvLyBXaGVuIGxlZnRtb3N0R2x5cGggaXMg
MCwgaXQgcmVwcmVzZW50cyB0aGUgZmlyc3QgZ2x5cGggdG8gZHJhdywgdGFraW5nIGludG8KICAg
ICAgICAgLy8gYWNjb3VudCB0aGUgdGV4dCBkaXJlY3Rpb24uCiAgICAgICAgIGlmICghaW5kZXhP
ZkxlZnRtb3N0R2x5cGhJbkN1cnJlbnRSdW4gJiYgZ2x5cGhCdWZmZXIpCi0gICAgICAgICAgICBn
bHlwaEJ1ZmZlci0+c2V0SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlKGNvbXBsZXhU
ZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgY29tcGxleFRleHRSdW4uaW5pdGlhbEFk
dmFuY2UoKS5oZWlnaHQoKSkpOworICAgICAgICAgICAgZ2x5cGhCdWZmZXItPnNldEluaXRpYWxB
ZHZhbmNlKG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFu
Y2UoKSkpOwogCiAgICAgICAgIHdoaWxlIChtX2dseXBoSW5DdXJyZW50UnVuIDwgZ2x5cGhDb3Vu
dCkgewogICAgICAgICAgICAgdW5zaWduZWQgZ2x5cGhTdGFydE9mZnNldCA9IGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQoZ2x5cGhJbmRleEludG9DdXJyZW50UnVuKTsKQEAgLTYwNCwyMyArNjA0LDIz
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwg
R2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAKICAgICAgICAgICAgIGlmIChnbHlwaEJ1ZmZl
ciAmJiAhbV9jaGFyYWN0ZXJJbkN1cnJlbnRHbHlwaCkgewogICAgICAgICAgICAgICAgIGF1dG8g
Y3VycmVudEdseXBoT3JpZ2luID0gZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4
dENvbnRyb2xsZXIpOwotICAgICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFk
dmFuY2UoYWRqdXN0ZWRCYXNlQWR2YW5jZSk7CisgICAgICAgICAgICAgICAgR2x5cGhCdWZmZXJB
ZHZhbmNlIHBhaW50QWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWRqdXN0ZWRCYXNl
QWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFnbHlwaEluZGV4SW50b0N1cnJlbnRSdW4p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGxheW91dCBhZHZhbmNlIG9mIGV2
ZXJ5IHJ1biBpbmNsdWRlcyB0aGUgImluaXRpYWwgbGF5b3V0IGFkdmFuY2UuIiBIb3dldmVyLCBo
ZXJlLCB3ZSBuZWVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhaW50IGFkdmFuY2VzLCBzbyBz
dWJ0cmFjdCBpdCBvdXQgYmVmb3JlIHRyYW5zZm9ybWluZyB0aGUgbGF5b3V0IGFkdmFuY2UgaW50
byBhIHBhaW50IGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRX
aWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5j
ZSgpLndpZHRoKCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpIC0gKGNvbXBs
ZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4u
eSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2YW5jZSwgd2lkdGgo
cGFpbnRBZHZhbmNlKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkg
LSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEhlaWdo
dChwYWludEFkdmFuY2UsIGhlaWdodChwYWludEFkdmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVuLmlu
aXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWlu
dEFkdmFuY2Uud2lkdGgoKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRD
b250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSk7Ci0gICAgICAgICAg
ICAgICAgcGFpbnRBZHZhbmNlLnNldEhlaWdodChwYWludEFkdmFuY2UuaGVpZ2h0KCkgKyBnbHlw
aE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1
cnJlbnRHbHlwaE9yaWdpbi55KCkpOworICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2
YW5jZSwgd2lkdGgocGFpbnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29t
cGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSk7Cisg
ICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgaGVpZ2h0KHBhaW50QWR2YW5j
ZSkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEp
LnkoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi55KCkpOwogICAgICAgICAgICAgICAgIGlmIChnbHlw
aEluZGV4SW50b0N1cnJlbnRSdW4gPT0gZ2x5cGhDb3VudCAtIDEgJiYgY3VycmVudFJ1bkluZGV4
ICsgMSA8IHJ1bkNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE91ciBwYWludCBhZHZh
bmNlIHBvaW50cyB0byB0aGUgZW5kIG9mIHRoZSBydW4uIEhvd2V2ZXIsIHRoZSBuZXh0IHJ1biBt
YXkgaGF2ZSBhbgogICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIGFkdmFuY2UsIGFuZCBv
dXIgcGFpbnQgYWR2YW5jZSBuZWVkcyB0byBwb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIG5l
eHQKICAgICAgICAgICAgICAgICAgICAgLy8gZ2x5cGguIFNvLCB3ZSBuZWVkIHRvIGFkZCBpbiB0
aGUgbmV4dCBydW4ncyBpbml0aWFsIGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50
QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIGdseXBoT3JpZ2luKGdseXBo
SW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1
bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdo
dCgpIC0gZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAx
KS55KCkgKyBtX2NvbXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFk
dmFuY2UoKS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2
YW5jZSwgd2lkdGgocGFpbnRBZHZhbmNlKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29t
cGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1
bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNldEhlaWdodChwYWludEFkdmFuY2UsIGhlaWdodChwYWludEFkdmFuY2UpIC0gZ2x5cGhP
cmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgKyBtX2Nv
bXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS5oZWln
aHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5z
ZXRIZWlnaHQoLXBhaW50QWR2YW5jZS5oZWlnaHQoKSk7IC8vIEluY3JlYXNpbmcgeSBwb2ludHMg
ZG93bgorICAgICAgICAgICAgICAgIHNldEhlaWdodChwYWludEFkdmFuY2UsIC1oZWlnaHQocGFp
bnRBZHZhbmNlKSk7IC8vIEluY3JlYXNpbmcgeSBwb2ludHMgZG93bgogICAgICAgICAgICAgICAg
IGdseXBoQnVmZmVyLT5hZGQobV9hZGp1c3RlZEdseXBoc1tnbHlwaEluZGV4SW50b0NvbXBsZXhU
ZXh0Q29udHJvbGxlcl0sIGNvbXBsZXhUZXh0UnVuLmZvbnQoKSwgcGFpbnRBZHZhbmNlLCBjb21w
bGV4VGV4dFJ1bi5pbmRleEF0KG1fZ2x5cGhJbkN1cnJlbnRSdW4pKTsKICAgICAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CmluZGV4IDU5YzgyYWY3YmE0NmI1NWMzOTgzN2I2MzFiODEzMDVmZTI0MDc0OWEuLjFhMTY1YWU2
ZjFjMjkwNTFjZTQ0ZjE5NDhhZmVkMTZlYmU4NTRjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBm
bG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCwgVGV4
dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogICAgIC8vIFNhbWUgZ2x5cGggd2lkdGhzIGJ1dCBkaWZm
ZXJlbnQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBjYW4gcHJvZHVjZSBkaWZmZXJlbnQgcnVu
IHdpZHRoLgogICAgIGZsb2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVk
ID0gLXJ1bldpZHRoOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVk
ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICBydW5XaWR0aERp
ZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoaSkpOwogICAgIHJ1bldpZHRoICs9IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhU
cmFuc2Zvcm1BcHBsaWVkOwogCiAgICAgaWYgKGNhY2hlRW50cnkpCkBAIC0xNDAxLDcgKzE0MDEs
NyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVucwogICAgIGlmICghZ2x5cGhCdWZmZXIuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgaXMgc3VwcG9zZWQgdG8gcG9p
bnQgZGlyZWN0bHkgdG8gdGhlIGZpcnN0IGdseXBoJ3MgcGFpbnQgcG9zaXRpb24uCiAgICAgICAg
IC8vIFNlZSB0aGUgYXNjaWktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmgu
Ci0gICAgICAgIGdseXBoQnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2
YW5jZShnbHlwaEJ1ZmZlci5vcmlnaW5BdCgwKS54KCksIGdseXBoQnVmZmVyLm9yaWdpbkF0KDAp
LnkoKSkpOworICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5jZShtYWtlR2x5
cGhCdWZmZXJBZHZhbmNlKHgoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkpLCB5KGdseXBoQnVmZmVy
Lm9yaWdpbkF0KDApKSkpOwogICAgIH0KIAogICAgIC8vIFRoZSBnbHlwaCBidWZmZXIgaXMgY3Vy
cmVudGx5IGluIGxvZ2ljYWwgb3JkZXIsCkBAIC0xNDI5LDE2ICsxNDI5LDE2IEBAIEdseXBoQnVm
ZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVu
c2lnbmVkIGZyb20sIHVuCiAgICAgICAgIC8vIHRoZSBzdW0gb2YgdGhlIGxheW91dCBhZHZhbmNl
cy4KICAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFk
dmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZm
ZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0b0Zsb2F0U2l6
ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFsQWR2
YW5jZSAtPSBXZWJDb3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9hdFNpemUoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGkpKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IFdlYkNvcmU6OnNpemUo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3
ZSBzdWJ0cmFjdCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAgICBnbHlwaEJ1ZmZl
ci5yZXZlcnNlKDAsIGdseXBoQnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGdseXBoQnVmZmVyLnNl
dEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlKTsKICAgICB9IGVsc2UgewotICAgICAgICBG
bG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpOworICAgICAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSBXZWJD
b3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gdG9GbG9hdFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gV2ViQ29yZTo6c2l6
ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGRuJ3Qgd2UgYWRkIHRoZSBvdGhlciBpbml0aWFsIGFkdmFuY2U/CiAgICAgICAgIGdseXBoQnVm
ZmVyLnNldEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlKTsKICAgICB9CkBAIC0xNDU5LDgg
KzE0NTksOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIEFTU0VSVChnbHlwaEJ1ZmZl
ci5pc0ZsYXR0ZW5lZCgpKTsKICAgICBjb25zdCBGb250KiBmb250RGF0YSA9ICZnbHlwaEJ1ZmZl
ci5mb250QXQoMCk7CiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQ7Ci0gICAgZmxv
YXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0
aCgpOwotICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMCkuaGVpZ2h0KCk7CisgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIFdl
YkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSk7CisgICAgZmxvYXQgbmV4dFkg
PSBzdGFydFBvaW50LnkoKSArIGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpOwogICAg
IHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKICAgICB1bnNpZ25lZCBuZXh0R2x5cGggPSAxOwogICAg
IHdoaWxlIChuZXh0R2x5cGggPCBnbHlwaEJ1ZmZlci5zaXplKCkpIHsKQEAgLTE0NzUsOCArMTQ3
NSw4IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgICAgICAgICBzdGFydFBvaW50LnNl
dFgobmV4dFgpOwogICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRZKG5leHRZKTsKICAgICAgICAg
fQotICAgICAgICBuZXh0WCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS53aWR0
aCgpOwotICAgICAgICBuZXh0WSArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS5o
ZWlnaHQoKTsKKyAgICAgICAgbmV4dFggKz0gV2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KG5leHRHbHlwaCkpOworICAgICAgICBuZXh0WSArPSBoZWlnaHQoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KG5leHRHbHlwaCkpOwogICAgICAgICBuZXh0R2x5cGgrKzsKICAgICB9CiAKQEAg
LTE1MjEsNyArMTUyMSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAgICAgR2x5cGhCdWZm
ZXIgbWFya0J1ZmZlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGdseXBoQnVm
ZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IG1pZGRsZU9mTmV4dEdseXBoID0gb2Zm
c2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgaSArIDEpOwotICAgICAgICBm
bG9hdCBhZHZhbmNlID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCkgLSBtaWRkbGVP
Zkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOworICAgICAgICBmbG9hdCBhZHZhbmNlID0g
V2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKSAtIG1pZGRsZU9mTGFzdEds
eXBoICsgbWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgICAgIG1hcmtCdWZmZXIuYWRkKGdseXBoQnVm
ZmVyLmdseXBoQXQoaSkgPyBtYXJrR2x5cGggOiBzcGFjZUdseXBoLCAqbWFya0ZvbnREYXRhLCBh
ZHZhbmNlKTsKICAgICAgICAgbWlkZGxlT2ZMYXN0R2x5cGggPSBtaWRkbGVPZk5leHRHbHlwaDsK
ICAgICB9CkBAIC0xNzY2LDcgKzE3NjYsNyBAQCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVudHMoKQogewogICAgIGF1dG8gYmVnaW5uaW5nID0gbV90
cmFuc2xhdGlvbi5tYXBQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBhdXRvIGFkdmFuY2Ug
PSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKLSAgICBhdXRvIGVuZCA9IG1fdHJh
bnNsYXRpb24ubWFwU2l6ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdo
dCgpKSk7CisgICAgYXV0byBlbmQgPSBtX3RyYW5zbGF0aW9uLm1hcFNpemUoc2l6ZShhZHZhbmNl
KSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJlZ2lubmluZy54KCksIGJlZ2lubmluZy54
KCkgKyBlbmQud2lkdGgoKSk7CiB9CiAKQEAgLTE3NzgsNyArMTc3OCw3IEBAIGF1dG8gR2x5cGhU
b1BhdGhUcmFuc2xhdG9yOjp1bmRlcmxpbmVUeXBlKCkgLT4gR2x5cGhVbmRlcmxpbmVUeXBlCiB2
b2lkIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6YWR2YW5jZSgpCiB7CiAgICAgR2x5cGhCdWZmZXJB
ZHZhbmNlIGFkdmFuY2UgPSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKLSAgICBt
X3RyYW5zbGF0aW9uLnRyYW5zbGF0ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNl
LmhlaWdodCgpKSk7CisgICAgbV90cmFuc2xhdGlvbi50cmFuc2xhdGUoc2l6ZShhZHZhbmNlKSk7
CiAgICAgKyttX2luZGV4OwogICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5zaXplKCkp
CiAgICAgICAgIG1fZm9udERhdGEgPSAmbV9nbHlwaEJ1ZmZlci5mb250QXQobV9pbmRleCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBk
NzAzMTljMTU3MTBjOWU1OWUyMDg1YWE4ODJmZThmNGYzNjIwOWQ5Li5jZWJmMTQ1ZmE3ZWNiYjZj
YzQ5YzBiYmIwYjQ1ZGU1NmJhMzhlMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTMyLDE0MSArMzIsMTUgQEAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR2x5cGguaCIK
KyNpbmNsdWRlICJHbHlwaEJ1ZmZlck1lbWJlcnMuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0j
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnQ7CiAKLSNpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiB3Y2hh
cl90IEdseXBoQnVmZmVyR2x5cGg7Ci0jZWxzZQotdHlwZWRlZiBHbHlwaCBHbHlwaEJ1ZmZlckds
eXBoOwotI2VuZGlmCi0KLS8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2YgRmxvYXRTaXplIHNv
IHRoYXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCi0vLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5
IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQotI2lmIFVT
RShDRykKLQotc3RydWN0IEdseXBoQnVmZmVyQWR2YW5jZSA6IENHU2l6ZSB7Ci1wdWJsaWM6Ci0g
ICAgR2x5cGhCdWZmZXJBZHZhbmNlKCkKLSAgICAgICAgOiBDR1NpemUoQ0dTaXplWmVybykKLSAg
ICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShGbG9hdFNpemUgc2l6ZSkKLSAgICAg
ICAgOiBDR1NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IENHU2l6ZShDR1NpemVNYWtlKHdp
ZHRoLCBoZWlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gZGVjb2RlKERlY29kZXImKTsK
LQotICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRoaXMtPkNHU2l6ZTo6d2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjpo
ZWlnaHQpIH07IH0KLQotICAgIHZvaWQgc2V0V2lkdGgoZmxvYXQgd2lkdGgpIHsgdGhpcy0+Q0dT
aXplOjp3aWR0aCA9IHdpZHRoOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7
IHRoaXMtPkNHU2l6ZTo6aGVpZ2h0ID0gaGVpZ2h0OyB9Ci0gICAgZmxvYXQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiB0aGlzLT5DR1NpemU6OndpZHRoOyB9Ci0gICAgZmxvYXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+Q0dTaXplOjpoZWlnaHQ7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyQWR2YW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCB3aWR0aCgpOwotICAgIGVuY29kZXIgPDwgaGVp
Z2h0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxHbHlwaEJ1ZmZl
ckFkdmFuY2U+IEdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwotICAgIGRlY29kZXIgPj4gd2lkdGg7Ci0gICAg
aWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PGZsb2F0PiBoZWlnaHQ7Ci0gICAgZGVjb2RlciA+PiBoZWlnaHQ7Ci0gICAgaWYgKCFoZWlnaHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJB
ZHZhbmNlKCp3aWR0aCwgKmhlaWdodCk7Ci19Ci0KLXN0cnVjdCBHbHlwaEJ1ZmZlck9yaWdpbiA6
IENHUG9pbnQgewotcHVibGljOgotICAgIEdseXBoQnVmZmVyT3JpZ2luKCkKLSAgICAgICAgOiBD
R1BvaW50KENHUG9pbnRaZXJvKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4o
RmxvYXRQb2ludCBwb2ludCkKLSAgICAgICAgOiBDR1BvaW50KHBvaW50KQotICAgIHsKLSAgICB9
Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiBDR1Bv
aW50KENHUG9pbnRNYWtlKHgsIHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyT3JpZ2luPiBkZWNvZGUoRGVj
b2RlciYpOwotCi0gICAgb3BlcmF0b3IgRmxvYXRQb2ludCgpIHsgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHRoaXMtPkNHUG9pbnQ6OngpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dQ
b2ludDo6eSkgfTsgfQotCi0gICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgdGhpcy0+Q0dQb2ludDo6
eCA9IHg7IH0KLSAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyB0aGlzLT5DR1BvaW50Ojp5ID0geTsg
fQotICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1BvaW50Ojp4OyB9Ci0gICAg
ZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9pbnQ6Onk7IH0KLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyT3JpZ2luOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHgoKTsKLSAgICBlbmNvZGVyIDw8
IHkoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdseXBoQnVmZmVy
T3JpZ2luPiBHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgT3B0aW9uYWw8ZmxvYXQ+IHg7Ci0gICAgZGVjb2RlciA+PiB4OwotICAgIGlmICgheCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAg
IGRlY29kZXIgPj4geTsKLSAgICBpZiAoIXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJPcmlnaW4oKngsICp5KTsKLX0KLQotdXNpbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSBDRkluZGV4OwotCi0jZWxzZQotCi11c2luZyBHbHlwaEJ1
ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Ci11c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0
UG9pbnQ7Ci11c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOwotCi0jZW5k
aWYgLy8gI2lmIFVTRShDRykKLQotaW5saW5lIEZsb2F0U2l6ZSB0b0Zsb2F0U2l6ZShjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UmIGEpCi17Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCks
IGEuaGVpZ2h0KCkpOwotfQotCiBjbGFzcyBHbHlwaEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7IH0KQEAgLTIwNCwx
OSArNzgsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1
ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2UpIHsgbV9pbml0aWFsQWR2YW5jZSA9IGluaXRpYWxB
ZHZhbmNlOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBpbml0aWFsQWR2YW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7IH0KLSAgICB2b2lkIGV4cGFuZEluaXRp
YWxBZHZhbmNlKGZsb2F0IHdpZHRoKSB7IG1faW5pdGlhbEFkdmFuY2Uuc2V0V2lkdGgobV9pbml0
aWFsQWR2YW5jZS53aWR0aCgpICsgd2lkdGgpOyB9CisgICAgdm9pZCBleHBhbmRJbml0aWFsQWR2
YW5jZShmbG9hdCB3aWR0aCkgeyBzZXRXaWR0aChtX2luaXRpYWxBZHZhbmNlLCBXZWJDb3JlOjp3
aWR0aChtX2luaXRpYWxBZHZhbmNlKSArIHdpZHRoKTsgfQogICAgIHZvaWQgZXhwYW5kSW5pdGlh
bEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlIGFkZGl0aW9uYWxBZHZhbmNlKQogICAgIHsKLSAg
ICAgICAgbV9pbml0aWFsQWR2YW5jZS5zZXRXaWR0aChtX2luaXRpYWxBZHZhbmNlLndpZHRoKCkg
KyBhZGRpdGlvbmFsQWR2YW5jZS53aWR0aCgpKTsKLSAgICAgICAgbV9pbml0aWFsQWR2YW5jZS5z
ZXRIZWlnaHQobV9pbml0aWFsQWR2YW5jZS5oZWlnaHQoKSArIGFkZGl0aW9uYWxBZHZhbmNlLmhl
aWdodCgpKTsKKyAgICAgICAgc2V0V2lkdGgobV9pbml0aWFsQWR2YW5jZSwgd2lkdGgobV9pbml0
aWFsQWR2YW5jZSkgKyB3aWR0aChhZGRpdGlvbmFsQWR2YW5jZSkpOworICAgICAgICBzZXRIZWln
aHQobV9pbml0aWFsQWR2YW5jZSwgaGVpZ2h0KG1faW5pdGlhbEFkdmFuY2UpICsgaGVpZ2h0KGFk
ZGl0aW9uYWxBZHZhbmNlKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgbm9PZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0Pjo6bWF4KCk7CiAgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNv
bnN0IEZvbnQmIGZvbnQsIGZsb2F0IHdpZHRoLCBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBvZmZz
ZXRJblN0cmluZyA9IG5vT2Zmc2V0KQogICAgIHsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNl
IGFkdmFuY2U7Ci0gICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOwotICAgICAgICBhZHZh
bmNlLnNldEhlaWdodCgwKTsKKyAgICAgICAgc2V0V2lkdGgoYWR2YW5jZSwgd2lkdGgpOworICAg
ICAgICBzZXRIZWlnaHQoYWR2YW5jZSwgMCk7CiAgICAgICAgIGFkZChnbHlwaCwgZm9udCwgYWR2
YW5jZSwgb2Zmc2V0SW5TdHJpbmcpOwogICAgIH0KIApAQCAtMjI1LDcgKzk5LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2ZvbnRzLmFwcGVuZCgmZm9udCk7CiAgICAgICAgIG1fZ2x5cGhzLmFwcGVu
ZChnbHlwaCk7CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwotICAgICAgICBt
X29yaWdpbnMuYXBwZW5kKEdseXBoQnVmZmVyT3JpZ2luKCkpOworICAgICAgICBtX29yaWdpbnMu
YXBwZW5kKHsgfSk7CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLmFwcGVuZChvZmZzZXRJblN0
cmluZyk7CiAgICAgfQogCkBAIC0yNDMsOSArMTE3LDkgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobG9jYXRpb24gPD0gc2l6ZSgpKTsKIAogICAgICAgICBtX2ZvbnRzLmluc2VydFZlY3Rvcihs
b2NhdGlvbiwgVmVjdG9yPGNvbnN0IEZvbnQqPihsZW5ndGgsIGZvbnQpKTsKLSAgICAgICAgbV9n
bHlwaHMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaD4obGVu
Z3RoLCAweEZGRkYpKTsKLSAgICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24s
IFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2U+KGxlbmd0aCwgR2x5cGhCdWZmZXJBZHZhbmNlKDAs
IDApKSk7Ci0gICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxH
bHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCBHbHlwaEJ1ZmZlck9yaWdpbigpKSk7CisgICAgICAg
IG1fZ2x5cGhzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+
KGxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0czxHbHlwaEJ1ZmZlckdseXBoPjo6bWF4KCkpKTsK
KyAgICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1
ZmZlckFkdmFuY2U+KGxlbmd0aCwgeyB9KSk7CisgICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0
b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCB7IH0pKTsKICAg
ICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQ+KGxlbmd0aCwgMCkpOwogICAgIH0KIApAQCAtMjU5LDIyICsx
MzMsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAg
ICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UmIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlcy5sYXN0KCk7
Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyB3aWR0
aCk7CisgICAgICAgIHNldFdpZHRoKGxhc3RBZHZhbmNlLCBXZWJDb3JlOjp3aWR0aChsYXN0QWR2
YW5jZSkgKyB3aWR0aCk7CiAgICAgfQogCiAgICAgdm9pZCBleHBhbmRBZHZhbmNlKHVuc2lnbmVk
IGluZGV4LCBmbG9hdCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUo
KSk7CiAgICAgICAgIGF1dG8mIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlc1tpbmRleF07Ci0gICAg
ICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyB3aWR0aCk7Cisg
ICAgICAgIHNldFdpZHRoKGxhc3RBZHZhbmNlLCBXZWJDb3JlOjp3aWR0aChsYXN0QWR2YW5jZSkg
KyB3aWR0aCk7CiAgICAgfQogCiAgICAgdm9pZCBleHBhbmRMYXN0QWR2YW5jZShHbHlwaEJ1ZmZl
ckFkdmFuY2UgZXhwYW5zaW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwog
ICAgICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UmIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlcy5sYXN0
KCk7Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyBl
eHBhbnNpb24ud2lkdGgoKSk7Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldEhlaWdodChsYXN0QWR2
YW5jZS5oZWlnaHQoKSArIGV4cGFuc2lvbi5oZWlnaHQoKSk7CisgICAgICAgIHNldFdpZHRoKGxh
c3RBZHZhbmNlLCB3aWR0aChsYXN0QWR2YW5jZSkgKyB3aWR0aChleHBhbnNpb24pKTsKKyAgICAg
ICAgc2V0SGVpZ2h0KGxhc3RBZHZhbmNlLCBoZWlnaHQobGFzdEFkdmFuY2UpICsgaGVpZ2h0KGV4
cGFuc2lvbikpOwogICAgIH0KIAogICAgIHZvaWQgc2hyaW5rKHVuc2lnbmVkIHRydW5jYXRpb25Q
b2ludCkKQEAgLTI5NSw5ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbGF0dGVuKCkKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgbV9hZHZhbmNlc1tpXSA9IEdseXBoQnVmZmVyQWR2YW5jZSgKLSAgICAgICAgICAg
ICAgICAtbV9vcmlnaW5zW2ldLngoKSArIG1fYWR2YW5jZXNbaV0ud2lkdGgoKSArIChpICsgMSA8
IHNpemUoKSA/IG1fb3JpZ2luc1tpICsgMV0ueCgpIDogMCksCi0gICAgICAgICAgICAgICAgLW1f
b3JpZ2luc1tpXS55KCkgKyBtX2FkdmFuY2VzW2ldLmhlaWdodCgpICsgKGkgKyAxIDwgc2l6ZSgp
ID8gbV9vcmlnaW5zW2kgKyAxXS55KCkgOiAwKQorICAgICAgICAgICAgbV9hZHZhbmNlc1tpXSA9
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoCisgICAgICAgICAgICAgICAgLXgobV9vcmlnaW5zW2ld
KSArIHdpZHRoKG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geChtX29yaWdpbnNb
aSArIDFdKSA6IDApLAorICAgICAgICAgICAgICAgIC15KG1fb3JpZ2luc1tpXSkgKyBoZWlnaHQo
bV9hZHZhbmNlc1tpXSkgKyAoaSArIDEgPCBzaXplKCkgPyB5KG1fb3JpZ2luc1tpICsgMV0pIDog
MCkKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBtX29yaWdpbnNbaV0gPSBHbHlwaEJ1ZmZl
ck9yaWdpbigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjM2I1NDgyMzFlYzRh
NTY0NmUxNTJjMGY0MGEyNjZhYTM5NTA3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaApAQCAtMCwwICsxLDIy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdseXBoLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0ZvbnQuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhlIENHIHBvcnRzIHVzZSB0aGUgQ0cgdHlwZXMg
ZGlyZWN0bHksIHNvIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzIGNhbiBiZSBmZWQgZGlyZWN0bHkg
aW50byBDVEZvbnRTaGFwZUdseXBocygpLgorI2lmIFVTRShDRykKK3VzaW5nIEdseXBoQnVmZmVy
R2x5cGggPSBDR0dseXBoOwordXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwordXNp
bmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBDR1BvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdP
ZmZzZXQgPSBDRkluZGV4OworI2VsaWYgVVNFKFdJTkdESSkKK3VzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSB3Y2hhcl90OwordXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwordXNp
bmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBGbG9hdFBvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJp
bmdPZmZzZXQgPSB1bnNpZ25lZDsKKyNlbHNlCit1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gR2x5
cGg7Cit1c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1
ZmZlck9yaWdpbiA9IEZsb2F0UG9pbnQ7Cit1c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9
IHVuc2lnbmVkOworI2VuZGlmCisKK2lubGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBo
QnVmZmVyQWR2YW5jZShjb25zdCBGbG9hdFNpemUmID0gRmxvYXRTaXplKCkpOworaW5saW5lIEds
eXBoQnVmZmVyQWR2YW5jZSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0ID0gMCwgZmxvYXQg
PSAwKTsKK2lubGluZSBGbG9hdFNpemUgc2l6ZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsK
K2lubGluZSB2b2lkIHNldFdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYsIGZsb2F0KTsKK2lubGlu
ZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7CitpbmxpbmUgZmxv
YXQgd2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJik7CitpbmxpbmUgZmxvYXQgaGVpZ2h0
KGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYpOworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1h
a2VHbHlwaEJ1ZmZlck9yaWdpbihjb25zdCBGbG9hdFBvaW50JiA9IEZsb2F0UG9pbnQoKSk7Citp
bmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGZsb2F0ID0gMCwg
ZmxvYXQgPSAwKTsKK2lubGluZSBGbG9hdFBvaW50IHBvaW50KGNvbnN0IEdseXBoQnVmZmVyT3Jp
Z2luJik7CitpbmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiwgZmxvYXQpOworaW5s
aW5lIHZvaWQgc2V0WShHbHlwaEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSBmbG9hdCB4
KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJik7CitpbmxpbmUgZmxvYXQgeShjb25zdCBHbHlwaEJ1
ZmZlck9yaWdpbiYpOworCisjaWYgVVNFKENHKQorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNl
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBDR1NpemVNYWtlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK2lubGlu
ZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQoreworICAgIHJldHVybiBDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpOwor
fQorCitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZh
bmNlKQoreworICAgIHJldHVybiBGbG9hdFNpemUoYWR2YW5jZS53aWR0aCwgYWR2YW5jZS5oZWln
aHQpOworfQorCitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFu
Y2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uud2lkdGggPSB3aWR0aDsKK30KKworaW5s
aW5lIHZvaWQgc2V0SGVpZ2h0KEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSwgZmxvYXQgaGVp
Z2h0KQoreworICAgIGFkdmFuY2UuaGVpZ2h0ID0gaGVpZ2h0OworfQorCitpbmxpbmUgZmxvYXQg
d2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBh
ZHZhbmNlLndpZHRoOworfQorCitpbmxpbmUgZmxvYXQgaGVpZ2h0KGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5jZS5oZWlnaHQ7Cit9CisKK2lu
bGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIENHUG9pbnRNYWtlKHBvaW50LngoKSwgcG9pbnQu
eSgpKTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdp
bihmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZSh4LCB5KTsKK30K
KworaW5saW5lIEZsb2F0UG9pbnQgcG9pbnQoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdp
bikKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludChvcmlnaW4ueCwgb3JpZ2luLnkpOworfQorCitp
bmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4sIGZsb2F0IHgpCit7Cisg
ICAgb3JpZ2luLnggPSB4OworfQorCitpbmxpbmUgdm9pZCBzZXRZKEdseXBoQnVmZmVyT3JpZ2lu
JiBvcmlnaW4sIGZsb2F0IHkpCit7CisgICAgb3JpZ2luLnkgPSB5OworfQorCitpbmxpbmUgZmxv
YXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW4ueDsKK30KKworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdp
bikKK3sKKyAgICByZXR1cm4gb3JpZ2luLnk7Cit9CisKKyNlbHNlCisKK2lubGluZSBHbHlwaEJ1
ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShjb25zdCBGbG9hdFNpemUmIHNpemUp
Cit7CisgICAgcmV0dXJuIHNpemU7Cit9CisKK2lubGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFr
ZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIHJl
dHVybiBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7Cit9CisKK2lubGluZSBGbG9hdFNpemUgc2l6
ZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFu
Y2U7Cit9CisKK2lubGluZSB2b2lkIHNldFdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5j
ZSwgZmxvYXQgd2lkdGgpCit7CisgICAgYWR2YW5jZS5zZXRXaWR0aCh3aWR0aCk7Cit9CisKK2lu
bGluZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0IGhl
aWdodCkKK3sKKyAgICBhZHZhbmNlLnNldEhlaWdodChoZWlnaHQpOworfQorCitpbmxpbmUgZmxv
YXQgd2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVy
biBhZHZhbmNlLndpZHRoKCk7Cit9CisKK2lubGluZSBmbG9hdCBoZWlnaHQoY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBhZHZhbmNlLmhlaWdodCgpOwor
fQorCitpbmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworaW5saW5lIEds
eXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCB4LCBmbG9hdCB5KQor
eworICAgIHJldHVybiBGbG9hdFBvaW50KHgsIHkpOworfQorCitpbmxpbmUgRmxvYXRQb2ludCBw
b2ludChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW47Cit9CisKK2lubGluZSB2b2lkIHNldFgoR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxv
YXQgeCkKK3sKKyAgICBvcmlnaW4uc2V0WCh4KTsKK30KKworaW5saW5lIHZvaWQgc2V0WShHbHlw
aEJ1ZmZlck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi5zZXRZKHkpOwor
fQorCitpbmxpbmUgZmxvYXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQorewor
ICAgIHJldHVybiBvcmlnaW4ueCgpOworfQorCitpbmxpbmUgZmxvYXQgeShjb25zdCBHbHlwaEJ1
ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmlnaW4ueSgpOworfQorCisjZW5k
aWYgLy8gI2lmIFVTRShDRykKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCAxMTgzNzJlYmE4MWZmZTM0ZThmNjNmYzIx
NzZlYjFjZDIxMjgzMDU2Li5hODg2Njc1YzRiNTM0NTgxYjgwYTYzNjgwY2MwZWI0OTU5YWM5ZWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjph
cHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAgICAg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKDApOwog
ICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5
cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBiZWZvcmVXaWR0aCAr
PSBhZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBiZWZvcmVXaWR0aCArPSB3aWR0aChhZHZh
bmNlc1tpXSk7CiAKICAgICBBU1NFUlQobGFzdEdseXBoQ291bnQgPD0gZ2x5cGhCdWZmZXJTaXpl
KTsKIApAQCAtMTEwLDggKzExMCw4IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAKICAgICBH
bHlwaEJ1ZmZlck9yaWdpbiogb3JpZ2lucyA9IGdseXBoQnVmZmVyLm9yaWdpbnMoMCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsr
aSkgewotICAgICAgICBhZHZhbmNlc1tpXS5zZXRIZWlnaHQoLWFkdmFuY2VzW2ldLmhlaWdodCgp
KTsKLSAgICAgICAgb3JpZ2luc1tpXS5zZXRZKC1vcmlnaW5zW2ldLnkoKSk7CisgICAgICAgIHNl
dEhlaWdodChhZHZhbmNlc1tpXSwgLWhlaWdodChhZHZhbmNlc1tpXSkpOworICAgICAgICBzZXRZ
KG9yaWdpbnNbaV0sIC15KG9yaWdpbnNbaV0pKTsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsYXN0R2x5cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKSB7CkBAIC0xMjMs
MTQgKzEyMywxNCBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNm
b3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGNvbnN0IGF1dG8mIG9yaWdpbmFsQWR2YW5jZXMgPSAqaXRlcmF0b3I7CiAg
ICAgICAgIGlmIChpICYmICFvcmlnaW5hbEFkdmFuY2VzLmNoYXJhY3RlcklzU3BhY2UpCi0gICAg
ICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpIC0gMSktPnNldFdpZHRoKG9yaWdpbmFsQWR2
YW5jZXMuYWR2YW5jZUJlZm9yZUNoYXJhY3Rlcik7Ci0gICAgICAgIGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGkpLT5zZXRXaWR0aChvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VBdENoYXJhY3Rlcik7Cisg
ICAgICAgICAgICBzZXRXaWR0aCgqZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLCBvcmlnaW5h
bEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOworICAgICAgICBzZXRXaWR0aCgqZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoaSksIG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVy
KTsKICAgICB9CiAgICAgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlLmNsZWFyKCk7CiAKICAgICBm
bG9hdCBhZnRlcldpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhDb3Vu
dDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBhZnRlcldpZHRoICs9IGFkdmFu
Y2VzW2ldLndpZHRoKCk7CisgICAgICAgIGFmdGVyV2lkdGggKz0gd2lkdGgoYWR2YW5jZXNbaV0p
OwogCiAgICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aDsKIH0KQEAgLTI0OCw3ICsy
NDgsNyBAQCBpbmxpbmUgdm9pZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0
ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoQnVmZgogICAgICAgICAgICAgY2hhcmFjdGVyc1Ry
ZWF0ZWRBc1NwYWNlLmNvbnN0cnVjdEFuZEFwcGVuZCgKICAgICAgICAgICAgICAgICBjdXJyZW50
Q2hhcmFjdGVySW5kZXgsCiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyID09ICcgJywKLSAgICAg
ICAgICAgICAgICBnbHlwaEJ1ZmZlci5zaXplKCkgPyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoZ2x5
cGhCdWZmZXIuc2l6ZSgpIC0gMSkud2lkdGgoKSA6IDAsCisgICAgICAgICAgICAgICAgZ2x5cGhC
dWZmZXIuc2l6ZSgpID8gV2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGdseXBo
QnVmZmVyLnNpemUoKSAtIDEpKSA6IDAsCiAgICAgICAgICAgICAgICAgd2lkdGgpOwogICAgICAg
ICB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBhdXRvIFdpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFk
ZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEdseXBoQnVmZgogICAgIGlm
IChjaGFyYWN0ZXIgPT0gdGFiQ2hhcmFjdGVyICYmIG1fcnVuLmFsbG93VGFicygpKSB7CiAgICAg
ICAgIGF1dG8mIGZvbnQgPSBnbHlwaEJ1ZmZlci5mb250QXQodHJhaWxpbmdHbHlwaEluZGV4KTsK
ICAgICAgICAgYXV0byBuZXdXaWR0aCA9IG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJT
aXplKCksIHBvc2l0aW9uKTsKLSAgICAgICAgYXV0byBjdXJyZW50V2lkdGggPSBnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQodHJhaWxpbmdHbHlwaEluZGV4KS53aWR0aCgpOworICAgICAgICBhdXRvIGN1
cnJlbnRXaWR0aCA9IHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCh0cmFpbGluZ0dseXBoSW5k
ZXgpKTsKICAgICAgICAgcmlnaHRBZGRpdGlvbmFsV2lkdGggKz0gbmV3V2lkdGggLSBjdXJyZW50
V2lkdGg7CiAgICAgfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9yOjpj
YWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlwaEJ1
ZmYKICAgICAgICAgLy8gVGhpcyBpcyBhIGhldXJpc3RpYyB0byBkZXRlcm1pbmUgaWYgdGhlIGNo
YXJhY3RlciBpcyBub24tdmlzaWJsZS4gTm9uLXZpc2libGUgY2hhcmFjdGVycyBkb24ndCBnZXQg
bGV0dGVyLXNwYWNpbmcuCiAgICAgICAgIGZsb2F0IGJhc2VXaWR0aCA9IDA7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGxlYWRpbmdHbHlwaEluZGV4OyBpIDw9IHRyYWlsaW5nR2x5cGhJbmRl
eDsgKytpKQotICAgICAgICAgICAgYmFzZVdpZHRoICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KS53aWR0aCgpOworICAgICAgICAgICAgYmFzZVdpZHRoICs9IHdpZHRoKGdseXBoQnVmZmVyLmFk
dmFuY2VBdChpKSk7CiAgICAgICAgIGlmIChiYXNlV2lkdGgpCiAgICAgICAgICAgICByaWdodEFk
ZGl0aW9uYWxXaWR0aCArPSBtX2ZvbnQubGV0dGVyU3BhY2luZygpOwogCkBAIC0zODgsNyArMzg4
LDcgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2kKICAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VX
aWR0aHMobV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IGdseXBoQnVm
ZmVyU3RhcnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaSk7Ci0gICAgICAg
IGFkdmFuY2VXaWR0aHNbc3RyaW5nT2Zmc2V0XSArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSku
d2lkdGgoKTsKKyAgICAgICAgYWR2YW5jZVdpZHRoc1tzdHJpbmdPZmZzZXRdICs9IHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgICAgIGF1dG8mIGdseXBoSW5kZXhSYW5nZSA9
IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4UmFuZ2Vbc3RyaW5nT2Zmc2V0XTsKICAgICAgICAg
aWYgKGdseXBoSW5kZXhSYW5nZSkKICAgICAgICAgICAgIGdseXBoSW5kZXhSYW5nZS0+dHJhaWxp
bmdHbHlwaEluZGV4ID0gaTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFdpZHRoSXRlcmF0b3I6
OmFwcGx5RXh0cmFTcGFjaW5nQWZ0ZXJTaGFwaW5nKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
dW5zaQogICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gY3VycmVudEFkdmFuY2UgPSBn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8gY3VycmVu
dEFkdmFuY2UgPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICAgICAg
YXV0byBuZXdBZHZhbmNlID0gY3VycmVudEFkdmFuY2UgKiBtX3J1bi5ob3Jpem9udGFsR2x5cGhT
dHJldGNoKCk7CiAgICAgICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRBZHZhbmNlKGksIG5ld0Fk
dmFuY2UgLSBjdXJyZW50QWR2YW5jZSk7CiAgICAgICAgIH0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBi
b29sIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFyYWN0ZXIoZmxvYXQmIHdpZHRoLCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIpCiAgICAgYWR2YW5jZShtX2N1cnJlbnRDaGFyYWN0ZXJJbmRl
eCArIDEsIGdseXBoQnVmZmVyKTsKICAgICBmbG9hdCB3ID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBvbGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIHcgKz0g
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgIHcgKz0gV2ViQ29yZTo6
d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICB3aWR0aCA9IHc7CiAgICAgcmV0
dXJuIGdseXBoQnVmZmVyLnNpemUoKSA+IG9sZFNpemU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggMjQ5YTAxODUyYjU4YzIwYTY5YzQxMzMxMDE0NzMzOTljMzJj
ODU1Ny4uNWFjZDMzN2QwMzY4NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTYzLDEwICs1NjMsMTAgQEAgdm9pZCBE
cmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKICAgICBzaXplX3QgbnVtR2x5cGhzID0gbV9nbHlw
aHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsK
ICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2FkdmFuY2VzW2ldOwotICAg
ICAgICBGbG9hdFJlY3QgZ2x5cGhSZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgpLCBjdXJyZW50
LnkoKSAtIGFzY2VudCwgYWR2YW5jZS53aWR0aCgpLCBhc2NlbnQgKyBkZXNjZW50KTsKKyAgICAg
ICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwgY3VycmVudC55
KCkgLSBhc2NlbnQsIHdpZHRoKGFkdmFuY2UpLCBhc2NlbnQgKyBkZXNjZW50KTsKICAgICAgICAg
bV9ib3VuZHMudW5pdGUoZ2x5cGhSZWN0KTsKIAotICAgICAgICBjdXJyZW50Lm1vdmUoYWR2YW5j
ZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKTsKKyAgICAgICAgY3VycmVudC5tb3ZlKHdpZHRo
KGFkdmFuY2UpLCBoZWlnaHQoYWR2YW5jZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4OGI5ODFjODdjOWJhMmExYjg4
NDJkODY5MzJhN2I2ZTNlYTUyZTIuLjk0NzhkYWI0ZTQ0YzcwMWI4ZGMwYjJkYjg5NDUwYzFkM2Uz
YzQ0YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOS0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2x5cGhCdWZmZXJBZHZhbmNlIGFuZCBHbHlw
aEJ1ZmZlck9yaWdpbiBtb3JlIHJvYnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVq
dGFzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIw
LTA5LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTW92ZSBQREYgaGVhZHMtdXAgZGlzcGxheSB0byBVSSBwcm9jZXNzIG9uIG1hY09TCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU1OTMwYzY5NDhhY2NkYmNlOTg1NTEyMTYyNTUwYzBk
NzZkOWE4YTkuLmJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC04MCwxNSArODAsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwg
MC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNiwgJmdseXBoQnVmZmVyKTsKICAgICBF
WFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIHRvdGFs
V2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOwog
ICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDZVKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwg
YWR2YW5jZXNbM10ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMikud2lkdGgoKSwgYWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgYWR2YW5jZXNb
MV0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoNCkud2lkdGgoKSwgLWluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDUpLndpZHRoKCksIHNwYWNlV2lkdGggKyBp
bml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIHdpZHRoKGFkdmFuY2VzWzRdKSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCB3aWR0aChhZHZh
bmNlc1szXSksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDIpKSwgd2lkdGgoYWR2YW5jZXNbMl0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIHdpZHRoKGFkdmFuY2VzWzFdKSwgMC4w
MDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCAt
d2lkdGgoaW5pdGlhbEFkdmFuY2UpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCg1KSksIHNwYWNlV2lkdGggKyB3aWR0aChpbml0aWFsQWR2YW5j
ZSksIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0
aWFsQWR2YW5jZUluUlRMKQpAQCAtMTI0LDE1ICsxMjQsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiAgICAgRVhQRUNUX05FQVIoY29u
dHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CiAg
ICAgY29udHJvbGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2
YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0
aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlw
aEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAw
MSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBhZHZhbmNlc1s0XS53aWR0aCgp
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0
aCgpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCBhZHZh
bmNlc1sxXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCg0KS53aWR0aCgpLCAtaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkuaGVpZ2h0KCksIGluaXRpYWxB
ZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgwKSksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQ
RUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgYWR2YW5jZXNbM10ud2lk
dGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMikpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIGFkdmFuY2VzWzFdLndpZHRoKCksIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKSwgLWlu
aXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGds
eXBoQnVmZmVyLmFkdmFuY2VBdCg0KSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEp
OwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VX
aXRoTGVmdFJ1bkluTFRSKQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIGFkdmFuY2Vz
WzBdLndpZHRoKCkgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNvbnRy
b2xsZXIuYWR2YW5jZSgzLCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFu
Y2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAw
MSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgM1UpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBzcGFjZVdpZHRoICsgaW5pdGlh
bEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMSkud2lkdGgoKSwgNTMuMDY2NDA2LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAyMy4yODEyNTAsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgc3BhY2VXaWR0
aCArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgNTMuMDY2NDA2LCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDIzLjI4MTI1MCwgMC4w
MDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZh
bmNlSW5MVFIpCkBAIC0yMDgsMTEgKzIwOCwxMSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVy
LnJ1bldpZHRoU29GYXIoKSwgYWR2YW5jZXNbMF0ud2lkdGgoKSArIGluaXRpYWxBZHZhbmNlLndp
ZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDIsICZnbHlwaEJ1ZmZlcik7
CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDc2LjM0NzY1NiAr
IGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAw
LjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVp
Z2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS53aWR0
aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNU
X0VRKGdseXBoQnVmZmVyLnNpemUoKSwgMlUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgwKS53aWR0aCgpLCA1My4wNjY0MDYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDIzLjI4MTI1MCwgMC4wMDAxKTsK
KyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCA1My4wNjY0
MDYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKSwgMjMuMjgxMjUwLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKQEAgLTI1MSwxNCArMjUxLDE0
IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRM
Tm9PcmlnaW5zKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0
b3RhbFdpZHRoLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg0LCAmZ2x5cGhCdWZm
ZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdp
ZHRoLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNl
KCkud2lkdGgoKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1Rf
TkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCBpbml0aWFsQWR2YW5j
ZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxB
ZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXpl
KCksIDRVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgo
KSwgNDMuODExOTM0OTAwNTQyNSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgMTIuMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwgMTQuMDM5NzgzMDAxODA4MywgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgLTQu
MzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDMpLmhlaWdodCgpLCAxMi4zNjg4OTY5MjU4NTksIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNDMuODExOTM0OTAwNTQyNSwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkp
LCAxMi4wLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgyKSksIDE0LjAzOTc4MzAwMTgwODMsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7
CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIDEyLjM2
ODg5NjkyNTg1OSwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIExlZnRFeHBhbnNpb24pCkBAIC0yODUsMTAgKzI4NSwxMCBAQCBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKICAgICBFWFBFQ1RfTkVBUihjb250cm9s
bGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2Uo
MSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29G
YXIoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDEwMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCAwLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAxMDAsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkp
LCAwLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDFVKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgMjQsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgMjQs
IDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNh
bEFkdmFuY2VzKQpAQCAtMzIyLDE3ICszMjIsMTcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5y
dW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDQsICZn
bHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCks
IDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2Uo
KS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCksIDE2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRo
KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9O
RUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMTYsIDAuMDAwMSk7CiAg
ICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS5oZWlnaHQoKSwgNCAtIDEgLTgsIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDAsIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLmhlaWdodCgp
LCA4IC0gMiAtIDUxMiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMikud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMikuaGVpZ2h0KCksIDEyOCAtIDMyIC0gMjU2LCAwLjAwMDEpOwotICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCAwLCAwLjAwMDEpOwot
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS5oZWlnaHQoKSwgMjU2IC0g
NjQsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDApKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDApKSwgNCAtIDEgLTgsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWln
aHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgOCAtIDIgLSA1MTIsIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMCwgMC4wMDAxKTsK
KyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMTI4IC0g
MzIgLSAyNTYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDMpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDMpKSwgMjU2IC0gNjQsIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCkBAIC0zNjEs
NyArMzYxLDEyIEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRo
V2l0aEp1c3RpZmljYXRpb24pCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNv
RmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZl
cik7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDEpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndp
ZHRoKCksIGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpCisgICAgICAgICsgd2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKQorICAgICAgICArIHdpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgyKSkKKyAgICAgICAgKyB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykp
CisgICAgICAgICsgd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKQorICAgICAgICAsIGNv
bnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408137</attachid>
            <date>2020-09-06 15:09:20 -0700</date>
            <delta_ts>2020-09-06 16:47:54 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215143-20200906150919.patch</filename>
            <type>text/plain</type>
            <size>50552</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc5MmE4ZTQwNjZmMjBl
MjAyOTYwOTY1NzAzYTU3MzNlOTNlNTAwMS4uZTMzOTdiMjgyNDU0ZTdmNjk3M2FiZmM4Njk1ZDc4
NTMwNzRkMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgR2x5cGhCdWZmZXIgY29udGFp
bnMgdmVjdG9ycyBvZiBhZHZhbmNlcyBhbmQgb3JpZ2lucywgd2hpY2ggYXJlIGNvbmNlcHR1YWxs
eQorICAgICAgICBGbG9hdFNpemVzIGFuZCBGbG9hdFBvaW50cy4gSG93ZXZlciwgd2UgbmVlZCB0
byBwYXNzIHRoZXNlIGFycmF5cyBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkKKyAgICAgICAgb3Ig
Q1RGb250VHJhbnNmb3JtR2x5cGhzV2l0aExhbmd1YWdlKCksIHdoaWNoIGV4cGVjdHMgdGhlc2Ug
dmVjdG9ycyB0byB1c2UgcGxhdGZvcm0gdHlwZXMuCisgICAgICAgIFJhdGhlciB0aGFuIGNvbnZl
cnRpbmcgaW4vb3V0IG9mIHBsYXRmb3JtIHR5cGVzIGFyb3VuZCB0aGUgY2FsbCBzaXRlLCB3ZSBj
YW4gc2ltcGx5IHVzZQorICAgICAgICB0aGUgcGxhdGZvcm0gdHlwZXMgdGhyb3VnaG91dC4gSW5k
ZWVkLCB0aGF0J3Mgd2hhdCB3ZSdyZSBkb2luZyB0b2RheS4KKworICAgICAgICBIb3dldmVyLCB0
aGUgbWVjaGFuaXNtIHdlIHVzZSB0b2RheSB0byBtYWtlIHRoaXMgcGxhdGZvcm0taW5kZXBlbmRl
bnQgaXMgdG8gbWFrZSBhIHN0cnVjdAorICAgICAgICB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSBw
bGF0Zm9ybSB0eXBlcy4gVGhlbiwgd2Ugc3RhdGljX2Nhc3QgdGhlIGFycmF5IG9mIHRoZSBzdHJ1
Y3QgdG8KKyAgICAgICAgYW4gYXJyYXkgb2YgdGhlIGJhc2UgdHlwZS4gVGhpcyBpcyBicml0dGxl
LCBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBz
dHJ1Y3QgZG9lc24ndCBoYXZlIGFueSBtZW1iZXJzIGFkZGVkIHRvIGl0LCB3aGljaCB3b3VsZCBj
aGFuZ2UgdGhlIHN0cmlkZSBvZiB0aGUgYXJyYXkKKyAgICAgICAgYW5kIGZlZWQgZ2FyYmFnZSBp
bnRvIHRoZSBzaGFwaW5nIGZ1bmN0aW9uLgorCisgICAgICAgIEluc3RlYWQsIGEgYmV0dGVyIGRl
c2lnbiBpcyB0byB0eXBlZGVmIHRoZSBuYXRpdmUgdHlwZSwgYW5kIGhhdmUgYWxsIGludGVyYWN0
aW9ucyB3aXRoIHRoZQorICAgICAgICB0eXBlcyBnbyB0aHJvdWdoIHN0YW5kYWxvbmUgZnVuY3Rp
b25zIHdoaWNoIGRlYWwgd2l0aCB0aGUgbmF0aXZlIHR5cGUuIFRoYXQgd2F5LCB3ZSBjYW4ndAor
ICAgICAgICBhY2NpZGVudGFsbHkgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBhcnJheSBlbGVtZW50
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2x5cGhCdWZmZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6
bWFrZUhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmV4cGFuZExhc3RBZHZh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpmbGF0dGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6R2x5cGhCdWZmZXJBZHZhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6b3BlcmF0b3IgRmxvYXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6c2V0
V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNl
Ojp3aWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFk
dmFuY2U6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1
ZmZlckFkdmFuY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlckFkdmFuY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlck9yaWdpbjo6R2x5cGhCdWZmZXJPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46Om9wZXJhdG9yIEZsb2F0UG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRT
aXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0
UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhC
dWZmZXJPcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyT3JpZ2luWSk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhCdWZmZXJPcmlnaW5ZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZUlu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
Ojpjb21wdXRlQm91bmRzKToKKwogMjAyMC0wOS0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgZm9yIGludGVyZmFjZSBtaXhp
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDIwYzg2YWYzZjk0ZTIxYzI2ZGZhOTc3YjUzYTBiZTA5
OTYwOTMzZDguLmUyNjJmMjlhYjhlYzY0M2I5NDRlNTRlMWRhNjkzYzZlZThmYzNkZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTEyNyw2ICsxMTI3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVz
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2OWUwODIyOTlkZmZlNmRhODVjOTg2OTZjNzg1NmYwNTI2OGJkODQxLi41YWM2MjM1MmU4NWIw
YmFkZDZlNzRlNmJjNDcxY2FkNDk1OGRlM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTMsNiArNjEzLDcgQEAKIAkJMUMy
NEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyog
Rm9udEZhY2VTZXQuaCAqLzsgfTsKIAkJMUMyNEVFQTkxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9u
dEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjRFRUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi87IH07CiAJCTFD
NDNERTZCMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNDNERTY4MjJB
QjRCOEEwMDE1MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQzREMEREMzI0RDlGMTBE
MDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhC
dWZmZXJNZW1iZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUM2NjI2MTExQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY2MjYwRjFDNkU3Q0E2MDBB
QjUyN0MgLyogRm9udEZhY2UuaCAqLzsgfTsKIAkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8q
IFRleHRVbmRlcmxpbmVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zm
c2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4
MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjYzMyw2ICs2NjM0LDcgQEAKIAkJ
MUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExv
Y2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM0M0RFNkEyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29s
bGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2Fs
Q3VycmVudFRyYWl0Q29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM0RDBERDEyNEQ5RjBEQjAwM0Q3NDk4IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHbHlwaEJ1ZmZlck1lbWJlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM1MEM0OTUyMkM4NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rp
b25NYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bk1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTlCMDE4MjIzODY4Nzkw
MDg1MzgwNSAvKiBXSExTTFNjb3BlZFNldEFkZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU2Nv
cGVkU2V0QWRkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NjI2MEUxQzZF
N0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1
OTE0LDYgKzI1OTE2LDcgQEAKIAkJCQkwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0
cnlVdGlsaXRpZXMuaCAqLywKIAkJCQkwODZCQkQwRTEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGgu
aCAqLywKIAkJCQlCMkMzREE1QjBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCAqLywK
KwkJCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggKi8s
CiAJCQkJQzVENEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovLAog
CQkJCTA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLywKIAkJCQlCQzUz
QzYwNzBEQTU2QzU3MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwICovLApAQCAtMzEzMTYsNiArMzEz
MTksNyBAQAogCQkJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyog
R2x5cGguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBH
bHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM0RDBERDMyNEQ5RjEwRDAwM0Q3NDk4
IC8qIEdseXBoQnVmZmVyTWVtYmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZC
QUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3
M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA4ZjFjMjA1YTA0MzU5
ZGFkYmJlZWUxMTJhNWQwMjhkOTEzYzgxNjZlLi5mNmI1ZjBlMzhkYjgzZTllYzA1MGI1ZTFkYWUz
NTEwOTA5OWU1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTU4NCw3ICs1ODQsNyBAQCB2
b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBo
QnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICAvLyBXaGVuIGxlZnRtb3N0R2x5cGggaXMg
MCwgaXQgcmVwcmVzZW50cyB0aGUgZmlyc3QgZ2x5cGggdG8gZHJhdywgdGFraW5nIGludG8KICAg
ICAgICAgLy8gYWNjb3VudCB0aGUgdGV4dCBkaXJlY3Rpb24uCiAgICAgICAgIGlmICghaW5kZXhP
ZkxlZnRtb3N0R2x5cGhJbkN1cnJlbnRSdW4gJiYgZ2x5cGhCdWZmZXIpCi0gICAgICAgICAgICBn
bHlwaEJ1ZmZlci0+c2V0SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlKGNvbXBsZXhU
ZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgY29tcGxleFRleHRSdW4uaW5pdGlhbEFk
dmFuY2UoKS5oZWlnaHQoKSkpOworICAgICAgICAgICAgZ2x5cGhCdWZmZXItPnNldEluaXRpYWxB
ZHZhbmNlKG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFu
Y2UoKSkpOwogCiAgICAgICAgIHdoaWxlIChtX2dseXBoSW5DdXJyZW50UnVuIDwgZ2x5cGhDb3Vu
dCkgewogICAgICAgICAgICAgdW5zaWduZWQgZ2x5cGhTdGFydE9mZnNldCA9IGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQoZ2x5cGhJbmRleEludG9DdXJyZW50UnVuKTsKQEAgLTYwNCwyMyArNjA0LDIz
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwg
R2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAKICAgICAgICAgICAgIGlmIChnbHlwaEJ1ZmZl
ciAmJiAhbV9jaGFyYWN0ZXJJbkN1cnJlbnRHbHlwaCkgewogICAgICAgICAgICAgICAgIGF1dG8g
Y3VycmVudEdseXBoT3JpZ2luID0gZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4
dENvbnRyb2xsZXIpOwotICAgICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFk
dmFuY2UoYWRqdXN0ZWRCYXNlQWR2YW5jZSk7CisgICAgICAgICAgICAgICAgR2x5cGhCdWZmZXJB
ZHZhbmNlIHBhaW50QWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoYWRqdXN0ZWRCYXNl
QWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFnbHlwaEluZGV4SW50b0N1cnJlbnRSdW4p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGxheW91dCBhZHZhbmNlIG9mIGV2
ZXJ5IHJ1biBpbmNsdWRlcyB0aGUgImluaXRpYWwgbGF5b3V0IGFkdmFuY2UuIiBIb3dldmVyLCBo
ZXJlLCB3ZSBuZWVkCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhaW50IGFkdmFuY2VzLCBzbyBz
dWJ0cmFjdCBpdCBvdXQgYmVmb3JlIHRyYW5zZm9ybWluZyB0aGUgbGF5b3V0IGFkdmFuY2UgaW50
byBhIHBhaW50IGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRX
aWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5j
ZSgpLndpZHRoKCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdodCgpIC0gKGNvbXBs
ZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4u
eSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2YW5jZSwgd2lkdGgo
cGFpbnRBZHZhbmNlKSAtIChjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCkg
LSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEhlaWdo
dChwYWludEFkdmFuY2UsIGhlaWdodChwYWludEFkdmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVuLmlu
aXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueSgpKSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWlu
dEFkdmFuY2Uud2lkdGgoKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRD
b250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSk7Ci0gICAgICAgICAg
ICAgICAgcGFpbnRBZHZhbmNlLnNldEhlaWdodChwYWludEFkdmFuY2UuaGVpZ2h0KCkgKyBnbHlw
aE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnkoKSAtIGN1
cnJlbnRHbHlwaE9yaWdpbi55KCkpOworICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2
YW5jZSwgd2lkdGgocGFpbnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29t
cGxleFRleHRDb250cm9sbGVyICsgMSkueCgpIC0gY3VycmVudEdseXBoT3JpZ2luLngoKSk7Cisg
ICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgaGVpZ2h0KHBhaW50QWR2YW5j
ZSkgKyBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEp
LnkoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi55KCkpOwogICAgICAgICAgICAgICAgIGlmIChnbHlw
aEluZGV4SW50b0N1cnJlbnRSdW4gPT0gZ2x5cGhDb3VudCAtIDEgJiYgY3VycmVudFJ1bkluZGV4
ICsgMSA8IHJ1bkNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE91ciBwYWludCBhZHZh
bmNlIHBvaW50cyB0byB0aGUgZW5kIG9mIHRoZSBydW4uIEhvd2V2ZXIsIHRoZSBuZXh0IHJ1biBt
YXkgaGF2ZSBhbgogICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIGFkdmFuY2UsIGFuZCBv
dXIgcGFpbnQgYWR2YW5jZSBuZWVkcyB0byBwb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIG5l
eHQKICAgICAgICAgICAgICAgICAgICAgLy8gZ2x5cGguIFNvLCB3ZSBuZWVkIHRvIGFkZCBpbiB0
aGUgbmV4dCBydW4ncyBpbml0aWFsIGFkdmFuY2UuCi0gICAgICAgICAgICAgICAgICAgIHBhaW50
QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFuY2Uud2lkdGgoKSAtIGdseXBoT3JpZ2luKGdseXBo
SW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1
bnNbY3VycmVudFJ1bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhlaWdo
dCgpIC0gZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAx
KS55KCkgKyBtX2NvbXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFk
dmFuY2UoKS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHBhaW50QWR2
YW5jZSwgd2lkdGgocGFpbnRBZHZhbmNlKSAtIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29t
cGxleFRleHRDb250cm9sbGVyICsgMSkueCgpICsgbV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1
bkluZGV4ICsgMV0tPmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNldEhlaWdodChwYWludEFkdmFuY2UsIGhlaWdodChwYWludEFkdmFuY2UpIC0gZ2x5cGhP
cmlnaW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS55KCkgKyBtX2Nv
bXBsZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS5oZWln
aHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5z
ZXRIZWlnaHQoLXBhaW50QWR2YW5jZS5oZWlnaHQoKSk7IC8vIEluY3JlYXNpbmcgeSBwb2ludHMg
ZG93bgorICAgICAgICAgICAgICAgIHNldEhlaWdodChwYWludEFkdmFuY2UsIC1oZWlnaHQocGFp
bnRBZHZhbmNlKSk7IC8vIEluY3JlYXNpbmcgeSBwb2ludHMgZG93bgogICAgICAgICAgICAgICAg
IGdseXBoQnVmZmVyLT5hZGQobV9hZGp1c3RlZEdseXBoc1tnbHlwaEluZGV4SW50b0NvbXBsZXhU
ZXh0Q29udHJvbGxlcl0sIGNvbXBsZXhUZXh0UnVuLmZvbnQoKSwgcGFpbnRBZHZhbmNlLCBjb21w
bGV4VGV4dFJ1bi5pbmRleEF0KG1fZ2x5cGhJbkN1cnJlbnRSdW4pKTsKICAgICAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CmluZGV4IDU5YzgyYWY3YmE0NmI1NWMzOTgzN2I2MzFiODEzMDVmZTI0MDc0OWEuLjFhMTY1YWU2
ZjFjMjkwNTFjZTQ0ZjE5NDhhZmVkMTZlYmU4NTRjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBm
bG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCwgVGV4
dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogICAgIC8vIFNhbWUgZ2x5cGggd2lkdGhzIGJ1dCBkaWZm
ZXJlbnQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBjYW4gcHJvZHVjZSBkaWZmZXJlbnQgcnVu
IHdpZHRoLgogICAgIGZsb2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVk
ID0gLXJ1bldpZHRoOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBsaWVk
ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICBydW5XaWR0aERp
ZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoaSkpOwogICAgIHJ1bldpZHRoICs9IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhU
cmFuc2Zvcm1BcHBsaWVkOwogCiAgICAgaWYgKGNhY2hlRW50cnkpCkBAIC0xNDAxLDcgKzE0MDEs
NyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVucwogICAgIGlmICghZ2x5cGhCdWZmZXIuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgaXMgc3VwcG9zZWQgdG8gcG9p
bnQgZGlyZWN0bHkgdG8gdGhlIGZpcnN0IGdseXBoJ3MgcGFpbnQgcG9zaXRpb24uCiAgICAgICAg
IC8vIFNlZSB0aGUgYXNjaWktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVyLmgu
Ci0gICAgICAgIGdseXBoQnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2
YW5jZShnbHlwaEJ1ZmZlci5vcmlnaW5BdCgwKS54KCksIGdseXBoQnVmZmVyLm9yaWdpbkF0KDAp
LnkoKSkpOworICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5jZShtYWtlR2x5
cGhCdWZmZXJBZHZhbmNlKHgoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkpLCB5KGdseXBoQnVmZmVy
Lm9yaWdpbkF0KDApKSkpOwogICAgIH0KIAogICAgIC8vIFRoZSBnbHlwaCBidWZmZXIgaXMgY3Vy
cmVudGx5IGluIGxvZ2ljYWwgb3JkZXIsCkBAIC0xNDI5LDE2ICsxNDI5LDE2IEBAIEdseXBoQnVm
ZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVu
c2lnbmVkIGZyb20sIHVuCiAgICAgICAgIC8vIHRoZSBzdW0gb2YgdGhlIGxheW91dCBhZHZhbmNl
cy4KICAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFk
dmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZm
ZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0b0Zsb2F0U2l6
ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFsQWR2
YW5jZSAtPSBXZWJDb3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9hdFNpemUoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGkpKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IFdlYkNvcmU6OnNpemUo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3
ZSBzdWJ0cmFjdCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAgICBnbHlwaEJ1ZmZl
ci5yZXZlcnNlKDAsIGdseXBoQnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGdseXBoQnVmZmVyLnNl
dEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlKTsKICAgICB9IGVsc2UgewotICAgICAgICBG
bG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSB0b0Zsb2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpOworICAgICAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2UgPSBXZWJD
b3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gdG9GbG9hdFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoaSkpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gV2ViQ29yZTo6c2l6
ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGRuJ3Qgd2UgYWRkIHRoZSBvdGhlciBpbml0aWFsIGFkdmFuY2U/CiAgICAgICAgIGdseXBoQnVm
ZmVyLnNldEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlKTsKICAgICB9CkBAIC0xNDU5LDgg
KzE0NTksOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgIEFTU0VSVChnbHlwaEJ1ZmZl
ci5pc0ZsYXR0ZW5lZCgpKTsKICAgICBjb25zdCBGb250KiBmb250RGF0YSA9ICZnbHlwaEJ1ZmZl
ci5mb250QXQoMCk7CiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQ7Ci0gICAgZmxv
YXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0
aCgpOwotICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMCkuaGVpZ2h0KCk7CisgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIFdl
YkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSk7CisgICAgZmxvYXQgbmV4dFkg
PSBzdGFydFBvaW50LnkoKSArIGhlaWdodChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpOwogICAg
IHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKICAgICB1bnNpZ25lZCBuZXh0R2x5cGggPSAxOwogICAg
IHdoaWxlIChuZXh0R2x5cGggPCBnbHlwaEJ1ZmZlci5zaXplKCkpIHsKQEAgLTE0NzUsOCArMTQ3
NSw4IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiAgICAgICAgICAgICBzdGFydFBvaW50LnNl
dFgobmV4dFgpOwogICAgICAgICAgICAgc3RhcnRQb2ludC5zZXRZKG5leHRZKTsKICAgICAgICAg
fQotICAgICAgICBuZXh0WCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS53aWR0
aCgpOwotICAgICAgICBuZXh0WSArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQobmV4dEdseXBoKS5o
ZWlnaHQoKTsKKyAgICAgICAgbmV4dFggKz0gV2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KG5leHRHbHlwaCkpOworICAgICAgICBuZXh0WSArPSBoZWlnaHQoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KG5leHRHbHlwaCkpOwogICAgICAgICBuZXh0R2x5cGgrKzsKICAgICB9CiAKQEAg
LTE1MjEsNyArMTUyMSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImCiAgICAgR2x5cGhCdWZm
ZXIgbWFya0J1ZmZlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGdseXBoQnVm
ZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IG1pZGRsZU9mTmV4dEdseXBoID0gb2Zm
c2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgaSArIDEpOwotICAgICAgICBm
bG9hdCBhZHZhbmNlID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCkgLSBtaWRkbGVP
Zkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOworICAgICAgICBmbG9hdCBhZHZhbmNlID0g
V2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKSAtIG1pZGRsZU9mTGFzdEds
eXBoICsgbWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgICAgIG1hcmtCdWZmZXIuYWRkKGdseXBoQnVm
ZmVyLmdseXBoQXQoaSkgPyBtYXJrR2x5cGggOiBzcGFjZUdseXBoLCAqbWFya0ZvbnREYXRhLCBh
ZHZhbmNlKTsKICAgICAgICAgbWlkZGxlT2ZMYXN0R2x5cGggPSBtaWRkbGVPZk5leHRHbHlwaDsK
ICAgICB9CkBAIC0xNzY2LDcgKzE3NjYsNyBAQCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVudHMoKQogewogICAgIGF1dG8gYmVnaW5uaW5nID0gbV90
cmFuc2xhdGlvbi5tYXBQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBhdXRvIGFkdmFuY2Ug
PSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKLSAgICBhdXRvIGVuZCA9IG1fdHJh
bnNsYXRpb24ubWFwU2l6ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdo
dCgpKSk7CisgICAgYXV0byBlbmQgPSBtX3RyYW5zbGF0aW9uLm1hcFNpemUoc2l6ZShhZHZhbmNl
KSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJlZ2lubmluZy54KCksIGJlZ2lubmluZy54
KCkgKyBlbmQud2lkdGgoKSk7CiB9CiAKQEAgLTE3NzgsNyArMTc3OCw3IEBAIGF1dG8gR2x5cGhU
b1BhdGhUcmFuc2xhdG9yOjp1bmRlcmxpbmVUeXBlKCkgLT4gR2x5cGhVbmRlcmxpbmVUeXBlCiB2
b2lkIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6YWR2YW5jZSgpCiB7CiAgICAgR2x5cGhCdWZmZXJB
ZHZhbmNlIGFkdmFuY2UgPSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKLSAgICBt
X3RyYW5zbGF0aW9uLnRyYW5zbGF0ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNl
LmhlaWdodCgpKSk7CisgICAgbV90cmFuc2xhdGlvbi50cmFuc2xhdGUoc2l6ZShhZHZhbmNlKSk7
CiAgICAgKyttX2luZGV4OwogICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5zaXplKCkp
CiAgICAgICAgIG1fZm9udERhdGEgPSAmbV9nbHlwaEJ1ZmZlci5mb250QXQobV9pbmRleCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBk
NzAzMTljMTU3MTBjOWU1OWUyMDg1YWE4ODJmZThmNGYzNjIwOWQ5Li5jZWJmMTQ1ZmE3ZWNiYjZj
YzQ5YzBiYmIwYjQ1ZGU1NmJhMzhlMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTMyLDE0MSArMzIsMTUgQEAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR2x5cGguaCIK
KyNpbmNsdWRlICJHbHlwaEJ1ZmZlck1lbWJlcnMuaCIKICNpbmNsdWRlIDxjbGltaXRzPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0j
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnQ7CiAKLSNpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiB3Y2hh
cl90IEdseXBoQnVmZmVyR2x5cGg7Ci0jZWxzZQotdHlwZWRlZiBHbHlwaCBHbHlwaEJ1ZmZlckds
eXBoOwotI2VuZGlmCi0KLS8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2YgRmxvYXRTaXplIHNv
IHRoYXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCi0vLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5
IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQotI2lmIFVT
RShDRykKLQotc3RydWN0IEdseXBoQnVmZmVyQWR2YW5jZSA6IENHU2l6ZSB7Ci1wdWJsaWM6Ci0g
ICAgR2x5cGhCdWZmZXJBZHZhbmNlKCkKLSAgICAgICAgOiBDR1NpemUoQ0dTaXplWmVybykKLSAg
ICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShGbG9hdFNpemUgc2l6ZSkKLSAgICAg
ICAgOiBDR1NpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQotICAgIEdseXBoQnVmZmVyQWR2YW5jZShm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IENHU2l6ZShDR1NpemVNYWtlKHdp
ZHRoLCBoZWlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gZGVjb2RlKERlY29kZXImKTsK
LQotICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHRoaXMtPkNHU2l6ZTo6d2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjpo
ZWlnaHQpIH07IH0KLQotICAgIHZvaWQgc2V0V2lkdGgoZmxvYXQgd2lkdGgpIHsgdGhpcy0+Q0dT
aXplOjp3aWR0aCA9IHdpZHRoOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7
IHRoaXMtPkNHU2l6ZTo6aGVpZ2h0ID0gaGVpZ2h0OyB9Ci0gICAgZmxvYXQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiB0aGlzLT5DR1NpemU6OndpZHRoOyB9Ci0gICAgZmxvYXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+Q0dTaXplOjpoZWlnaHQ7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyQWR2YW5jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCB3aWR0aCgpOwotICAgIGVuY29kZXIgPDwgaGVp
Z2h0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxHbHlwaEJ1ZmZl
ckFkdmFuY2U+IEdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwotICAgIGRlY29kZXIgPj4gd2lkdGg7Ci0gICAg
aWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PGZsb2F0PiBoZWlnaHQ7Ci0gICAgZGVjb2RlciA+PiBoZWlnaHQ7Ci0gICAgaWYgKCFoZWlnaHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJB
ZHZhbmNlKCp3aWR0aCwgKmhlaWdodCk7Ci19Ci0KLXN0cnVjdCBHbHlwaEJ1ZmZlck9yaWdpbiA6
IENHUG9pbnQgewotcHVibGljOgotICAgIEdseXBoQnVmZmVyT3JpZ2luKCkKLSAgICAgICAgOiBD
R1BvaW50KENHUG9pbnRaZXJvKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4o
RmxvYXRQb2ludCBwb2ludCkKLSAgICAgICAgOiBDR1BvaW50KHBvaW50KQotICAgIHsKLSAgICB9
Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiBDR1Bv
aW50KENHUG9pbnRNYWtlKHgsIHkpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyT3JpZ2luPiBkZWNvZGUoRGVj
b2RlciYpOwotCi0gICAgb3BlcmF0b3IgRmxvYXRQb2ludCgpIHsgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHRoaXMtPkNHUG9pbnQ6OngpLCBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dQ
b2ludDo6eSkgfTsgfQotCi0gICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgdGhpcy0+Q0dQb2ludDo6
eCA9IHg7IH0KLSAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyB0aGlzLT5DR1BvaW50Ojp5ID0geTsg
fQotICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1BvaW50Ojp4OyB9Ci0gICAg
ZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9pbnQ6Onk7IH0KLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEdseXBoQnVmZmVyT3JpZ2luOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHgoKTsKLSAgICBlbmNvZGVyIDw8
IHkoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdseXBoQnVmZmVy
T3JpZ2luPiBHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgT3B0aW9uYWw8ZmxvYXQ+IHg7Ci0gICAgZGVjb2RlciA+PiB4OwotICAgIGlmICgheCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAg
IGRlY29kZXIgPj4geTsKLSAgICBpZiAoIXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICByZXR1cm4gR2x5cGhCdWZmZXJPcmlnaW4oKngsICp5KTsKLX0KLQotdXNpbmcgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSBDRkluZGV4OwotCi0jZWxzZQotCi11c2luZyBHbHlwaEJ1
ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Ci11c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0
UG9pbnQ7Ci11c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOwotCi0jZW5k
aWYgLy8gI2lmIFVTRShDRykKLQotaW5saW5lIEZsb2F0U2l6ZSB0b0Zsb2F0U2l6ZShjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UmIGEpCi17Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCks
IGEuaGVpZ2h0KCkpOwotfQotCiBjbGFzcyBHbHlwaEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7IH0KQEAgLTIwNCwx
OSArNzgsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1
ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2UpIHsgbV9pbml0aWFsQWR2YW5jZSA9IGluaXRpYWxB
ZHZhbmNlOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBpbml0aWFsQWR2YW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7IH0KLSAgICB2b2lkIGV4cGFuZEluaXRp
YWxBZHZhbmNlKGZsb2F0IHdpZHRoKSB7IG1faW5pdGlhbEFkdmFuY2Uuc2V0V2lkdGgobV9pbml0
aWFsQWR2YW5jZS53aWR0aCgpICsgd2lkdGgpOyB9CisgICAgdm9pZCBleHBhbmRJbml0aWFsQWR2
YW5jZShmbG9hdCB3aWR0aCkgeyBzZXRXaWR0aChtX2luaXRpYWxBZHZhbmNlLCBXZWJDb3JlOjp3
aWR0aChtX2luaXRpYWxBZHZhbmNlKSArIHdpZHRoKTsgfQogICAgIHZvaWQgZXhwYW5kSW5pdGlh
bEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNlIGFkZGl0aW9uYWxBZHZhbmNlKQogICAgIHsKLSAg
ICAgICAgbV9pbml0aWFsQWR2YW5jZS5zZXRXaWR0aChtX2luaXRpYWxBZHZhbmNlLndpZHRoKCkg
KyBhZGRpdGlvbmFsQWR2YW5jZS53aWR0aCgpKTsKLSAgICAgICAgbV9pbml0aWFsQWR2YW5jZS5z
ZXRIZWlnaHQobV9pbml0aWFsQWR2YW5jZS5oZWlnaHQoKSArIGFkZGl0aW9uYWxBZHZhbmNlLmhl
aWdodCgpKTsKKyAgICAgICAgc2V0V2lkdGgobV9pbml0aWFsQWR2YW5jZSwgd2lkdGgobV9pbml0
aWFsQWR2YW5jZSkgKyB3aWR0aChhZGRpdGlvbmFsQWR2YW5jZSkpOworICAgICAgICBzZXRIZWln
aHQobV9pbml0aWFsQWR2YW5jZSwgaGVpZ2h0KG1faW5pdGlhbEFkdmFuY2UpICsgaGVpZ2h0KGFk
ZGl0aW9uYWxBZHZhbmNlKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgbm9PZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0Pjo6bWF4KCk7CiAgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNv
bnN0IEZvbnQmIGZvbnQsIGZsb2F0IHdpZHRoLCBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBvZmZz
ZXRJblN0cmluZyA9IG5vT2Zmc2V0KQogICAgIHsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNl
IGFkdmFuY2U7Ci0gICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOwotICAgICAgICBhZHZh
bmNlLnNldEhlaWdodCgwKTsKKyAgICAgICAgc2V0V2lkdGgoYWR2YW5jZSwgd2lkdGgpOworICAg
ICAgICBzZXRIZWlnaHQoYWR2YW5jZSwgMCk7CiAgICAgICAgIGFkZChnbHlwaCwgZm9udCwgYWR2
YW5jZSwgb2Zmc2V0SW5TdHJpbmcpOwogICAgIH0KIApAQCAtMjI1LDcgKzk5LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2ZvbnRzLmFwcGVuZCgmZm9udCk7CiAgICAgICAgIG1fZ2x5cGhzLmFwcGVu
ZChnbHlwaCk7CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwotICAgICAgICBt
X29yaWdpbnMuYXBwZW5kKEdseXBoQnVmZmVyT3JpZ2luKCkpOworICAgICAgICBtX29yaWdpbnMu
YXBwZW5kKHsgfSk7CiAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLmFwcGVuZChvZmZzZXRJblN0
cmluZyk7CiAgICAgfQogCkBAIC0yNDMsOSArMTE3LDkgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobG9jYXRpb24gPD0gc2l6ZSgpKTsKIAogICAgICAgICBtX2ZvbnRzLmluc2VydFZlY3Rvcihs
b2NhdGlvbiwgVmVjdG9yPGNvbnN0IEZvbnQqPihsZW5ndGgsIGZvbnQpKTsKLSAgICAgICAgbV9n
bHlwaHMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaD4obGVu
Z3RoLCAweEZGRkYpKTsKLSAgICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24s
IFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2U+KGxlbmd0aCwgR2x5cGhCdWZmZXJBZHZhbmNlKDAs
IDApKSk7Ci0gICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxH
bHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCBHbHlwaEJ1ZmZlck9yaWdpbigpKSk7CisgICAgICAg
IG1fZ2x5cGhzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+
KGxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0czxHbHlwaEJ1ZmZlckdseXBoPjo6bWF4KCkpKTsK
KyAgICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1
ZmZlckFkdmFuY2U+KGxlbmd0aCwgeyB9KSk7CisgICAgICAgIG1fb3JpZ2lucy5pbnNlcnRWZWN0
b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCB7IH0pKTsKICAg
ICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQ+KGxlbmd0aCwgMCkpOwogICAgIH0KIApAQCAtMjU5LDIyICsx
MzMsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAg
ICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UmIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlcy5sYXN0KCk7
Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyB3aWR0
aCk7CisgICAgICAgIHNldFdpZHRoKGxhc3RBZHZhbmNlLCBXZWJDb3JlOjp3aWR0aChsYXN0QWR2
YW5jZSkgKyB3aWR0aCk7CiAgICAgfQogCiAgICAgdm9pZCBleHBhbmRBZHZhbmNlKHVuc2lnbmVk
IGluZGV4LCBmbG9hdCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUo
KSk7CiAgICAgICAgIGF1dG8mIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlc1tpbmRleF07Ci0gICAg
ICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyB3aWR0aCk7Cisg
ICAgICAgIHNldFdpZHRoKGxhc3RBZHZhbmNlLCBXZWJDb3JlOjp3aWR0aChsYXN0QWR2YW5jZSkg
KyB3aWR0aCk7CiAgICAgfQogCiAgICAgdm9pZCBleHBhbmRMYXN0QWR2YW5jZShHbHlwaEJ1ZmZl
ckFkdmFuY2UgZXhwYW5zaW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwog
ICAgICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UmIGxhc3RBZHZhbmNlID0gbV9hZHZhbmNlcy5sYXN0
KCk7Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldFdpZHRoKGxhc3RBZHZhbmNlLndpZHRoKCkgKyBl
eHBhbnNpb24ud2lkdGgoKSk7Ci0gICAgICAgIGxhc3RBZHZhbmNlLnNldEhlaWdodChsYXN0QWR2
YW5jZS5oZWlnaHQoKSArIGV4cGFuc2lvbi5oZWlnaHQoKSk7CisgICAgICAgIHNldFdpZHRoKGxh
c3RBZHZhbmNlLCB3aWR0aChsYXN0QWR2YW5jZSkgKyB3aWR0aChleHBhbnNpb24pKTsKKyAgICAg
ICAgc2V0SGVpZ2h0KGxhc3RBZHZhbmNlLCBoZWlnaHQobGFzdEFkdmFuY2UpICsgaGVpZ2h0KGV4
cGFuc2lvbikpOwogICAgIH0KIAogICAgIHZvaWQgc2hyaW5rKHVuc2lnbmVkIHRydW5jYXRpb25Q
b2ludCkKQEAgLTI5NSw5ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbGF0dGVuKCkKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgbV9hZHZhbmNlc1tpXSA9IEdseXBoQnVmZmVyQWR2YW5jZSgKLSAgICAgICAgICAg
ICAgICAtbV9vcmlnaW5zW2ldLngoKSArIG1fYWR2YW5jZXNbaV0ud2lkdGgoKSArIChpICsgMSA8
IHNpemUoKSA/IG1fb3JpZ2luc1tpICsgMV0ueCgpIDogMCksCi0gICAgICAgICAgICAgICAgLW1f
b3JpZ2luc1tpXS55KCkgKyBtX2FkdmFuY2VzW2ldLmhlaWdodCgpICsgKGkgKyAxIDwgc2l6ZSgp
ID8gbV9vcmlnaW5zW2kgKyAxXS55KCkgOiAwKQorICAgICAgICAgICAgbV9hZHZhbmNlc1tpXSA9
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoCisgICAgICAgICAgICAgICAgLXgobV9vcmlnaW5zW2ld
KSArIHdpZHRoKG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgpID8geChtX29yaWdpbnNb
aSArIDFdKSA6IDApLAorICAgICAgICAgICAgICAgIC15KG1fb3JpZ2luc1tpXSkgKyBoZWlnaHQo
bV9hZHZhbmNlc1tpXSkgKyAoaSArIDEgPCBzaXplKCkgPyB5KG1fb3JpZ2luc1tpICsgMV0pIDog
MCkKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBtX29yaWdpbnNbaV0gPSBHbHlwaEJ1ZmZl
ck9yaWdpbigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyTWVtYmVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjM2I1NDgyMzFlYzRh
NTY0NmUxNTJjMGY0MGEyNjZhYTM5NTA3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaApAQCAtMCwwICsxLDIy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdseXBoLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0ZvbnQuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhlIENHIHBvcnRzIHVzZSB0aGUgQ0cgdHlwZXMg
ZGlyZWN0bHksIHNvIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzIGNhbiBiZSBmZWQgZGlyZWN0bHkg
aW50byBDVEZvbnRTaGFwZUdseXBocygpLgorI2lmIFVTRShDRykKK3VzaW5nIEdseXBoQnVmZmVy
R2x5cGggPSBDR0dseXBoOwordXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwordXNp
bmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBDR1BvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdP
ZmZzZXQgPSBDRkluZGV4OworI2VsaWYgVVNFKFdJTkdESSkKK3VzaW5nIEdseXBoQnVmZmVyR2x5
cGggPSB3Y2hhcl90OwordXNpbmcgR2x5cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwordXNp
bmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBGbG9hdFBvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJp
bmdPZmZzZXQgPSB1bnNpZ25lZDsKKyNlbHNlCit1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gR2x5
cGg7Cit1c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1
ZmZlck9yaWdpbiA9IEZsb2F0UG9pbnQ7Cit1c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9
IHVuc2lnbmVkOworI2VuZGlmCisKK2lubGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBo
QnVmZmVyQWR2YW5jZShjb25zdCBGbG9hdFNpemUmID0gRmxvYXRTaXplKCkpOworaW5saW5lIEds
eXBoQnVmZmVyQWR2YW5jZSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0ID0gMCwgZmxvYXQg
PSAwKTsKK2lubGluZSBGbG9hdFNpemUgc2l6ZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsK
K2lubGluZSB2b2lkIHNldFdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYsIGZsb2F0KTsKK2lubGlu
ZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmLCBmbG9hdCk7CitpbmxpbmUgZmxv
YXQgd2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJik7CitpbmxpbmUgZmxvYXQgaGVpZ2h0
KGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYpOworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1h
a2VHbHlwaEJ1ZmZlck9yaWdpbihjb25zdCBGbG9hdFBvaW50JiA9IEZsb2F0UG9pbnQoKSk7Citp
bmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGZsb2F0ID0gMCwg
ZmxvYXQgPSAwKTsKK2lubGluZSBGbG9hdFBvaW50IHBvaW50KGNvbnN0IEdseXBoQnVmZmVyT3Jp
Z2luJik7CitpbmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiwgZmxvYXQpOworaW5s
aW5lIHZvaWQgc2V0WShHbHlwaEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsKK2lubGluZSBmbG9hdCB4
KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJik7CitpbmxpbmUgZmxvYXQgeShjb25zdCBHbHlwaEJ1
ZmZlck9yaWdpbiYpOworCisjaWYgVVNFKENHKQorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNl
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBDR1NpemVNYWtlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK2lubGlu
ZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQoreworICAgIHJldHVybiBDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpOwor
fQorCitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZh
bmNlKQoreworICAgIHJldHVybiBGbG9hdFNpemUoYWR2YW5jZS53aWR0aCwgYWR2YW5jZS5oZWln
aHQpOworfQorCitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFu
Y2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uud2lkdGggPSB3aWR0aDsKK30KKworaW5s
aW5lIHZvaWQgc2V0SGVpZ2h0KEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSwgZmxvYXQgaGVp
Z2h0KQoreworICAgIGFkdmFuY2UuaGVpZ2h0ID0gaGVpZ2h0OworfQorCitpbmxpbmUgZmxvYXQg
d2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBh
ZHZhbmNlLndpZHRoOworfQorCitpbmxpbmUgZmxvYXQgaGVpZ2h0KGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5jZS5oZWlnaHQ7Cit9CisKK2lu
bGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIENHUG9pbnRNYWtlKHBvaW50LngoKSwgcG9pbnQu
eSgpKTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdp
bihmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZSh4LCB5KTsKK30K
KworaW5saW5lIEZsb2F0UG9pbnQgcG9pbnQoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdp
bikKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludChvcmlnaW4ueCwgb3JpZ2luLnkpOworfQorCitp
bmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4sIGZsb2F0IHgpCit7Cisg
ICAgb3JpZ2luLnggPSB4OworfQorCitpbmxpbmUgdm9pZCBzZXRZKEdseXBoQnVmZmVyT3JpZ2lu
JiBvcmlnaW4sIGZsb2F0IHkpCit7CisgICAgb3JpZ2luLnkgPSB5OworfQorCitpbmxpbmUgZmxv
YXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW4ueDsKK30KKworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdp
bikKK3sKKyAgICByZXR1cm4gb3JpZ2luLnk7Cit9CisKKyNlbHNlCisKK2lubGluZSBHbHlwaEJ1
ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShjb25zdCBGbG9hdFNpemUmIHNpemUp
Cit7CisgICAgcmV0dXJuIHNpemU7Cit9CisKK2lubGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFr
ZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIHJl
dHVybiBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7Cit9CisKK2lubGluZSBGbG9hdFNpemUgc2l6
ZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFu
Y2U7Cit9CisKK2lubGluZSB2b2lkIHNldFdpZHRoKEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5j
ZSwgZmxvYXQgd2lkdGgpCit7CisgICAgYWR2YW5jZS5zZXRXaWR0aCh3aWR0aCk7Cit9CisKK2lu
bGluZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0IGhl
aWdodCkKK3sKKyAgICBhZHZhbmNlLnNldEhlaWdodChoZWlnaHQpOworfQorCitpbmxpbmUgZmxv
YXQgd2lkdGgoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVy
biBhZHZhbmNlLndpZHRoKCk7Cit9CisKK2lubGluZSBmbG9hdCBoZWlnaHQoY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBhZHZhbmNlLmhlaWdodCgpOwor
fQorCitpbmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworaW5saW5lIEds
eXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCB4LCBmbG9hdCB5KQor
eworICAgIHJldHVybiBGbG9hdFBvaW50KHgsIHkpOworfQorCitpbmxpbmUgRmxvYXRQb2ludCBw
b2ludChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmln
aW47Cit9CisKK2lubGluZSB2b2lkIHNldFgoR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxv
YXQgeCkKK3sKKyAgICBvcmlnaW4uc2V0WCh4KTsKK30KKworaW5saW5lIHZvaWQgc2V0WShHbHlw
aEJ1ZmZlck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi5zZXRZKHkpOwor
fQorCitpbmxpbmUgZmxvYXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luKQorewor
ICAgIHJldHVybiBvcmlnaW4ueCgpOworfQorCitpbmxpbmUgZmxvYXQgeShjb25zdCBHbHlwaEJ1
ZmZlck9yaWdpbiYgb3JpZ2luKQoreworICAgIHJldHVybiBvcmlnaW4ueSgpOworfQorCisjZW5k
aWYgLy8gI2lmIFVTRShDRykKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCAxMTgzNzJlYmE4MWZmZTM0ZThmNjNmYzIx
NzZlYjFjZDIxMjgzMDU2Li5hODg2Njc1YzRiNTM0NTgxYjgwYTYzNjgwY2MwZWI0OTU5YWM5ZWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjph
cHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAgICAg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyA9IGdseXBoQnVmZmVyLmFkdmFuY2VzKDApOwog
ICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5
cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBiZWZvcmVXaWR0aCAr
PSBhZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBiZWZvcmVXaWR0aCArPSB3aWR0aChhZHZh
bmNlc1tpXSk7CiAKICAgICBBU1NFUlQobGFzdEdseXBoQ291bnQgPD0gZ2x5cGhCdWZmZXJTaXpl
KTsKIApAQCAtMTEwLDggKzExMCw4IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAKICAgICBH
bHlwaEJ1ZmZlck9yaWdpbiogb3JpZ2lucyA9IGdseXBoQnVmZmVyLm9yaWdpbnMoMCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsr
aSkgewotICAgICAgICBhZHZhbmNlc1tpXS5zZXRIZWlnaHQoLWFkdmFuY2VzW2ldLmhlaWdodCgp
KTsKLSAgICAgICAgb3JpZ2luc1tpXS5zZXRZKC1vcmlnaW5zW2ldLnkoKSk7CisgICAgICAgIHNl
dEhlaWdodChhZHZhbmNlc1tpXSwgLWhlaWdodChhZHZhbmNlc1tpXSkpOworICAgICAgICBzZXRZ
KG9yaWdpbnNbaV0sIC15KG9yaWdpbnNbaV0pKTsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBsYXN0R2x5cGhDb3VudDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKSB7CkBAIC0xMjMs
MTQgKzEyMywxNCBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNm
b3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGNvbnN0IGF1dG8mIG9yaWdpbmFsQWR2YW5jZXMgPSAqaXRlcmF0b3I7CiAg
ICAgICAgIGlmIChpICYmICFvcmlnaW5hbEFkdmFuY2VzLmNoYXJhY3RlcklzU3BhY2UpCi0gICAg
ICAgICAgICBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpIC0gMSktPnNldFdpZHRoKG9yaWdpbmFsQWR2
YW5jZXMuYWR2YW5jZUJlZm9yZUNoYXJhY3Rlcik7Ci0gICAgICAgIGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGkpLT5zZXRXaWR0aChvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VBdENoYXJhY3Rlcik7Cisg
ICAgICAgICAgICBzZXRXaWR0aCgqZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLCBvcmlnaW5h
bEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOworICAgICAgICBzZXRXaWR0aCgqZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoaSksIG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVy
KTsKICAgICB9CiAgICAgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlLmNsZWFyKCk7CiAKICAgICBm
bG9hdCBhZnRlcldpZHRoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsYXN0R2x5cGhDb3Vu
dDsgaSA8IGdseXBoQnVmZmVyU2l6ZTsgKytpKQotICAgICAgICBhZnRlcldpZHRoICs9IGFkdmFu
Y2VzW2ldLndpZHRoKCk7CisgICAgICAgIGFmdGVyV2lkdGggKz0gd2lkdGgoYWR2YW5jZXNbaV0p
OwogCiAgICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aDsKIH0KQEAgLTI0OCw3ICsy
NDgsNyBAQCBpbmxpbmUgdm9pZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0
ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoQnVmZgogICAgICAgICAgICAgY2hhcmFjdGVyc1Ry
ZWF0ZWRBc1NwYWNlLmNvbnN0cnVjdEFuZEFwcGVuZCgKICAgICAgICAgICAgICAgICBjdXJyZW50
Q2hhcmFjdGVySW5kZXgsCiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyID09ICcgJywKLSAgICAg
ICAgICAgICAgICBnbHlwaEJ1ZmZlci5zaXplKCkgPyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoZ2x5
cGhCdWZmZXIuc2l6ZSgpIC0gMSkud2lkdGgoKSA6IDAsCisgICAgICAgICAgICAgICAgZ2x5cGhC
dWZmZXIuc2l6ZSgpID8gV2ViQ29yZTo6d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGdseXBo
QnVmZmVyLnNpemUoKSAtIDEpKSA6IDAsCiAgICAgICAgICAgICAgICAgd2lkdGgpOwogICAgICAg
ICB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBhdXRvIFdpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFk
ZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEdseXBoQnVmZgogICAgIGlm
IChjaGFyYWN0ZXIgPT0gdGFiQ2hhcmFjdGVyICYmIG1fcnVuLmFsbG93VGFicygpKSB7CiAgICAg
ICAgIGF1dG8mIGZvbnQgPSBnbHlwaEJ1ZmZlci5mb250QXQodHJhaWxpbmdHbHlwaEluZGV4KTsK
ICAgICAgICAgYXV0byBuZXdXaWR0aCA9IG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJT
aXplKCksIHBvc2l0aW9uKTsKLSAgICAgICAgYXV0byBjdXJyZW50V2lkdGggPSBnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQodHJhaWxpbmdHbHlwaEluZGV4KS53aWR0aCgpOworICAgICAgICBhdXRvIGN1
cnJlbnRXaWR0aCA9IHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCh0cmFpbGluZ0dseXBoSW5k
ZXgpKTsKICAgICAgICAgcmlnaHRBZGRpdGlvbmFsV2lkdGggKz0gbmV3V2lkdGggLSBjdXJyZW50
V2lkdGg7CiAgICAgfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9yOjpj
YWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlwaEJ1
ZmYKICAgICAgICAgLy8gVGhpcyBpcyBhIGhldXJpc3RpYyB0byBkZXRlcm1pbmUgaWYgdGhlIGNo
YXJhY3RlciBpcyBub24tdmlzaWJsZS4gTm9uLXZpc2libGUgY2hhcmFjdGVycyBkb24ndCBnZXQg
bGV0dGVyLXNwYWNpbmcuCiAgICAgICAgIGZsb2F0IGJhc2VXaWR0aCA9IDA7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGxlYWRpbmdHbHlwaEluZGV4OyBpIDw9IHRyYWlsaW5nR2x5cGhJbmRl
eDsgKytpKQotICAgICAgICAgICAgYmFzZVdpZHRoICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KS53aWR0aCgpOworICAgICAgICAgICAgYmFzZVdpZHRoICs9IHdpZHRoKGdseXBoQnVmZmVyLmFk
dmFuY2VBdChpKSk7CiAgICAgICAgIGlmIChiYXNlV2lkdGgpCiAgICAgICAgICAgICByaWdodEFk
ZGl0aW9uYWxXaWR0aCArPSBtX2ZvbnQubGV0dGVyU3BhY2luZygpOwogCkBAIC0zODgsNyArMzg4
LDcgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2kKICAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VX
aWR0aHMobV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IGdseXBoQnVm
ZmVyU3RhcnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1
dG8gc3RyaW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuc3RyaW5nT2Zmc2V0QXQoaSk7Ci0gICAgICAg
IGFkdmFuY2VXaWR0aHNbc3RyaW5nT2Zmc2V0XSArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSku
d2lkdGgoKTsKKyAgICAgICAgYWR2YW5jZVdpZHRoc1tzdHJpbmdPZmZzZXRdICs9IHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgICAgIGF1dG8mIGdseXBoSW5kZXhSYW5nZSA9
IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4UmFuZ2Vbc3RyaW5nT2Zmc2V0XTsKICAgICAgICAg
aWYgKGdseXBoSW5kZXhSYW5nZSkKICAgICAgICAgICAgIGdseXBoSW5kZXhSYW5nZS0+dHJhaWxp
bmdHbHlwaEluZGV4ID0gaTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFdpZHRoSXRlcmF0b3I6
OmFwcGx5RXh0cmFTcGFjaW5nQWZ0ZXJTaGFwaW5nKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
dW5zaQogICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gY3VycmVudEFkdmFuY2UgPSBn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGF1dG8gY3VycmVu
dEFkdmFuY2UgPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICAgICAg
YXV0byBuZXdBZHZhbmNlID0gY3VycmVudEFkdmFuY2UgKiBtX3J1bi5ob3Jpem9udGFsR2x5cGhT
dHJldGNoKCk7CiAgICAgICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRBZHZhbmNlKGksIG5ld0Fk
dmFuY2UgLSBjdXJyZW50QWR2YW5jZSk7CiAgICAgICAgIH0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBi
b29sIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFyYWN0ZXIoZmxvYXQmIHdpZHRoLCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIpCiAgICAgYWR2YW5jZShtX2N1cnJlbnRDaGFyYWN0ZXJJbmRl
eCArIDEsIGdseXBoQnVmZmVyKTsKICAgICBmbG9hdCB3ID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBvbGRTaXplOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgIHcgKz0g
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgIHcgKz0gV2ViQ29yZTo6
d2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICB3aWR0aCA9IHc7CiAgICAgcmV0
dXJuIGdseXBoQnVmZmVyLnNpemUoKSA+IG9sZFNpemU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggMjQ5YTAxODUyYjU4YzIwYTY5YzQxMzMxMDE0NzMzOTljMzJj
ODU1Ny4uNWFjZDMzN2QwMzY4NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTYzLDEwICs1NjMsMTAgQEAgdm9pZCBE
cmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKICAgICBzaXplX3QgbnVtR2x5cGhzID0gbV9nbHlw
aHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsK
ICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2FkdmFuY2VzW2ldOwotICAg
ICAgICBGbG9hdFJlY3QgZ2x5cGhSZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgpLCBjdXJyZW50
LnkoKSAtIGFzY2VudCwgYWR2YW5jZS53aWR0aCgpLCBhc2NlbnQgKyBkZXNjZW50KTsKKyAgICAg
ICAgRmxvYXRSZWN0IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwgY3VycmVudC55
KCkgLSBhc2NlbnQsIHdpZHRoKGFkdmFuY2UpLCBhc2NlbnQgKyBkZXNjZW50KTsKICAgICAgICAg
bV9ib3VuZHMudW5pdGUoZ2x5cGhSZWN0KTsKIAotICAgICAgICBjdXJyZW50Lm1vdmUoYWR2YW5j
ZS53aWR0aCgpLCBhZHZhbmNlLmhlaWdodCgpKTsKKyAgICAgICAgY3VycmVudC5tb3ZlKHdpZHRo
KGFkdmFuY2UpLCBoZWlnaHQoYWR2YW5jZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4OGI5ODFjODdjOWJhMmExYjg4
NDJkODY5MzJhN2I2ZTNlYTUyZTIuLjk0NzhkYWI0ZTQ0YzcwMWI4ZGMwYjJkYjg5NDUwYzFkM2Uz
YzQ0YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOS0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2x5cGhCdWZmZXJBZHZhbmNlIGFuZCBHbHlw
aEJ1ZmZlck9yaWdpbiBtb3JlIHJvYnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVq
dGFzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIw
LTA5LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTW92ZSBQREYgaGVhZHMtdXAgZGlzcGxheSB0byBVSSBwcm9jZXNzIG9uIG1hY09TCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU1OTMwYzY5NDhhY2NkYmNlOTg1NTEyMTYyNTUwYzBk
NzZkOWE4YTkuLmJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC04MCwxNSArODAsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwg
MC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNiwgJmdseXBoQnVmZmVyKTsKICAgICBF
WFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIHRvdGFs
V2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOwog
ICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDZVKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwg
YWR2YW5jZXNbM10ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMikud2lkdGgoKSwgYWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgYWR2YW5jZXNb
MV0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoNCkud2lkdGgoKSwgLWluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDUpLndpZHRoKCksIHNwYWNlV2lkdGggKyBp
bml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIHdpZHRoKGFkdmFuY2VzWzRdKSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCB3aWR0aChhZHZh
bmNlc1szXSksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDIpKSwgd2lkdGgoYWR2YW5jZXNbMl0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIHdpZHRoKGFkdmFuY2VzWzFdKSwgMC4w
MDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCAt
d2lkdGgoaW5pdGlhbEFkdmFuY2UpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCg1KSksIHNwYWNlV2lkdGggKyB3aWR0aChpbml0aWFsQWR2YW5j
ZSksIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0
aWFsQWR2YW5jZUluUlRMKQpAQCAtMTI0LDE1ICsxMjQsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiAgICAgRVhQRUNUX05FQVIoY29u
dHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CiAg
ICAgY29udHJvbGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2
YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0
aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlw
aEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAw
MSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBhZHZhbmNlc1s0XS53aWR0aCgp
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0
aCgpLCBhZHZhbmNlc1szXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCBhZHZh
bmNlc1sxXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCg0KS53aWR0aCgpLCAtaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkuaGVpZ2h0KCksIGluaXRpYWxB
ZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgwKSksIGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQ
RUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgYWR2YW5jZXNbM10ud2lk
dGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoMikpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIGFkdmFuY2VzWzFdLndpZHRoKCksIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKSwgLWlu
aXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGds
eXBoQnVmZmVyLmFkdmFuY2VBdCg0KSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEp
OwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VX
aXRoTGVmdFJ1bkluTFRSKQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKICAgICBFWFBF
Q1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIGFkdmFuY2Vz
WzBdLndpZHRoKCkgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNvbnRy
b2xsZXIuYWR2YW5jZSgzLCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpLCBzcGFjZVdpZHRoICsgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFu
Y2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZm
ZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAw
MSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgM1UpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCBzcGFjZVdpZHRoICsgaW5pdGlh
bEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMSkud2lkdGgoKSwgNTMuMDY2NDA2LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpLCAyMy4yODEyNTAsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgc3BhY2VXaWR0
aCArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgNTMuMDY2NDA2LCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDIzLjI4MTI1MCwgMC4w
MDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZh
bmNlSW5MVFIpCkBAIC0yMDgsMTEgKzIwOCwxMSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVy
LnJ1bldpZHRoU29GYXIoKSwgYWR2YW5jZXNbMF0ud2lkdGgoKSArIGluaXRpYWxBZHZhbmNlLndp
ZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDIsICZnbHlwaEJ1ZmZlcik7
CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDc2LjM0NzY1NiAr
IGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAw
LjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVp
Z2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFS
KHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS53aWR0
aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNU
X0VRKGdseXBoQnVmZmVyLnNpemUoKSwgMlUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgwKS53aWR0aCgpLCA1My4wNjY0MDYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05F
QVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDIzLjI4MTI1MCwgMC4wMDAxKTsK
KyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCA1My4wNjY0
MDYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKSwgMjMuMjgxMjUwLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKQEAgLTI1MSwxNCArMjUxLDE0
IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRM
Tm9PcmlnaW5zKQogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0
b3RhbFdpZHRoLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSg0LCAmZ2x5cGhCdWZm
ZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdp
ZHRoLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNl
KCkud2lkdGgoKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1Rf
TkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCBpbml0aWFsQWR2YW5j
ZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxB
ZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXpl
KCksIDRVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgo
KSwgNDMuODExOTM0OTAwNTQyNSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgMTIuMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwgMTQuMDM5NzgzMDAxODA4MywgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgLTQu
MzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDMpLmhlaWdodCgpLCAxMi4zNjg4OTY5MjU4NTksIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNDMuODExOTM0OTAwNTQyNSwg
MC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkp
LCAxMi4wLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgyKSksIDE0LjAzOTc4MzAwMTgwODMsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7
CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIDEyLjM2
ODg5NjkyNTg1OSwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIExlZnRFeHBhbnNpb24pCkBAIC0yODUsMTAgKzI4NSwxMCBAQCBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKICAgICBFWFBFQ1RfTkVBUihjb250cm9s
bGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2Uo
MSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29G
YXIoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDEwMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgpLCAwLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAxMDAsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkp
LCAwLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDFVKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgMjQsIDAuMDAw
MSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgMjQs
IDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNh
bEFkdmFuY2VzKQpAQCAtMzIyLDE3ICszMjIsMTcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5y
dW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDQsICZn
bHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCks
IDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2Uo
KS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkuaGVpZ2h0KCksIDE2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRo
KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9O
RUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgMTYsIDAuMDAwMSk7CiAg
ICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS5oZWlnaHQoKSwgNCAtIDEgLTgsIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDAsIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLmhlaWdodCgp
LCA4IC0gMiAtIDUxMiwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQoMikud2lkdGgoKSwgMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMikuaGVpZ2h0KCksIDEyOCAtIDMyIC0gMjU2LCAwLjAwMDEpOwotICAgIEVY
UEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCAwLCAwLjAwMDEpOwot
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS5oZWlnaHQoKSwgMjU2IC0g
NjQsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDApKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDApKSwgNCAtIDEgLTgsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWln
aHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgOCAtIDIgLSA1MTIsIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMCwgMC4wMDAxKTsK
KyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMTI4IC0g
MzIgLSAyNTYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDMpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDMpKSwgMjU2IC0gNjQsIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCkBAIC0zNjEs
NyArMzYxLDEyIEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRo
V2l0aEp1c3RpZmljYXRpb24pCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNv
RmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZl
cik7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KDEpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndp
ZHRoKCksIGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpCisgICAgICAgICsgd2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKQorICAgICAgICArIHdpZHRoKGdseXBoQnVmZmVy
LmFkdmFuY2VBdCgyKSkKKyAgICAgICAgKyB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykp
CisgICAgICAgICsgd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKQorICAgICAgICAsIGNv
bnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408150</attachid>
            <date>2020-09-06 16:47:42 -0700</date>
            <delta_ts>2020-09-06 17:52:58 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215143-20200906164741.patch</filename>
            <type>text/plain</type>
            <size>55943</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNGU0YWYyYjI3OTJk
OTQ0M2M3NmM2MGFhMzg0ZTM1MDkyZjg2NC4uMzdkNzU0MzJkMzAwNjAwZDIyZjBjNDhhYzQ1N2E5
ZTZhYTJjYTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTA5LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBHbHlw
aEJ1ZmZlckFkdmFuY2UgYW5kIEdseXBoQnVmZmVyT3JpZ2luIG1vcmUgcm9idXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgR2x5cGhCdWZmZXIgY29udGFp
bnMgdmVjdG9ycyBvZiBhZHZhbmNlcyBhbmQgb3JpZ2lucywgd2hpY2ggYXJlIGNvbmNlcHR1YWxs
eQorICAgICAgICBGbG9hdFNpemVzIGFuZCBGbG9hdFBvaW50cy4gSG93ZXZlciwgd2UgbmVlZCB0
byBwYXNzIHRoZXNlIGFycmF5cyBpbnRvIENURm9udFNoYXBlR2x5cGhzKCkKKyAgICAgICAgb3Ig
Q1RGb250VHJhbnNmb3JtR2x5cGhzV2l0aExhbmd1YWdlKCksIHdoaWNoIGV4cGVjdHMgdGhlc2Ug
dmVjdG9ycyB0byB1c2UgcGxhdGZvcm0gdHlwZXMuCisgICAgICAgIFJhdGhlciB0aGFuIGNvbnZl
cnRpbmcgaW4vb3V0IG9mIHBsYXRmb3JtIHR5cGVzIGFyb3VuZCB0aGUgY2FsbCBzaXRlLCB3ZSBj
YW4gc2ltcGx5IHVzZQorICAgICAgICB0aGUgcGxhdGZvcm0gdHlwZXMgdGhyb3VnaG91dC4gSW5k
ZWVkLCB0aGF0J3Mgd2hhdCB3ZSdyZSBkb2luZyB0b2RheS4KKworICAgICAgICBIb3dldmVyLCB0
aGUgbWVjaGFuaXNtIHdlIHVzZSB0b2RheSB0byBtYWtlIHRoaXMgcGxhdGZvcm0taW5kZXBlbmRl
bnQgaXMgdG8gbWFrZSBhIHN0cnVjdAorICAgICAgICB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSBw
bGF0Zm9ybSB0eXBlcy4gVGhlbiwgd2Ugc3RhdGljX2Nhc3QgdGhlIGFycmF5IG9mIHRoZSBzdHJ1
Y3QgdG8KKyAgICAgICAgYW4gYXJyYXkgb2YgdGhlIGJhc2UgdHlwZS4gVGhpcyBpcyBicml0dGxl
LCBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBz
dHJ1Y3QgZG9lc24ndCBoYXZlIGFueSBtZW1iZXJzIGFkZGVkIHRvIGl0LCB3aGljaCB3b3VsZCBj
aGFuZ2UgdGhlIHN0cmlkZSBvZiB0aGUgYXJyYXkKKyAgICAgICAgYW5kIGZlZWQgZ2FyYmFnZSBp
bnRvIHRoZSBzaGFwaW5nIGZ1bmN0aW9uLgorCisgICAgICAgIEluc3RlYWQsIGEgYmV0dGVyIGRl
c2lnbiBpcyB0byB0eXBlZGVmIHRoZSBuYXRpdmUgdHlwZSwgYW5kIGhhdmUgYWxsIGludGVyYWN0
aW9ucyB3aXRoIHRoZQorICAgICAgICB0eXBlcyBnbyB0aHJvdWdoIHN0YW5kYWxvbmUgZnVuY3Rp
b25zIHdoaWNoIGRlYWwgd2l0aCB0aGUgbmF0aXZlIHR5cGUuIFRoYXQgd2F5LCB3ZSBjYW4ndAor
ICAgICAgICBhY2NpZGVudGFsbHkgY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBhcnJheSBlbGVtZW50
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2x5cGhCdWZmZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6
bWFrZUhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmV4cGFuZExhc3RBZHZh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpmbGF0dGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6R2x5cGhCdWZmZXJBZHZhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6b3BlcmF0b3IgRmxvYXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZTo6c2V0
V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlOjpz
ZXRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNl
Ojp3aWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlckFk
dmFuY2U6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1
ZmZlckFkdmFuY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlckFkdmFuY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
bHlwaEJ1ZmZlck9yaWdpbjo6R2x5cGhCdWZmZXJPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46Om9wZXJhdG9yIEZsb2F0UG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnNldFkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OnkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJPcmlnaW46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlck9yaWdpbjo6ZGVjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1lbWJlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRT
aXplRnJvbUdseXBoQnVmZmVyQWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1
ZmZlckFkdmFuY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRHbHlwaEJ1ZmZlckFkdmFu
Y2VIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2x5cGhCdWZmZXJBZHZhbmNlSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdseXBoQnVmZmVyT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb2F0
UG9pbnRGcm9tR2x5cGhCdWZmZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2x5cGhC
dWZmZXJPcmlnaW5YKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEdseXBoQnVmZmVyT3JpZ2luWSk6
CisgICAgICAgIChXZWJDb3JlOjpnbHlwaEJ1ZmZlck9yaWdpblgpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2x5cGhCdWZmZXJPcmlnaW5ZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFwcGx5Rm9u
dFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YWR2YW5jZUlu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhz
Ojpjb21wdXRlQm91bmRzKToKKwogMjAyMC0wOS0wNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIExldHRlci1zcGFjaW5nIHNob3VsZCBkaXNhYmxl
IGxpZ2F0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjBjODZhZjNmOTRlMjFjMjZkZmE5Nzdi
NTNhMGJlMDk5NjA5MzNkOC4uZTI2MmYyOWFiOGVjNjQzYjk0NGU1NGUxZGE2OTNjNmVlOGZjM2Rk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTI3LDYgKzExMjcsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlV
dGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXJN
ZW1iZXJzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY5ZTA4MjI5OWRmZmU2ZGE4NWM5ODY5NmM3ODU2ZjA1MjY4YmQ4NDEuLjVhYzYy
MzUyZTg1YjBiYWRkNmU3NGU2YmM0NzFjYWQ0OTU4ZGUzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxMyw2ICs2MTMsNyBA
QAogCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUEzMUM3MjlDRTQwMDgw
RjhGQyAvKiBGb250RmFjZVNldC5oICovOyB9OwogCQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMg
LyogSlNGb250RmFjZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUMyNEVFQTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLzsg
fTsKIAkJMUM0M0RFNkIyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0
M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDNEQwREQz
MjREOUYxMEQwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAv
KiBHbHlwaEJ1ZmZlck1lbWJlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzY2MjYxMTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjYyNjBGMUM2
RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oICovOyB9OwogCQkxQzczQTcxMzIxODU3NTdFMDA0
Q0NFQTUgLyogVGV4dFVuZGVybGluZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRl
cmxpbmVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQzczQTcxNTIxODU3NTg3MDA0Q0NFQTUgLyogVGV4dERlY29yYXRpb25UaGlja25l
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjZC
NEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02NjMzLDYgKzY2MzQs
NyBAQAogCQkxQzM5NjlDRjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzQzREU2ODIyQUI0QjhBMDAxNTI3
RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzQzREU2QTIyQUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50
VHJhaXRDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzREMEREMTI0RDlGMERCMDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdseXBoQnVmZmVyTWVtYmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0QkUgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9uTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1OUIwMTgy
MjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTY29wZWRTZXRBZGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2
MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjU5MTQsNiArMjU5MTYsNyBAQAogCQkJCTBGQjYyNTJEMThERTFCMTUwMEEwN0MwNSAv
KiBHZW9tZXRyeVV0aWxpdGllcy5oICovLAogCQkJCTA4NkJCRDBFMTM2MDM5QzIwMDhCMTVEOCAv
KiBHbHlwaC5oICovLAogCQkJCUIyQzNEQTVCMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZl
ci5oICovLAorCQkJCTFDNEQwREQxMjREOUYwREIwMDNENzQ5OCAvKiBHbHlwaEJ1ZmZlck1lbWJl
cnMuaCAqLywKIAkJCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFw
LmggKi8sCiAJCQkJMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovLAog
CQkJCUJDNTNDNjA3MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5jcHAgKi8sCkBAIC0zMTMx
Niw2ICszMTMxOSw3IEBACiAJCQkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhC
MTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNkMwRDAwNkNENjAwRUY2
RjI2IC8qIEdseXBoQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzREMEREMzI0RDlGMTBE
MDAzRDc0OTggLyogR2x5cGhCdWZmZXJNZW1iZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUQ0
QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODczQjg2QjEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTE1MThGQzFFNzhDMTVGMDBFQzUxNEEgLyogR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDhmMWMy
MDVhMDQzNTlkYWRiYmVlZTExMmE1ZDAyOGQ5MTNjODE2NmUuLmY2YjVmMGUzOGRiODNlOWVjMDUw
YjVlMWRhZTM1MTA5MDk5ZTVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNTg0LDcgKzU4
NCw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNl
dCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgICAgIC8vIFdoZW4gbGVmdG1vc3RH
bHlwaCBpcyAwLCBpdCByZXByZXNlbnRzIHRoZSBmaXJzdCBnbHlwaCB0byBkcmF3LCB0YWtpbmcg
aW50bwogICAgICAgICAvLyBhY2NvdW50IHRoZSB0ZXh0IGRpcmVjdGlvbi4KICAgICAgICAgaWYg
KCFpbmRleE9mTGVmdG1vc3RHbHlwaEluQ3VycmVudFJ1biAmJiBnbHlwaEJ1ZmZlcikKLSAgICAg
ICAgICAgIGdseXBoQnVmZmVyLT5zZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2Uo
Y29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCBjb21wbGV4VGV4dFJ1bi5p
bml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKSk7CisgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+c2V0
SW5pdGlhbEFkdmFuY2UobWFrZUdseXBoQnVmZmVyQWR2YW5jZShjb21wbGV4VGV4dFJ1bi5pbml0
aWFsQWR2YW5jZSgpKSk7CiAKICAgICAgICAgd2hpbGUgKG1fZ2x5cGhJbkN1cnJlbnRSdW4gPCBn
bHlwaENvdW50KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBnbHlwaFN0YXJ0T2Zmc2V0ID0gY29t
cGxleFRleHRSdW4uaW5kZXhBdChnbHlwaEluZGV4SW50b0N1cnJlbnRSdW4pOwpAQCAtNjA0LDIz
ICs2MDQsMjMgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQg
b2Zmc2V0LCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIsIEcKIAogICAgICAgICAgICAgaWYgKGds
eXBoQnVmZmVyICYmICFtX2NoYXJhY3RlckluQ3VycmVudEdseXBoKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBjdXJyZW50R2x5cGhPcmlnaW4gPSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0Nv
bXBsZXhUZXh0Q29udHJvbGxlcik7Ci0gICAgICAgICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNl
IHBhaW50QWR2YW5jZShhZGp1c3RlZEJhc2VBZHZhbmNlKTsKKyAgICAgICAgICAgICAgICBHbHlw
aEJ1ZmZlckFkdmFuY2UgcGFpbnRBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShhZGp1
c3RlZEJhc2VBZHZhbmNlKTsKICAgICAgICAgICAgICAgICBpZiAoIWdseXBoSW5kZXhJbnRvQ3Vy
cmVudFJ1bikgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgbGF5b3V0IGFkdmFu
Y2Ugb2YgZXZlcnkgcnVuIGluY2x1ZGVzIHRoZSAiaW5pdGlhbCBsYXlvdXQgYWR2YW5jZS4iIEhv
d2V2ZXIsIGhlcmUsIHdlIG5lZWQKICAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQgYWR2YW5j
ZXMsIHNvIHN1YnRyYWN0IGl0IG91dCBiZWZvcmUgdHJhbnNmb3JtaW5nIHRoZSBsYXlvdXQgYWR2
YW5jZSBpbnRvIGEgcGFpbnQgYWR2YW5jZS4KLSAgICAgICAgICAgICAgICAgICAgcGFpbnRBZHZh
bmNlLnNldFdpZHRoKHBhaW50QWR2YW5jZS53aWR0aCgpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRp
YWxBZHZhbmNlKCkud2lkdGgoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi54KCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldEhlaWdodChwYWludEFkdmFuY2UuaGVpZ2h0KCkg
LSAoY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSAtIGN1cnJlbnRHbHlw
aE9yaWdpbi55KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0V2lkdGgocGFpbnRBZHZhbmNl
LCB3aWR0aChwYWludEFkdmFuY2UpIC0gKGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCku
d2lkdGgoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi54KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgaGVpZ2h0KHBhaW50QWR2YW5jZSkgLSAoY29tcGxleFRl
eHRSdW4uaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSAtIGN1cnJlbnRHbHlwaE9yaWdpbi55KCkp
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldFdp
ZHRoKHBhaW50QWR2YW5jZS53aWR0aCgpICsgZ2x5cGhPcmlnaW4oZ2x5cGhJbmRleEludG9Db21w
bGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4ueCgpKTsKLSAg
ICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQo
KSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9sbGVyICsgMSku
eSgpIC0gY3VycmVudEdseXBoT3JpZ2luLnkoKSk7CisgICAgICAgICAgICAgICAgc2V0V2lkdGgo
cGFpbnRBZHZhbmNlLCB3aWR0aChwYWludEFkdmFuY2UpICsgZ2x5cGhPcmlnaW4oZ2x5cGhJbmRl
eEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkgLSBjdXJyZW50R2x5cGhPcmlnaW4u
eCgpKTsKKyAgICAgICAgICAgICAgICBzZXRIZWlnaHQocGFpbnRBZHZhbmNlLCBoZWlnaHQocGFp
bnRBZHZhbmNlKSArIGdseXBoT3JpZ2luKGdseXBoSW5kZXhJbnRvQ29tcGxleFRleHRDb250cm9s
bGVyICsgMSkueSgpIC0gY3VycmVudEdseXBoT3JpZ2luLnkoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGdseXBoSW5kZXhJbnRvQ3VycmVudFJ1biA9PSBnbHlwaENvdW50IC0gMSAmJiBjdXJyZW50
UnVuSW5kZXggKyAxIDwgcnVuQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gT3VyIHBh
aW50IGFkdmFuY2UgcG9pbnRzIHRvIHRoZSBlbmQgb2YgdGhlIHJ1bi4gSG93ZXZlciwgdGhlIG5l
eHQgcnVuIG1heSBoYXZlIGFuCiAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWwgYWR2YW5j
ZSwgYW5kIG91ciBwYWludCBhZHZhbmNlIG5lZWRzIHRvIHBvaW50IHRvIHRoZSBsb2NhdGlvbiBv
ZiB0aGUgbmV4dAogICAgICAgICAgICAgICAgICAgICAvLyBnbHlwaC4gU28sIHdlIG5lZWQgdG8g
YWRkIGluIHRoZSBuZXh0IHJ1bidzIGluaXRpYWwgYWR2YW5jZS4KLSAgICAgICAgICAgICAgICAg
ICAgcGFpbnRBZHZhbmNlLnNldFdpZHRoKHBhaW50QWR2YW5jZS53aWR0aCgpIC0gZ2x5cGhPcmln
aW4oZ2x5cGhJbmRleEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkgKyBtX2NvbXBs
ZXhUZXh0UnVuc1tjdXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldEhlaWdodChwYWludEFkdmFu
Y2UuaGVpZ2h0KCkgLSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJv
bGxlciArIDEpLnkoKSArIG1fY29tcGxleFRleHRSdW5zW2N1cnJlbnRSdW5JbmRleCArIDFdLT5p
bml0aWFsQWR2YW5jZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0V2lkdGgo
cGFpbnRBZHZhbmNlLCB3aWR0aChwYWludEFkdmFuY2UpIC0gZ2x5cGhPcmlnaW4oZ2x5cGhJbmRl
eEludG9Db21wbGV4VGV4dENvbnRyb2xsZXIgKyAxKS54KCkgKyBtX2NvbXBsZXhUZXh0UnVuc1tj
dXJyZW50UnVuSW5kZXggKyAxXS0+aW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgaGVpZ2h0KHBhaW50QWR2YW5jZSkg
LSBnbHlwaE9yaWdpbihnbHlwaEluZGV4SW50b0NvbXBsZXhUZXh0Q29udHJvbGxlciArIDEpLnko
KSArIG1fY29tcGxleFRleHRSdW5zW2N1cnJlbnRSdW5JbmRleCArIDFdLT5pbml0aWFsQWR2YW5j
ZSgpLmhlaWdodCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFpbnRB
ZHZhbmNlLnNldEhlaWdodCgtcGFpbnRBZHZhbmNlLmhlaWdodCgpKTsgLy8gSW5jcmVhc2luZyB5
IHBvaW50cyBkb3duCisgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KHBhaW50QWR2YW5jZSwgLWhl
aWdodChwYWludEFkdmFuY2UpKTsgLy8gSW5jcmVhc2luZyB5IHBvaW50cyBkb3duCiAgICAgICAg
ICAgICAgICAgZ2x5cGhCdWZmZXItPmFkZChtX2FkanVzdGVkR2x5cGhzW2dseXBoSW5kZXhJbnRv
Q29tcGxleFRleHRDb250cm9sbGVyXSwgY29tcGxleFRleHRSdW4uZm9udCgpLCBwYWludEFkdmFu
Y2UsIGNvbXBsZXhUZXh0UnVuLmluZGV4QXQobV9nbHlwaEluQ3VycmVudFJ1bikpOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNTljODJhZjdiYTQ2YjU1YzM5ODM3YjYzMWI4MTMwNWZlMjQwNzQ5YS4u
MzI0MzBhNmI1NTQ0OTkwY2RhN2I3NjNhZmY4ZTAzNjBjZmNiM2UzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzAyLDcgKzMw
Miw3IEBAIEZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCi0gICAgRmxvYXRQb2ludCBzdGFy
dFBvaW50ID0gcG9pbnQgKyBGbG9hdFNpemUoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7
CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBXZWJDb3JlOjpzaXplKGdseXBo
QnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihjb250ZXh0LCBn
bHlwaEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKICAgICBy
ZXR1cm4gc3RhcnRQb2ludCAtIHBvaW50OwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRm9u
dENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBGbG9hdFNpemUo
Z2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50
ID0gcG9pbnQgKyBXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpOwog
ICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBzdGFydFBv
aW50KTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxp
c3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFm
ZmluZVRyYW5zZm9ybSgpKTsKICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9p
bnQgPSB0b0Zsb2F0UG9pbnQoRmxvYXRTaXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkp
KTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoV2ViQ29yZTo6c2l6
ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgZHJhd0dseXBoQnVmZmVyKHJl
Y29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24pOwogICAgIHJldHVybiBkaXNwbGF5TGlzdDsKIH0KQEAgLTQ1MSw3ICs0NTEsNyBA
QCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCwg
VGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogICAgIC8vIFNhbWUgZ2x5cGggd2lkdGhzIGJ1dCBk
aWZmZXJlbnQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBjYW4gcHJvZHVjZSBkaWZmZXJlbnQg
cnVuIHdpZHRoLgogICAgIGZsb2F0IHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBs
aWVkID0gLXJ1bldpZHRoOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIu
c2l6ZSgpOyArK2kpCi0gICAgICAgIHJ1bldpZHRoRGlmZmVyZW5jZVdpdGhUcmFuc2Zvcm1BcHBs
aWVkICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICBydW5XaWR0
aERpZmZlcmVuY2VXaXRoVHJhbnNmb3JtQXBwbGllZCArPSBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgIHJ1bldpZHRoICs9IHJ1bldpZHRoRGlmZmVyZW5jZVdp
dGhUcmFuc2Zvcm1BcHBsaWVkOwogCiAgICAgaWYgKGNhY2hlRW50cnkpCkBAIC0xNDAxLDcgKzE0
MDEsNyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVucwogICAgIGlmICghZ2x5cGhCdWZmZXIuaXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBpbml0aWFsIGFkdmFuY2UgaXMgc3VwcG9zZWQgdG8g
cG9pbnQgZGlyZWN0bHkgdG8gdGhlIGZpcnN0IGdseXBoJ3MgcGFpbnQgcG9zaXRpb24uCiAgICAg
ICAgIC8vIFNlZSB0aGUgYXNjaWktYXJ0IGRpYWdyYW0gaW4gQ29tcGxleFRleHRDb250cm9sbGVy
LmguCi0gICAgICAgIGdseXBoQnVmZmVyLmV4cGFuZEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVy
QWR2YW5jZShnbHlwaEJ1ZmZlci5vcmlnaW5BdCgwKS54KCksIGdseXBoQnVmZmVyLm9yaWdpbkF0
KDApLnkoKSkpOworICAgICAgICBnbHlwaEJ1ZmZlci5leHBhbmRJbml0aWFsQWR2YW5jZShtYWtl
R2x5cGhCdWZmZXJBZHZhbmNlKHgoZ2x5cGhCdWZmZXIub3JpZ2luQXQoMCkpLCB5KGdseXBoQnVm
ZmVyLm9yaWdpbkF0KDApKSkpOwogICAgIH0KIAogICAgIC8vIFRoZSBnbHlwaCBidWZmZXIgaXMg
Y3VycmVudGx5IGluIGxvZ2ljYWwgb3JkZXIsCkBAIC0xNDI5LDE4ICsxNDI5LDE4IEBAIEdseXBo
QnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4s
IHVuc2lnbmVkIGZyb20sIHVuCiAgICAgICAgIC8vIHRoZSBzdW0gb2YgdGhlIGxheW91dCBhZHZh
bmNlcy4KICAgICAgICAgRmxvYXRTaXplIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3Rh
bEFkdmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhC
dWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSB0b0Zsb2F0
U2l6ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBXZWJDb3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gdG9GbG9hdFNpemUoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KGkpKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IFdlYkNvcmU6OnNp
emUoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4n
dCB3ZSBzdWJ0cmFjdCB0aGUgb3RoZXIgaW5pdGlhbCBhZHZhbmNlPwogICAgICAgICBnbHlwaEJ1
ZmZlci5yZXZlcnNlKDAsIGdseXBoQnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIGdseXBoQnVmZmVy
LnNldEluaXRpYWxBZHZhbmNlKGluaXRpYWxBZHZhbmNlKTsKKyAgICAgICAgZ2x5cGhCdWZmZXIu
c2V0SW5pdGlhbEFkdmFuY2UobWFrZUdseXBoQnVmZmVyQWR2YW5jZShpbml0aWFsQWR2YW5jZSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSA9IHRvRmxv
YXRTaXplKGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CisgICAgICAgIEZsb2F0
U2l6ZSBpbml0aWFsQWR2YW5jZSA9IFdlYkNvcmU6OnNpemUoZHVtbXlHbHlwaEJ1ZmZlci5pbml0
aWFsQWR2YW5jZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSB0b0Zs
b2F0U2l6ZShkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CisgICAgICAgICAgICBpbml0
aWFsQWR2YW5jZSArPSBXZWJDb3JlOjpzaXplKGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkp
KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBhZGQgdGhlIG90aGVyIGluaXRpYWwg
YWR2YW5jZT8KLSAgICAgICAgZ2x5cGhCdWZmZXIuc2V0SW5pdGlhbEFkdmFuY2UoaW5pdGlhbEFk
dmFuY2UpOworICAgICAgICBnbHlwaEJ1ZmZlci5zZXRJbml0aWFsQWR2YW5jZShtYWtlR2x5cGhC
dWZmZXJBZHZhbmNlKGluaXRpYWxBZHZhbmNlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGdseXBo
QnVmZmVyOwpAQCAtMTQ1OSw4ICsxNDU5LDggQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
QnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcKICAg
ICBBU1NFUlQoZ2x5cGhCdWZmZXIuaXNGbGF0dGVuZWQoKSk7CiAgICAgY29uc3QgRm9udCogZm9u
dERhdGEgPSAmZ2x5cGhCdWZmZXIuZm9udEF0KDApOwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2lu
dCA9IHBvaW50OwotICAgIGZsb2F0IG5leHRYID0gc3RhcnRQb2ludC54KCkgKyBnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKLSAgICBmbG9hdCBuZXh0WSA9IHN0YXJ0UG9pbnQueSgp
ICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgpOworICAgIGZsb2F0IG5leHRYID0g
c3RhcnRQb2ludC54KCkgKyBXZWJDb3JlOjp3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkp
OworICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBoZWlnaHQoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDApKTsKICAgICB1bnNpZ25lZCBsYXN0RnJvbSA9IDA7CiAgICAgdW5zaWduZWQg
bmV4dEdseXBoID0gMTsKICAgICB3aGlsZSAobmV4dEdseXBoIDwgZ2x5cGhCdWZmZXIuc2l6ZSgp
KSB7CkBAIC0xNDc1LDggKzE0NzUsOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogICAgICAg
ICAgICAgc3RhcnRQb2ludC5zZXRYKG5leHRYKTsKICAgICAgICAgICAgIHN0YXJ0UG9pbnQuc2V0
WShuZXh0WSk7CiAgICAgICAgIH0KLSAgICAgICAgbmV4dFggKz0gZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KG5leHRHbHlwaCkud2lkdGgoKTsKLSAgICAgICAgbmV4dFkgKz0gZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KG5leHRHbHlwaCkuaGVpZ2h0KCk7CisgICAgICAgIG5leHRYICs9IFdlYkNvcmU6Ondp
ZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKKyAgICAgICAgbmV4dFkgKz0g
aGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdChuZXh0R2x5cGgpKTsKICAgICAgICAgbmV4dEds
eXBoKys7CiAgICAgfQogCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVm
ZmVyJgogICAgIEdseXBoQnVmZmVyIG1hcmtCdWZmZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSArIDEgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBmbG9hdCBtaWRk
bGVPZk5leHRHbHlwaCA9IG9mZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIs
IGkgKyAxKTsKLSAgICAgICAgZmxvYXQgYWR2YW5jZSA9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KS53aWR0aCgpIC0gbWlkZGxlT2ZMYXN0R2x5cGggKyBtaWRkbGVPZk5leHRHbHlwaDsKKyAgICAg
ICAgZmxvYXQgYWR2YW5jZSA9IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KSkgLSBtaWRkbGVPZkxhc3RHbHlwaCArIG1pZGRsZU9mTmV4dEdseXBoOwogICAgICAgICBtYXJr
QnVmZmVyLmFkZChnbHlwaEJ1ZmZlci5nbHlwaEF0KGkpID8gbWFya0dseXBoIDogc3BhY2VHbHlw
aCwgKm1hcmtGb250RGF0YSwgYWR2YW5jZSk7CiAgICAgICAgIG1pZGRsZU9mTGFzdEdseXBoID0g
bWlkZGxlT2ZOZXh0R2x5cGg7CiAgICAgfQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgc3RkOjpwYWly
PGZsb2F0LCBmbG9hdD4gR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpleHRlbnRzKCkKIHsKICAgICBh
dXRvIGJlZ2lubmluZyA9IG1fdHJhbnNsYXRpb24ubWFwUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7
CiAgICAgYXV0byBhZHZhbmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9pbmRleCk7Ci0g
ICAgYXV0byBlbmQgPSBtX3RyYW5zbGF0aW9uLm1hcFNpemUoRmxvYXRTaXplKGFkdmFuY2Uud2lk
dGgoKSwgYWR2YW5jZS5oZWlnaHQoKSkpOworICAgIGF1dG8gZW5kID0gbV90cmFuc2xhdGlvbi5t
YXBTaXplKHNpemUoYWR2YW5jZSkpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdpbm5p
bmcueCgpLCBiZWdpbm5pbmcueCgpICsgZW5kLndpZHRoKCkpOwogfQogCkBAIC0xNzc4LDcgKzE3
NzgsNyBAQCBhdXRvIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6dW5kZXJsaW5lVHlwZSgpIC0+IEds
eXBoVW5kZXJsaW5lVHlwZQogdm9pZCBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQog
ewogICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNl
QXQobV9pbmRleCk7Ci0gICAgbV90cmFuc2xhdGlvbi50cmFuc2xhdGUoRmxvYXRTaXplKGFkdmFu
Y2Uud2lkdGgoKSwgYWR2YW5jZS5oZWlnaHQoKSkpOworICAgIG1fdHJhbnNsYXRpb24udHJhbnNs
YXRlKHNpemUoYWR2YW5jZSkpOwogICAgICsrbV9pbmRleDsKICAgICBpZiAobV9pbmRleCA8IG1f
Z2x5cGhCdWZmZXIuc2l6ZSgpKQogICAgICAgICBtX2ZvbnREYXRhID0gJm1fZ2x5cGhCdWZmZXIu
Zm9udEF0KG1faW5kZXgpOwpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgRGFzaEFycmF5IEZvbnRDYXNj
YWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdAogICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gRGFzaEFy
cmF5KCk7CiAKLSAgICBGbG9hdFBvaW50IG9yaWdpbiA9IHRleHRPcmlnaW4gKyBGbG9hdFNpemUo
Z2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CisgICAgRmxvYXRQb2ludCBvcmlnaW4gPSB0
ZXh0T3JpZ2luICsgV2ViQ29yZTo6c2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKTsK
ICAgICBHbHlwaFRvUGF0aFRyYW5zbGF0b3IgdHJhbnNsYXRvcihydW4sIGdseXBoQnVmZmVyLCBv
cmlnaW4pOwogICAgIERhc2hBcnJheSByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IHRyYW5zbGF0b3IuY29udGFpbnNNb3JlUGF0aHMoKTsgKytpbmRleCwgdHJhbnNsYXRvci5h
ZHZhbmNlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dseXBoQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1
ZmZlci5oCmluZGV4IGQ3MDMxOWMxNTcxMGM5ZTU5ZTIwODVhYTg4MmZlOGY0ZjM2MjA5ZDkuLjgz
Nzg3MzBjODM3NWZhYTY1NDI0NjU2ZTk0ODQ5OTFlZjhjNGFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtMzIsMTQxICszMiwxNSBA
QAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNs
dWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIkdseXBoQnVmZmVyTWVtYmVycy5oIgogI2luY2x1ZGUg
PGNsaW1pdHM+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAot
I2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udDsKIAotI2lmIFVTRShXSU5HREkp
Ci10eXBlZGVmIHdjaGFyX3QgR2x5cGhCdWZmZXJHbHlwaDsKLSNlbHNlCi10eXBlZGVmIEdseXBo
IEdseXBoQnVmZmVyR2x5cGg7Ci0jZW5kaWYKLQotLy8gQ0cgdXNlcyBDR1NpemUgaW5zdGVhZCBv
ZiBGbG9hdFNpemUgc28gdGhhdCB0aGUgcmVzdWx0IG9mIGFkdmFuY2VzKCkKLS8vIGNhbiBiZSBw
YXNzZWQgZGlyZWN0bHkgdG8gQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyBpbiBGb250
TWFjLm1tCi0jaWYgVVNFKENHKQotCi1zdHJ1Y3QgR2x5cGhCdWZmZXJBZHZhbmNlIDogQ0dTaXpl
IHsKLXB1YmxpYzoKLSAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoKQotICAgICAgICA6IENHU2l6ZShD
R1NpemVaZXJvKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhCdWZmZXJBZHZhbmNlKEZsb2F0U2l6
ZSBzaXplKQotICAgICAgICA6IENHU2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0gICAgR2x5cGhC
dWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi0gICAgICAgIDogQ0dTaXpl
KENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCkpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNv
ZGUoRGVjb2RlciYpOwotCi0gICAgb3BlcmF0b3IgRmxvYXRTaXplKCkgeyByZXR1cm4geyBzdGF0
aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dTaXplOjp3aWR0aCksIHN0YXRpY19jYXN0PGZsb2F0Pih0
aGlzLT5DR1NpemU6OmhlaWdodCkgfTsgfQotCi0gICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0
aCkgeyB0aGlzLT5DR1NpemU6OndpZHRoID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEhlaWdodChm
bG9hdCBoZWlnaHQpIHsgdGhpcy0+Q0dTaXplOjpoZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICBmbG9h
dCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHU2l6ZTo6d2lkdGg7IH0KLSAgICBmbG9h
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1NpemU6OmhlaWdodDsgfQotfTsKLQot
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgR2x5cGhCdWZmZXJBZHZhbmNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHdpZHRoKCk7Ci0gICAg
ZW5jb2RlciA8PCBoZWlnaHQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gR2x5cGhCdWZmZXJBZHZhbmNlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxmbG9hdD4gd2lkdGg7Ci0gICAgZGVjb2RlciA+
PiB3aWR0aDsKLSAgICBpZiAoIXdpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IGhlaWdodDsKLSAgICBkZWNvZGVyID4+IGhlaWdodDsKLSAg
ICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVy
biBHbHlwaEJ1ZmZlckFkdmFuY2UoKndpZHRoLCAqaGVpZ2h0KTsKLX0KLQotc3RydWN0IEdseXBo
QnVmZmVyT3JpZ2luIDogQ0dQb2ludCB7Ci1wdWJsaWM6Ci0gICAgR2x5cGhCdWZmZXJPcmlnaW4o
KQotICAgICAgICA6IENHUG9pbnQoQ0dQb2ludFplcm8pCi0gICAgewotICAgIH0KLSAgICBHbHlw
aEJ1ZmZlck9yaWdpbihGbG9hdFBvaW50IHBvaW50KQotICAgICAgICA6IENHUG9pbnQocG9pbnQp
Ci0gICAgewotICAgIH0KLSAgICBHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCB4LCBmbG9hdCB5KQot
ICAgICAgICA6IENHUG9pbnQoQ0dQb2ludE1ha2UoeCwgeSkpCi0gICAgewotICAgIH0KLQotICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJPcmln
aW4+IGRlY29kZShEZWNvZGVyJik7Ci0KLSAgICBvcGVyYXRvciBGbG9hdFBvaW50KCkgeyByZXR1
cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odGhpcy0+Q0dQb2ludDo6eCksIHN0YXRpY19jYXN0PGZs
b2F0Pih0aGlzLT5DR1BvaW50Ojp5KSB9OyB9Ci0KLSAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyB0
aGlzLT5DR1BvaW50Ojp4ID0geDsgfQotICAgIHZvaWQgc2V0WShmbG9hdCB5KSB7IHRoaXMtPkNH
UG9pbnQ6OnkgPSB5OyB9Ci0gICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNHUG9p
bnQ6Ong7IH0KLSAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+Q0dQb2ludDo6eTsg
fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgR2x5cGhCdWZmZXJPcmlnaW46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgeCgpOwot
ICAgIGVuY29kZXIgPDwgeSgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8R2x5cGhCdWZmZXJPcmlnaW4+IEdseXBoQnVmZmVyT3JpZ2luOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxmbG9hdD4geDsKLSAgICBkZWNvZGVyID4+IHg7Ci0g
ICAgaWYgKCF4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
ZmxvYXQ+IHk7Ci0gICAgZGVjb2RlciA+PiB5OwotICAgIGlmICgheSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBHbHlwaEJ1ZmZlck9yaWdpbigqeCwgKnkpOwot
fQotCi11c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IENGSW5kZXg7Ci0KLSNlbHNlCi0K
LXVzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6ZTsKLXVzaW5nIEdseXBoQnVmZmVy
T3JpZ2luID0gRmxvYXRQb2ludDsKLXVzaW5nIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0ID0gdW5z
aWduZWQ7Ci0KLSNlbmRpZiAvLyAjaWYgVVNFKENHKQotCi1pbmxpbmUgRmxvYXRTaXplIHRvRmxv
YXRTaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYSkKLXsKLSAgICByZXR1cm4gRmxvYXRT
aXplKGEud2lkdGgoKSwgYS5oZWlnaHQoKSk7Ci19Ci0KIGNsYXNzIEdseXBoQnVmZmVyIHsKIHB1
YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRzLmlzRW1wdHko
KTsgfQpAQCAtMjA0LDE5ICs3OCwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluaXRpYWxB
ZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2YW5jZSkgeyBtX2luaXRpYWxBZHZh
bmNlID0gaW5pdGlhbEFkdmFuY2U7IH0KICAgICBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGlu
aXRpYWxBZHZhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsQWR2YW5jZTsgfQotICAgIHZv
aWQgZXhwYW5kSW5pdGlhbEFkdmFuY2UoZmxvYXQgd2lkdGgpIHsgbV9pbml0aWFsQWR2YW5jZS5z
ZXRXaWR0aChtX2luaXRpYWxBZHZhbmNlLndpZHRoKCkgKyB3aWR0aCk7IH0KKyAgICB2b2lkIGV4
cGFuZEluaXRpYWxBZHZhbmNlKGZsb2F0IHdpZHRoKSB7IHNldFdpZHRoKG1faW5pdGlhbEFkdmFu
Y2UsIFdlYkNvcmU6OndpZHRoKG1faW5pdGlhbEFkdmFuY2UpICsgd2lkdGgpOyB9CiAgICAgdm9p
ZCBleHBhbmRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2UgYWRkaXRpb25hbEFkdmFu
Y2UpCiAgICAgewotICAgICAgICBtX2luaXRpYWxBZHZhbmNlLnNldFdpZHRoKG1faW5pdGlhbEFk
dmFuY2Uud2lkdGgoKSArIGFkZGl0aW9uYWxBZHZhbmNlLndpZHRoKCkpOwotICAgICAgICBtX2lu
aXRpYWxBZHZhbmNlLnNldEhlaWdodChtX2luaXRpYWxBZHZhbmNlLmhlaWdodCgpICsgYWRkaXRp
b25hbEFkdmFuY2UuaGVpZ2h0KCkpOworICAgICAgICBzZXRXaWR0aChtX2luaXRpYWxBZHZhbmNl
LCB3aWR0aChtX2luaXRpYWxBZHZhbmNlKSArIHdpZHRoKGFkZGl0aW9uYWxBZHZhbmNlKSk7Cisg
ICAgICAgIHNldEhlaWdodChtX2luaXRpYWxBZHZhbmNlLCBoZWlnaHQobV9pbml0aWFsQWR2YW5j
ZSkgKyBoZWlnaHQoYWRkaXRpb25hbEFkdmFuY2UpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBub09mZnNldCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+OjptYXgoKTsKICAgICB2b2lkIGFkZChH
bHlwaCBnbHlwaCwgY29uc3QgRm9udCYgZm9udCwgZmxvYXQgd2lkdGgsIEdseXBoQnVmZmVyU3Ry
aW5nT2Zmc2V0IG9mZnNldEluU3RyaW5nID0gbm9PZmZzZXQpCiAgICAgewotICAgICAgICBHbHlw
aEJ1ZmZlckFkdmFuY2UgYWR2YW5jZTsKLSAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCh3aWR0aCk7
Ci0gICAgICAgIGFkdmFuY2Uuc2V0SGVpZ2h0KDApOworICAgICAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2Uod2lkdGgsIDApOwogICAgICAgICBh
ZGQoZ2x5cGgsIGZvbnQsIGFkdmFuY2UsIG9mZnNldEluU3RyaW5nKTsKICAgICB9CiAKQEAgLTIy
NSw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb250cy5hcHBlbmQoJmZvbnQpOwogICAg
ICAgICBtX2dseXBocy5hcHBlbmQoZ2x5cGgpOwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChh
ZHZhbmNlKTsKLSAgICAgICAgbV9vcmlnaW5zLmFwcGVuZChHbHlwaEJ1ZmZlck9yaWdpbigpKTsK
KyAgICAgICAgbV9vcmlnaW5zLmFwcGVuZChtYWtlR2x5cGhCdWZmZXJPcmlnaW4oKSk7CiAgICAg
ICAgIG1fb2Zmc2V0c0luU3RyaW5nLmFwcGVuZChvZmZzZXRJblN0cmluZyk7CiAgICAgfQogCkBA
IC0yNDMsOSArMTE1LDkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobG9jYXRpb24gPD0gc2l6
ZSgpKTsKIAogICAgICAgICBtX2ZvbnRzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPGNv
bnN0IEZvbnQqPihsZW5ndGgsIGZvbnQpKTsKLSAgICAgICAgbV9nbHlwaHMuaW5zZXJ0VmVjdG9y
KGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaD4obGVuZ3RoLCAweEZGRkYpKTsKLSAg
ICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZl
ckFkdmFuY2U+KGxlbmd0aCwgR2x5cGhCdWZmZXJBZHZhbmNlKDAsIDApKSk7Ci0gICAgICAgIG1f
b3JpZ2lucy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4o
bGVuZ3RoLCBHbHlwaEJ1ZmZlck9yaWdpbigpKSk7CisgICAgICAgIG1fZ2x5cGhzLmluc2VydFZl
Y3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+KGxlbmd0aCwgc3RkOjpudW1l
cmljX2xpbWl0czxHbHlwaEJ1ZmZlckdseXBoPjo6bWF4KCkpKTsKKyAgICAgICAgbV9hZHZhbmNl
cy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2U+KGxlbmd0
aCwgbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpKSk7CisgICAgICAgIG1fb3JpZ2lucy5pbnNlcnRW
ZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlck9yaWdpbj4obGVuZ3RoLCBtYWtlR2x5
cGhCdWZmZXJPcmlnaW4oKSkpOwogICAgICAgICBtX29mZnNldHNJblN0cmluZy5pbnNlcnRWZWN0
b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4obGVuZ3RoLCAwKSk7
CiAgICAgfQogCkBAIC0yNTksMjIgKzEzMSwyMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSYgbGFzdEFkdmFu
Y2UgPSBtX2FkdmFuY2VzLmxhc3QoKTsKLSAgICAgICAgbGFzdEFkdmFuY2Uuc2V0V2lkdGgobGFz
dEFkdmFuY2Uud2lkdGgoKSArIHdpZHRoKTsKKyAgICAgICAgc2V0V2lkdGgobGFzdEFkdmFuY2Us
IFdlYkNvcmU6OndpZHRoKGxhc3RBZHZhbmNlKSArIHdpZHRoKTsKICAgICB9CiAKICAgICB2b2lk
IGV4cGFuZEFkdmFuY2UodW5zaWduZWQgaW5kZXgsIGZsb2F0IHdpZHRoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKICAgICAgICAgYXV0byYgbGFzdEFkdmFuY2UgPSBt
X2FkdmFuY2VzW2luZGV4XTsKLSAgICAgICAgbGFzdEFkdmFuY2Uuc2V0V2lkdGgobGFzdEFkdmFu
Y2Uud2lkdGgoKSArIHdpZHRoKTsKKyAgICAgICAgc2V0V2lkdGgobGFzdEFkdmFuY2UsIFdlYkNv
cmU6OndpZHRoKGxhc3RBZHZhbmNlKSArIHdpZHRoKTsKICAgICB9CiAKICAgICB2b2lkIGV4cGFu
ZExhc3RBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSBleHBhbnNpb24pCiAgICAgewogICAgICAg
ICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSYgbGFzdEFk
dmFuY2UgPSBtX2FkdmFuY2VzLmxhc3QoKTsKLSAgICAgICAgbGFzdEFkdmFuY2Uuc2V0V2lkdGgo
bGFzdEFkdmFuY2Uud2lkdGgoKSArIGV4cGFuc2lvbi53aWR0aCgpKTsKLSAgICAgICAgbGFzdEFk
dmFuY2Uuc2V0SGVpZ2h0KGxhc3RBZHZhbmNlLmhlaWdodCgpICsgZXhwYW5zaW9uLmhlaWdodCgp
KTsKKyAgICAgICAgc2V0V2lkdGgobGFzdEFkdmFuY2UsIHdpZHRoKGxhc3RBZHZhbmNlKSArIHdp
ZHRoKGV4cGFuc2lvbikpOworICAgICAgICBzZXRIZWlnaHQobGFzdEFkdmFuY2UsIGhlaWdodChs
YXN0QWR2YW5jZSkgKyBoZWlnaHQoZXhwYW5zaW9uKSk7CiAgICAgfQogCiAgICAgdm9pZCBzaHJp
bmsodW5zaWduZWQgdHJ1bmNhdGlvblBvaW50KQpAQCAtMjk1LDE4ICsxNjcsMTggQEAgcHVibGlj
OgogICAgIHZvaWQgZmxhdHRlbigpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIG1fYWR2YW5jZXNbaV0gPSBHbHlwaEJ1
ZmZlckFkdmFuY2UoCi0gICAgICAgICAgICAgICAgLW1fb3JpZ2luc1tpXS54KCkgKyBtX2FkdmFu
Y2VzW2ldLndpZHRoKCkgKyAoaSArIDEgPCBzaXplKCkgPyBtX29yaWdpbnNbaSArIDFdLngoKSA6
IDApLAotICAgICAgICAgICAgICAgIC1tX29yaWdpbnNbaV0ueSgpICsgbV9hZHZhbmNlc1tpXS5o
ZWlnaHQoKSArIChpICsgMSA8IHNpemUoKSA/IG1fb3JpZ2luc1tpICsgMV0ueSgpIDogMCkKKyAg
ICAgICAgICAgIG1fYWR2YW5jZXNbaV0gPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKAorICAgICAg
ICAgICAgICAgIC14KG1fb3JpZ2luc1tpXSkgKyB3aWR0aChtX2FkdmFuY2VzW2ldKSArIChpICsg
MSA8IHNpemUoKSA/IHgobV9vcmlnaW5zW2kgKyAxXSkgOiAwKSwKKyAgICAgICAgICAgICAgICAt
eShtX29yaWdpbnNbaV0pICsgaGVpZ2h0KG1fYWR2YW5jZXNbaV0pICsgKGkgKyAxIDwgc2l6ZSgp
ID8geShtX29yaWdpbnNbaSArIDFdKSA6IDApCiAgICAgICAgICAgICApOwotICAgICAgICAgICAg
bV9vcmlnaW5zW2ldID0gR2x5cGhCdWZmZXJPcmlnaW4oKTsKKyAgICAgICAgICAgIG1fb3JpZ2lu
c1tpXSA9IG1ha2VHbHlwaEJ1ZmZlck9yaWdpbigpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ym9vbCBpc0ZsYXR0ZW5lZCgpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX29yaWdpbnNbaV0gIT0g
R2x5cGhCdWZmZXJPcmlnaW4oKSkKKyAgICAgICAgICAgIGlmIChtX29yaWdpbnNbaV0gIT0gbWFr
ZUdseXBoQnVmZmVyT3JpZ2luKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQxLDcgKzIxMyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTAyND4gbV9hZHZhbmNlczsKICAgICBW
ZWN0b3I8R2x5cGhCdWZmZXJPcmlnaW4sIDEwMjQ+IG1fb3JpZ2luczsKICAgICBWZWN0b3I8R2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQsIDEwMjQ+IG1fb2Zmc2V0c0luU3RyaW5nOwotICAgIEdseXBo
QnVmZmVyQWR2YW5jZSBtX2luaXRpYWxBZHZhbmNlOworICAgIEdseXBoQnVmZmVyQWR2YW5jZSBt
X2luaXRpYWxBZHZhbmNlIHsgbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpIH07CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlck1l
bWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyTWVt
YmVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjExNWQ1YThmMzdmZGRiN2U3N2FlMjE5NzlmMzkwNDhiZWQzMmZk
MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlck1lbWJlcnMuaApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgorI2luY2x1ZGUgIkdseXBoLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
VVNFKENHKQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0ZvbnQuaD4KKyNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gVGhlIENHIHBvcnRzIHVzZSB0aGUgQ0cgdHlwZXMgZGlyZWN0bHksIHNvIGFuIGFycmF5IG9m
IHRoZXNlIHR5cGVzIGNhbiBiZSBmZWQgZGlyZWN0bHkgaW50byBDVEZvbnRTaGFwZUdseXBocygp
LgorI2lmIFVTRShDRykKK3VzaW5nIEdseXBoQnVmZmVyR2x5cGggPSBDR0dseXBoOwordXNpbmcg
R2x5cGhCdWZmZXJBZHZhbmNlID0gQ0dTaXplOwordXNpbmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBD
R1BvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSBDRkluZGV4OworI2VsaWYg
VVNFKFdJTkdESSkKK3VzaW5nIEdseXBoQnVmZmVyR2x5cGggPSB3Y2hhcl90OwordXNpbmcgR2x5
cGhCdWZmZXJBZHZhbmNlID0gRmxvYXRTaXplOwordXNpbmcgR2x5cGhCdWZmZXJPcmlnaW4gPSBG
bG9hdFBvaW50OwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSB1bnNpZ25lZDsKKyNl
bHNlCit1c2luZyBHbHlwaEJ1ZmZlckdseXBoID0gR2x5cGg7Cit1c2luZyBHbHlwaEJ1ZmZlckFk
dmFuY2UgPSBGbG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1ZmZlck9yaWdpbiA9IEZsb2F0UG9pbnQ7
Cit1c2luZyBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCA9IHVuc2lnbmVkOworI2VuZGlmCisKK2lu
bGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5jZShjb25zdCBGbG9h
dFNpemUmKTsKK2lubGluZSBHbHlwaEJ1ZmZlckFkdmFuY2UgbWFrZUdseXBoQnVmZmVyQWR2YW5j
ZShmbG9hdCA9IDAsIGZsb2F0ID0gMCk7CitpbmxpbmUgRmxvYXRTaXplIHNpemUoY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlJik7CitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFu
Y2UmLCBmbG9hdCk7CitpbmxpbmUgdm9pZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiwg
ZmxvYXQpOworaW5saW5lIGZsb2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYpOwor
aW5saW5lIGZsb2F0IGhlaWdodChjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmKTsKK2lubGluZSBH
bHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYp
OworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihmbG9hdCA9
IDAsIGZsb2F0ID0gMCk7CitpbmxpbmUgRmxvYXRQb2ludCBwb2ludChjb25zdCBHbHlwaEJ1ZmZl
ck9yaWdpbiYpOworaW5saW5lIHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYsIGZsb2F0KTsK
K2lubGluZSB2b2lkIHNldFkoR2x5cGhCdWZmZXJPcmlnaW4mLCBmbG9hdCk7CitpbmxpbmUgZmxv
YXQgeChjb25zdCBHbHlwaEJ1ZmZlck9yaWdpbiYpOworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5
cGhCdWZmZXJPcmlnaW4mKTsKKworI2lmIFVTRShDRykKKworaW5saW5lIEdseXBoQnVmZmVyQWR2
YW5jZSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAg
ICByZXR1cm4gQ0dTaXplTWFrZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitp
bmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCkKK3sKKyAgICByZXR1cm4gQ0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0
KTsKK30KKworaW5saW5lIEZsb2F0U2l6ZSBzaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYg
YWR2YW5jZSkKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGFkdmFuY2Uud2lkdGgsIGFkdmFuY2Uu
aGVpZ2h0KTsKK30KKworaW5saW5lIHZvaWQgc2V0V2lkdGgoR2x5cGhCdWZmZXJBZHZhbmNlJiBh
ZHZhbmNlLCBmbG9hdCB3aWR0aCkKK3sKKyAgICBhZHZhbmNlLndpZHRoID0gd2lkdGg7Cit9CisK
K2lubGluZSB2b2lkIHNldEhlaWdodChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFkdmFuY2UsIGZsb2F0
IGhlaWdodCkKK3sKKyAgICBhZHZhbmNlLmhlaWdodCA9IGhlaWdodDsKK30KKworaW5saW5lIGZs
b2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1
cm4gYWR2YW5jZS53aWR0aDsKK30KKworaW5saW5lIGZsb2F0IGhlaWdodChjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UmIGFkdmFuY2UpCit7CisgICAgcmV0dXJuIGFkdmFuY2UuaGVpZ2h0OworfQor
CitpbmxpbmUgR2x5cGhCdWZmZXJPcmlnaW4gbWFrZUdseXBoQnVmZmVyT3JpZ2luKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShwb2ludC54KCksIHBv
aW50LnkoKSk7Cit9CisKK2lubGluZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJP
cmlnaW4oZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoeCwgeSk7
Cit9CisKK2lubGluZSBGbG9hdFBvaW50IHBvaW50KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBv
cmlnaW4pCit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQob3JpZ2luLngsIG9yaWdpbi55KTsKK30K
KworaW5saW5lIHZvaWQgc2V0WChHbHlwaEJ1ZmZlck9yaWdpbiYgb3JpZ2luLCBmbG9hdCB4KQor
eworICAgIG9yaWdpbi54ID0geDsKK30KKworaW5saW5lIHZvaWQgc2V0WShHbHlwaEJ1ZmZlck9y
aWdpbiYgb3JpZ2luLCBmbG9hdCB5KQoreworICAgIG9yaWdpbi55ID0geTsKK30KKworaW5saW5l
IGZsb2F0IHgoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
b3JpZ2luLng7Cit9CisKK2lubGluZSBmbG9hdCB5KGNvbnN0IEdseXBoQnVmZmVyT3JpZ2luJiBv
cmlnaW4pCit7CisgICAgcmV0dXJuIG9yaWdpbi55OworfQorCisjZWxzZQorCitpbmxpbmUgR2x5
cGhCdWZmZXJBZHZhbmNlIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgRmxvYXRTaXplJiBz
aXplKQoreworICAgIHJldHVybiBzaXplOworfQorCitpbmxpbmUgR2x5cGhCdWZmZXJBZHZhbmNl
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3sKKyAg
ICByZXR1cm4gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitpbmxpbmUgRmxvYXRTaXpl
IHNpemUoY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlKQoreworICAgIHJldHVybiBh
ZHZhbmNlOworfQorCitpbmxpbmUgdm9pZCBzZXRXaWR0aChHbHlwaEJ1ZmZlckFkdmFuY2UmIGFk
dmFuY2UsIGZsb2F0IHdpZHRoKQoreworICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOworfQor
CitpbmxpbmUgdm9pZCBzZXRIZWlnaHQoR2x5cGhCdWZmZXJBZHZhbmNlJiBhZHZhbmNlLCBmbG9h
dCBoZWlnaHQpCit7CisgICAgYWR2YW5jZS5zZXRIZWlnaHQoaGVpZ2h0KTsKK30KKworaW5saW5l
IGZsb2F0IHdpZHRoKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICBy
ZXR1cm4gYWR2YW5jZS53aWR0aCgpOworfQorCitpbmxpbmUgZmxvYXQgaGVpZ2h0KGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSYgYWR2YW5jZSkKK3sKKyAgICByZXR1cm4gYWR2YW5jZS5oZWlnaHQo
KTsKK30KKworaW5saW5lIEdseXBoQnVmZmVyT3JpZ2luIG1ha2VHbHlwaEJ1ZmZlck9yaWdpbihj
b25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcG9pbnQ7Cit9CisKK2lubGlu
ZSBHbHlwaEJ1ZmZlck9yaWdpbiBtYWtlR2x5cGhCdWZmZXJPcmlnaW4oZmxvYXQgeCwgZmxvYXQg
eSkKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KTsKK30KKworaW5saW5lIEZsb2F0UG9p
bnQgcG9pbnQoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
b3JpZ2luOworfQorCitpbmxpbmUgdm9pZCBzZXRYKEdseXBoQnVmZmVyT3JpZ2luJiBvcmlnaW4s
IGZsb2F0IHgpCit7CisgICAgb3JpZ2luLnNldFgoeCk7Cit9CisKK2lubGluZSB2b2lkIHNldFko
R2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbiwgZmxvYXQgeSkKK3sKKyAgICBvcmlnaW4uc2V0WSh5
KTsKK30KKworaW5saW5lIGZsb2F0IHgoY29uc3QgR2x5cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikK
K3sKKyAgICByZXR1cm4gb3JpZ2luLngoKTsKK30KKworaW5saW5lIGZsb2F0IHkoY29uc3QgR2x5
cGhCdWZmZXJPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4gb3JpZ2luLnkoKTsKK30KKwor
I2VuZGlmIC8vICNpZiBVU0UoQ0cpCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMTE4MzcyZWJhODFmZmUzNGU4ZjYz
ZmMyMTc2ZWIxY2QyMTI4MzA1Ni4uYTg4NjY3NWM0YjUzNDU4MWI4MGE2MzY4MGNjMGViNDk1OWFj
OWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRv
cjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgog
ICAgIEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcygw
KTsKICAgICBmbG9hdCBiZWZvcmVXaWR0aCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFz
dEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKLSAgICAgICAgYmVmb3JlV2lk
dGggKz0gYWR2YW5jZXNbaV0ud2lkdGgoKTsKKyAgICAgICAgYmVmb3JlV2lkdGggKz0gd2lkdGgo
YWR2YW5jZXNbaV0pOwogCiAgICAgQVNTRVJUKGxhc3RHbHlwaENvdW50IDw9IGdseXBoQnVmZmVy
U2l6ZSk7CiAKQEAgLTExMCw4ICsxMTAsOCBAQCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6
YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogCiAg
ICAgR2x5cGhCdWZmZXJPcmlnaW4qIG9yaWdpbnMgPSBnbHlwaEJ1ZmZlci5vcmlnaW5zKDApOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxhc3RHbHlwaENvdW50OyBpIDwgZ2x5cGhCdWZmZXJTaXpl
OyArK2kpIHsKLSAgICAgICAgYWR2YW5jZXNbaV0uc2V0SGVpZ2h0KC1hZHZhbmNlc1tpXS5oZWln
aHQoKSk7Ci0gICAgICAgIG9yaWdpbnNbaV0uc2V0WSgtb3JpZ2luc1tpXS55KCkpOworICAgICAg
ICBzZXRIZWlnaHQoYWR2YW5jZXNbaV0sIC1oZWlnaHQoYWR2YW5jZXNbaV0pKTsKKyAgICAgICAg
c2V0WShvcmlnaW5zW2ldLCAteShvcmlnaW5zW2ldKSk7CiAgICAgfQogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkgewpAQCAt
MTIzLDE0ICsxMjMsMTQgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRy
YW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ24KICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBjb25zdCBhdXRvJiBvcmlnaW5hbEFkdmFuY2VzID0gKml0ZXJhdG9y
OwogICAgICAgICBpZiAoaSAmJiAhb3JpZ2luYWxBZHZhbmNlcy5jaGFyYWN0ZXJJc1NwYWNlKQot
ICAgICAgICAgICAgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLT5zZXRXaWR0aChvcmlnaW5h
bEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIpOwotICAgICAgICBnbHlwaEJ1ZmZlci5h
ZHZhbmNlcyhpKS0+c2V0V2lkdGgob3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0ZXIp
OworICAgICAgICAgICAgc2V0V2lkdGgoKmdseXBoQnVmZmVyLmFkdmFuY2VzKGkgLSAxKSwgb3Jp
Z2luYWxBZHZhbmNlcy5hZHZhbmNlQmVmb3JlQ2hhcmFjdGVyKTsKKyAgICAgICAgc2V0V2lkdGgo
KmdseXBoQnVmZmVyLmFkdmFuY2VzKGkpLCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VBdENoYXJh
Y3Rlcik7CiAgICAgfQogICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jbGVhcigpOwogCiAg
ICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFzdEdseXBo
Q291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKLSAgICAgICAgYWZ0ZXJXaWR0aCArPSBh
ZHZhbmNlc1tpXS53aWR0aCgpOworICAgICAgICBhZnRlcldpZHRoICs9IHdpZHRoKGFkdmFuY2Vz
W2ldKTsKIAogICAgIHJldHVybiBhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGg7CiB9CkBAIC0yNDgs
NyArMjQ4LDcgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFsKFRl
eHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAgICAgICAgICAgIGNoYXJhY3Rl
cnNUcmVhdGVkQXNTcGFjZS5jb25zdHJ1Y3RBbmRBcHBlbmQoCiAgICAgICAgICAgICAgICAgY3Vy
cmVudENoYXJhY3RlckluZGV4LAogICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9PSAnICcsCi0g
ICAgICAgICAgICAgICAgZ2x5cGhCdWZmZXIuc2l6ZSgpID8gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGdseXBoQnVmZmVyLnNpemUoKSAtIDEpLndpZHRoKCkgOiAwLAorICAgICAgICAgICAgICAgIGds
eXBoQnVmZmVyLnNpemUoKSA/IFdlYkNvcmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChn
bHlwaEJ1ZmZlci5zaXplKCkgLSAxKSkgOiAwLAogICAgICAgICAgICAgICAgIHdpZHRoKTsKICAg
ICAgICAgfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9yOjpjYWxjdWxh
dGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlwaEJ1ZmYKICAg
ICBpZiAoY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlciAmJiBtX3J1bi5hbGxvd1RhYnMoKSkgewog
ICAgICAgICBhdXRvJiBmb250ID0gZ2x5cGhCdWZmZXIuZm9udEF0KHRyYWlsaW5nR2x5cGhJbmRl
eCk7CiAgICAgICAgIGF1dG8gbmV3V2lkdGggPSBtX2ZvbnQudGFiV2lkdGgoZm9udCwgbV9ydW4u
dGFiU2l6ZSgpLCBwb3NpdGlvbik7Ci0gICAgICAgIGF1dG8gY3VycmVudFdpZHRoID0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KHRyYWlsaW5nR2x5cGhJbmRleCkud2lkdGgoKTsKKyAgICAgICAgYXV0
byBjdXJyZW50V2lkdGggPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQodHJhaWxpbmdHbHlw
aEluZGV4KSk7CiAgICAgICAgIHJpZ2h0QWRkaXRpb25hbFdpZHRoICs9IG5ld1dpZHRoIC0gY3Vy
cmVudFdpZHRoOwogICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIGF1dG8gV2lkdGhJdGVyYXRv
cjo6Y2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgR2x5
cGhCdWZmCiAgICAgICAgIC8vIFRoaXMgaXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSBjaGFyYWN0ZXIgaXMgbm9uLXZpc2libGUuIE5vbi12aXNpYmxlIGNoYXJhY3RlcnMgZG9uJ3Qg
Z2V0IGxldHRlci1zcGFjaW5nLgogICAgICAgICBmbG9hdCBiYXNlV2lkdGggPSAwOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZWFkaW5nR2x5cGhJbmRleDsgaSA8PSB0cmFpbGluZ0dseXBo
SW5kZXg7ICsraSkKLSAgICAgICAgICAgIGJhc2VXaWR0aCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGJhc2VXaWR0aCArPSB3aWR0aChnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBpZiAoYmFzZVdpZHRoKQogICAgICAgICAgICAgcmln
aHRBZGRpdGlvbmFsV2lkdGggKz0gbV9mb250LmxldHRlclNwYWNpbmcoKTsKIApAQCAtMzg4LDcg
KzM4OCw3IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBp
bmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgVmVjdG9yPGZsb2F0PiBhZHZh
bmNlV2lkdGhzKG1fcnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBnbHlw
aEJ1ZmZlclN0YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAg
ICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLnN0cmluZ09mZnNldEF0KGkpOwotICAg
ICAgICBhZHZhbmNlV2lkdGhzW3N0cmluZ09mZnNldF0gKz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpLndpZHRoKCk7CisgICAgICAgIGFkdmFuY2VXaWR0aHNbc3RyaW5nT2Zmc2V0XSArPSB3aWR0
aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBhdXRvJiBnbHlwaEluZGV4UmFu
Z2UgPSBjaGFyYWN0ZXJJbmRleFRvR2x5cGhJbmRleFJhbmdlW3N0cmluZ09mZnNldF07CiAgICAg
ICAgIGlmIChnbHlwaEluZGV4UmFuZ2UpCiAgICAgICAgICAgICBnbHlwaEluZGV4UmFuZ2UtPnRy
YWlsaW5nR2x5cGhJbmRleCA9IGk7CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBXaWR0aEl0ZXJh
dG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIHVuc2kKICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFiQ2hhcmFjdGVyKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGN1cnJlbnRBZHZhbmNl
ID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBhdXRvIGN1
cnJlbnRBZHZhbmNlID0gd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICAgICAg
ICAgIGF1dG8gbmV3QWR2YW5jZSA9IGN1cnJlbnRBZHZhbmNlICogbV9ydW4uaG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgpOwogICAgICAgICAgICAgZ2x5cGhCdWZmZXIuZXhwYW5kQWR2YW5jZShpLCBu
ZXdBZHZhbmNlIC0gY3VycmVudEFkdmFuY2UpOwogICAgICAgICB9CkBAIC00OTMsNyArNDkzLDcg
QEAgYm9vbCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlT25lQ2hhcmFjdGVyKGZsb2F0JiB3aWR0aCwg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKQogICAgIGFkdmFuY2UobV9jdXJyZW50Q2hhcmFjdGVy
SW5kZXggKyAxLCBnbHlwaEJ1ZmZlcik7CiAgICAgZmxvYXQgdyA9IDA7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gb2xkU2l6ZTsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICB3
ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICB3ICs9IFdlYkNv
cmU6OndpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKSk7CiAgICAgd2lkdGggPSB3OwogICAg
IHJldHVybiBnbHlwaEJ1ZmZlci5zaXplKCkgPiBvbGRTaXplOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2Eu
bW0KaW5kZXggMmQ4YTdjMDE5MGZiYmEwY2U3YzBhNzQwMjBmNjZlYzc2Mjk3OGM4NC4uMGEyM2Q2
YTUxNGYwYzFlNDJlYTQzZDc1ZTgxZjE3ZjIzMTY2ZGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1t
CkBAIC0yODgsMTggKzI4OCwxOCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBm
bG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAg
ICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVu
J3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZl
LgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5o
ZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwot
ICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNo
YWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0
YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVt
R2x5cGhzKTsKKyAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRv
d1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhz
KGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKICAgICAgICAg
aWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCi0gICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dU
ZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNf
Y2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBo
cyk7CisgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93
VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4
dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwg
bnVtR2x5cGhzKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKICAg
ICB9CiAKICAgICBpZiAodXNlTGV0dGVycHJlc3NFZmZlY3QpCi0gICAgICAgIHNob3dMZXR0ZXJw
cmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjb250ZXh0LCBnbHlwaEJ1ZmZl
ci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKKyAgICAgICAgc2hvd0xldHRlcnByZXNzZWRHbHlw
aHNXaXRoQWR2YW5jZXMocG9pbnQsIGZvbnQsIGNvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgZWxzZQot
ICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGds
eXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOworICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKHBvaW50LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9t
KSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCi0gICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2lu
dChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBjZ0Nv
bnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXpl
Kj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOworICAgICAgICBzaG93
R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9m
ZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKGhh
c1NpbXBsZVNoYWRvdykKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKaW5kZXggMjQ5YTAxODUyYjU4YzIwYTY5YzQxMzMxMDE0NzMzOTljMzJjODU1Ny4uNWFjZDMz
N2QwMzY4NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcApAQCAtNTYzLDEwICs1NjMsMTAgQEAgdm9pZCBEcmF3R2x5cGhzOjpj
b21wdXRlQm91bmRzKCkKICAgICBzaXplX3QgbnVtR2x5cGhzID0gbV9nbHlwaHMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKICAgICAgICAgR2x5
cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtX2FkdmFuY2VzW2ldOwotICAgICAgICBGbG9hdFJl
Y3QgZ2x5cGhSZWN0ID0gRmxvYXRSZWN0KGN1cnJlbnQueCgpLCBjdXJyZW50LnkoKSAtIGFzY2Vu
dCwgYWR2YW5jZS53aWR0aCgpLCBhc2NlbnQgKyBkZXNjZW50KTsKKyAgICAgICAgRmxvYXRSZWN0
IGdseXBoUmVjdCA9IEZsb2F0UmVjdChjdXJyZW50LngoKSwgY3VycmVudC55KCkgLSBhc2NlbnQs
IHdpZHRoKGFkdmFuY2UpLCBhc2NlbnQgKyBkZXNjZW50KTsKICAgICAgICAgbV9ib3VuZHMudW5p
dGUoZ2x5cGhSZWN0KTsKIAotICAgICAgICBjdXJyZW50Lm1vdmUoYWR2YW5jZS53aWR0aCgpLCBh
ZHZhbmNlLmhlaWdodCgpKTsKKyAgICAgICAgY3VycmVudC5tb3ZlKHdpZHRoKGFkdmFuY2UpLCBo
ZWlnaHQoYWR2YW5jZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDExNjFjNTBlNGYxMjZjZDJjZmE4OTRmYmZhNWJiODQy
Y2U3MjMxZTYuLmNhOTlmNTJlYjg0MjJkYjdlMjcwYmUxYTZmZDllNWI0ZWFjNzAwYjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0wOS0wNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgR2x5cGhCdWZmZXJBZHZhbmNlIGFuZCBHbHlwaEJ1ZmZlck9yaWdp
biBtb3JlIHJvYnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIwLTA5LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTGV0dGVyLXNw
YWNpbmcgc2hvdWxkIGRpc2FibGUgbGlnYXR1cmVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IDU1OTMwYzY5NDhhY2NkYmNlOTg1NTEyMTYyNTUwYzBkNzZkOWE4YTkuLmJjZjAzMjk1NWJlMmVi
ZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC04
MCwxNSArODAsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxB
ZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldp
ZHRoU29GYXIoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsKICAgICBjb250cm9sbGVy
LmFkdmFuY2UoNiwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1
bldpZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQ
RUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCks
IDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuaW5pdGlhbEFk
dmFuY2UoKSksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVy
LmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZl
ci5zaXplKCksIDZVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCku
d2lkdGgoKSwgYWR2YW5jZXNbNF0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgYWR2YW5jZXNbM10ud2lkdGgoKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwg
YWR2YW5jZXNbMl0ud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMykud2lkdGgoKSwgYWR2YW5jZXNbMV0ud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkud2lkdGgoKSwgLWluaXRpYWxB
ZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDUpLndpZHRoKCksIHNwYWNlV2lkdGggKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSks
IHdpZHRoKGFkdmFuY2VzWzRdKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCB3aWR0aChhZHZhbmNlc1szXSksIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgd2lkdGgoYWR2YW5j
ZXNbMl0pLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFu
Y2VBdCgzKSksIHdpZHRoKGFkdmFuY2VzWzFdKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3
aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkpLCAtd2lkdGgoaW5pdGlhbEFkdmFuY2UpLCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg1KSks
IHNwYWNlV2lkdGggKyB3aWR0aChpbml0aWFsQWR2YW5jZSksIDAuMDAwMSk7CiB9CiAKIFRFU1Rf
RihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQpAQCAtMTI0
LDE1ICsxMjQsMTUgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxB
ZHZhbmNlSW5SVEwpCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCks
IGFkdmFuY2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDUs
ICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFy
KCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5p
dGlhbEFkdmFuY2UoKS53aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwot
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIGlu
aXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAw
MDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgp
KSwgaW5pdGlhbEFkdmFuY2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBo
QnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgwKS53aWR0aCgpLCBhZHZhbmNlc1s0XS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9O
RUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpLCBhZHZhbmNlc1szXS53aWR0aCgp
LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0
aCgpLCBhZHZhbmNlc1syXS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0aCgpLCBhZHZhbmNlc1sxXS53aWR0aCgpLCAwLjAwMDEp
OwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCAtaW5p
dGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoNCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEp
OworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKSksIGFkdmFu
Y2VzWzRdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZm
ZXIuYWR2YW5jZUF0KDEpKSwgYWR2YW5jZXNbM10ud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBF
Q1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikpLCBhZHZhbmNlc1syXS53aWR0
aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgzKSksIGFkdmFuY2VzWzFdLndpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpKSwgLWluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAu
MDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0KGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KSks
IGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEpOwogfQogCiBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQpAQCAtMTcw
LDEyICsxNzAsMTIgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxB
ZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldp
ZHRoU29GYXIoKSwgc3BhY2VXaWR0aCArIGFkdmFuY2VzWzBdLndpZHRoKCkgKyBpbml0aWFsQWR2
YW5jZS53aWR0aCgpLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgzLCAmZ2x5cGhC
dWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCBzcGFj
ZVdpZHRoICsgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCksIDAsIDAu
MDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWln
aHQoKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0
aWFsQWR2YW5jZSgpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIDAsIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBo
QnVmZmVyLnNpemUoKSwgM1UpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgwKS53aWR0aCgpLCBzcGFjZVdpZHRoICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwgNTMu
MDY2NDA2LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgy
KS53aWR0aCgpLCAyMy4yODEyNTAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5
cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgc3BhY2VXaWR0aCArIGluaXRpYWxBZHZhbmNlLndpZHRo
KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKSwgNTMuMDY2NDA2LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgyKSksIDIzLjI4MTI1MCwgMC4wMDAxKTsKIH0KIAogVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCkBAIC0yMDgsMTEgKzIw
OCwxMSBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJ
bkxUUikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgYWR2YW5j
ZXNbMF0ud2lkdGgoKSArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CiAgICAgY29u
dHJvbGxlci5hZHZhbmNlKDIsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX05FQVIoY29udHJv
bGxlci5ydW5XaWR0aFNvRmFyKCksIDc2LjM0NzY1NiArIGluaXRpYWxBZHZhbmNlLndpZHRoKCks
IDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53
aWR0aCgpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFS
KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIGluaXRpYWxBZHZhbmNlLmhl
aWdodCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRp
YWxBZHZhbmNlKCkpLCBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVD
VF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlhbEFkdmFu
Y2UuaGVpZ2h0KCksIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVyLnNpemUoKSwg
MlUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpLCA1
My4wNjY0MDYsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpLndpZHRoKCksIDIzLjI4MTI1MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChn
bHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkpLCA1My4wNjY0MDYsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwgMjMuMjgxMjUwLCAwLjAwMDEp
OwogfQogCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJ
blJUTE5vT3JpZ2lucykKQEAgLTI1MSwxNCArMjUxLDE0IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMTm9PcmlnaW5zKQogICAgIEVYUEVDVF9O
RUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOwogICAg
IGNvbnRyb2xsZXIuYWR2YW5jZSg0LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9ORUFSKGNv
bnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOwotICAgIEVYUEVD
VF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgaW5pdGlhbEFkdmFu
Y2Uud2lkdGgoKSwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFs
QWR2YW5jZSgpLmhlaWdodCgpLCBpbml0aWFsQWR2YW5jZS5oZWlnaHQoKSwgMC4wMDAxKTsKKyAg
ICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSwgaW5pdGlh
bEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKSksIGluaXRpYWxBZHZhbmNlLmhlaWdodCgpLCAwLjAwMDEp
OwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDRVKTsKLSAgICBFWFBFQ1RfTkVB
UihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgNDMuODExOTM0OTAwNTQyNSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSwg
MTIuMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMiku
d2lkdGgoKSwgMTQuMDM5NzgzMDAxODA4MywgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7
Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpLmhlaWdodCgpLCAxMi4z
Njg4OTY5MjU4NTksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDApKSwgNDMuODExOTM0OTAwNTQyNSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uih3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkpLCAxMi4wLCAwLjAwMDEpOworICAgIEVY
UEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSksIDE0LjAzOTc4MzAwMTgw
ODMsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDMpKSwgLTQuMzM5OTYzODMzNjM0NzIsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVpZ2h0
KGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKSksIDEyLjM2ODg5NjkyNTg1OSwgMC4wMDAxKTsKIH0K
IAogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCkBAIC0y
ODUsMTAgKzI4NSwxMCBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVmdEV4
cGFuc2lvbikKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwg
MC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoMSwgJmdseXBoQnVmZmVyKTsKICAgICBF
WFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgdG90YWxXaWR0aCwgMC4wMDAx
KTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCks
IDEwMCwgMC4wMDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5j
ZSgpLmhlaWdodCgpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVm
ZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAxMDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoaGVp
Z2h0KGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpLCAwLCAwLjAwMDEpOwogICAgIEVYUEVD
VF9FUShnbHlwaEJ1ZmZlci5zaXplKCksIDFVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZl
ci5hZHZhbmNlQXQoMCkud2lkdGgoKSwgMjQsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lk
dGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgMjQsIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihD
b21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQpAQCAtMzIyLDE3ICsz
MjIsMTcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5j
ZXMpCiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAw
MSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDQsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNU
X05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNU
X05FQVIoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwot
ICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCksIDE2
LCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKHdpZHRoKGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkpLCAwLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGhlaWdodChnbHlwaEJ1ZmZlci5p
bml0aWFsQWR2YW5jZSgpKSwgMTYsIDAuMDAwMSk7CiAgICAgRVhQRUNUX0VRKGdseXBoQnVmZmVy
LnNpemUoKSwgNFUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53
aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgwKS5oZWlnaHQoKSwgNCAtIDEgLTgsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCksIDAsIDAuMDAwMSk7Ci0gICAgRVhQRUNUX05FQVIo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLmhlaWdodCgpLCA4IC0gMiAtIDUxMiwgMC4wMDAxKTsK
LSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSwgMCwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMikuaGVpZ2h0KCks
IDEyOCAtIDMyIC0gMjU2LCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgzKS53aWR0aCgpLCAwLCAwLjAwMDEpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVm
ZmVyLmFkdmFuY2VBdCgzKS5oZWlnaHQoKSwgMjU2IC0gNjQsIDAuMDAwMSk7CisgICAgRVhQRUNU
X05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgMCwgMC4wMDAxKTsKKyAgICBF
WFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApKSwgNCAtIDEgLTgsIDAu
MDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpKSwg
MCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKSwgOCAtIDIgLSA1MTIsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIod2lkdGgoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDIpKSwgMCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihoZWlnaHQo
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KDIpKSwgMTI4IC0gMzIgLSAyNTYsIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIod2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgMCwgMC4wMDAxKTsK
KyAgICBFWFBFQ1RfTkVBUihoZWlnaHQoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMpKSwgMjU2IC0g
NjQsIDAuMDAwMSk7CiB9CiAKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3Rh
bFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCkBAIC0zNjEsNyArMzYxLDEyIEBAIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCiAgICAg
RVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAg
Y29udHJvbGxlci5hZHZhbmNlKDUsICZnbHlwaEJ1ZmZlcik7CiAgICAgRVhQRUNUX0VRKGdseXBo
QnVmZmVyLnNpemUoKSwgNVUpOwotICAgIEVYUEVDVF9ORUFSKGdseXBoQnVmZmVyLmFkdmFuY2VB
dCgwKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDEpLndpZHRoKCkgKyBnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMikud2lkdGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgzKS53aWR0
aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDQpLndpZHRoKCksIGNvbnRyb2xsZXIudG90YWxB
ZHZhbmNlKCkud2lkdGgoKSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUih3aWR0aChnbHlwaEJ1
ZmZlci5hZHZhbmNlQXQoMCkpCisgICAgICAgICsgd2lkdGgoZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDEpKQorICAgICAgICArIHdpZHRoKGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKSkKKyAgICAgICAg
KyB3aWR0aChnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykpCisgICAgICAgICsgd2lkdGgoZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KDQpKQorICAgICAgICAsIGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCku
d2lkdGgoKSwgMC4wMDAxKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>