<?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>212327</bug_id>
          
          <creation_ts>2020-05-24 05:53:54 -0700</creation_ts>
          <short_desc>[GTK4] Add support for navigation gestures</short_desc>
          <delta_ts>2021-06-09 05:36:19 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alicem</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655706</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-24 05:53:54 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655709</commentid>
    <comment_count>1</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-05-24 05:56:33 -0700</bug_when>
    <thetext>Ok, so the code doesn&apos;t use anything special there, and as long as I have the scroll events, I can work with that. If raw events can&apos;t be accessed, using whatever is the replacement should be fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655715</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-24 06:05:13 -0700</bug_when>
    <thetext>The main problem is that you can&apos;t create GdkEvents in GTK4. I&apos;m not sure if you need to create events for the navigation gestures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655716</commentid>
    <comment_count>3</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-05-24 06:05:48 -0700</bug_when>
    <thetext>Other than for tests, no.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655718</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-24 06:10:25 -0700</bug_when>
    <thetext>If for tests you mean the WTR EventSender implementation, we are getting rid of the GdkEvents in bug #212298. I hope that&apos;s enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655720</commentid>
    <comment_count>5</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-05-24 06:26:37 -0700</bug_when>
    <thetext>I mean beginSimulatedSwipeInDirectionForTesting() and completeSimulatedSwipeInDirectionForTesting() which create events right now.

The patch in bug 212298 looks like it may be enough, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760641</commentid>
    <comment_count>6</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-16 11:43:33 -0700</bug_when>
    <thetext>The basics were ported in https://bugs.webkit.org/show_bug.cgi?id=212324

There are 2 missing pieces: thumbnails and shadows.

Attaching a patch for thumbnails, but it doesn&apos;t do shadows yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760642</commentid>
    <comment_count>7</comment_count>
      <attachid>428798</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-16 11:49:56 -0700</bug_when>
    <thetext>Created attachment 428798
Support snapshots for the navigation gesture on GTK4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763082</commentid>
    <comment_count>8</comment_count>
      <attachid>429520</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-24 03:37:40 -0700</bug_when>
    <thetext>Created attachment 429520
Patch

Restored shadows too, this should be ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763083</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-24 03:38:42 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763094</commentid>
    <comment_count>10</comment_count>
      <attachid>429523</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-24 04:36:27 -0700</bug_when>
    <thetext>Created attachment 429523
Patch

Oh whoops, forgot to #if the new constants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763097</commentid>
    <comment_count>11</comment_count>
      <attachid>429526</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-24 05:06:20 -0700</bug_when>
    <thetext>Created attachment 429526
Patch

Fixed code style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764012</commentid>
    <comment_count>12</comment_count>
      <attachid>429526</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-05-26 12:44:09 -0700</bug_when>
    <thetext>Comment on attachment 429526
Patch

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

Hm, do you think we should create a bug to change webkit_web_view_get_snapshot_finish() to return a GdkTexture rather than a cairo_surface_t? It might be nice to remove cairo from WebKit&apos;s API?

(We&apos;d of course want to do that in a separate bug, not here. It will be a bit hard because I think gtk-doc cannot handle conditional compilation. We will blow its little mind.)

Anyway, on to the review. I have only some nits:

&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:330
&gt; +static GskRenderNode* createTextureNode(GdkTexture *texture, FloatSize &amp;size)

Style: GdkTexture* texture, FloatSize&amp; size

Also I don&apos;t like transferring ownership via a raw pointer in C++. That should only happen in legacy code or when we call external library functions. Instead, here you should return a GRefPtr&lt;GskRenderNode&gt;. Just return adoptGRef() here instead of calling adoptGRef(createTextureNode(...)) elsewhere.

&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:332
&gt; +    GtkSnapshot* snapshot = gtk_snapshot_new();

I know it&apos;s only alive for four lines, and because we use -fno-exceptions there&apos;s no way it can be leaked here. But we still want to hold ownership in smart pointers whenever possible, even if only for a couple lines. So please add a GRefPtr for GtkSnapshot and use it here, then you can release() it on the last line and call gtk_snapshot_free_to_node() on that.

&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:338
&gt; +}

So this would become:

return adoptGRef(gtk_snapshot_free_to_node(snapshot.release()));

&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:495
&gt; +
&gt; +        return;

Nit: we don&apos;t normally leave a blank line before return.

&gt; Source/WebKit/UIProcess/gtk/ViewSnapshotStoreGtk4.cpp:48
&gt; +    return !!m_texture;

Nit: !! is often required in C, but here it&apos;s not doing anything. bools are either true or false, and the conversion from RefPtr to bool is implicit.

&gt; Source/WebKit/UIProcess/gtk/ViewSnapshotStoreGtk4.cpp:72
&gt; +    // FIXME: Unfortunately we don&apos;t have a way to get size of a texture
&gt; +    // in bytes, so we&apos;ll have to make something up. Let&apos;s assume that
&gt; +    // pixel == 4 bytes.
&gt; +    return width * height * 4;

Looking at its usage in the cross-platform ViewSnapshot.cpp, I think you can safely rename ::imageSizeInBytes to ::estimateImageSizeInBytes. You&apos;d still need this comment to explain what&apos;s going on, but you could get rid of the &quot;FIXME:&quot; prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764253</commentid>
    <comment_count>13</comment_count>
      <attachid>429857</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-27 01:35:30 -0700</bug_when>
    <thetext>Created attachment 429857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764254</commentid>
    <comment_count>14</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-05-27 01:37:48 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; Hm, do you think we should create a bug to change
&gt; webkit_web_view_get_snapshot_finish() to return a GdkTexture rather than a
&gt; cairo_surface_t? It might be nice to remove cairo from WebKit&apos;s API?

Agree

&gt; Also I don&apos;t like transferring ownership via a raw pointer in C++. That
&gt; should only happen in legacy code or when we call external library
&gt; functions. Instead, here you should return a GRefPtr&lt;GskRenderNode&gt;. Just
&gt; return adoptGRef() here instead of calling adoptGRef(createTextureNode(...))
&gt; elsewhere.

Or I can just get rid of that function. It&apos;s just one render node, might as well create it manually without GtkSnapshot like we already do for color nodes.

&gt; Nit: we don&apos;t normally leave a blank line before return.
&gt; Nit: !! is often required in C
&gt; Looking at its usage in the cross-platform ViewSnapshot.cpp

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764323</commentid>
    <comment_count>15</comment_count>
      <attachid>429857</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-05-27 07:09:19 -0700</bug_when>
    <thetext>Comment on attachment 429857
Patch

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

r=me, but we need an owner to approve the change imageSizeInBytes() -&gt; estimateImageSizeInBytes()

&gt; Source/WebKit/UIProcess/ViewSnapshotStore.h:89
&gt; -    size_t imageSizeInBytes() const { return m_surface ? m_surface-&gt;totalBytes() : 0; }
&gt; +    size_t estimateImageSizeInBytes() const { return m_surface ? m_surface-&gt;totalBytes() : 0; }

Hi Chris, we need an owner for this... can you approve this change please?

The problem is our new ViewSnapshotStore implementation doesn&apos;t actually know for sure how large its snapshots are -- that&apos;s hidden behind an abstraction layer -- so we have to guess. It means the cache size limit won&apos;t be perfectly respected if our guess is wrong. Won&apos;t make a difference for Apple ports since your &quot;estimate&quot; is not changed and will always be exact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767402</commentid>
    <comment_count>16</comment_count>
      <attachid>429857</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-07 04:37:48 -0700</bug_when>
    <thetext>Comment on attachment 429857
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ViewSnapshotStore.h:89
&gt;&gt; +    size_t estimateImageSizeInBytes() const { return m_surface ? m_surface-&gt;totalBytes() : 0; }
&gt; 
&gt; Hi Chris, we need an owner for this... can you approve this change please?
&gt; 
&gt; The problem is our new ViewSnapshotStore implementation doesn&apos;t actually know for sure how large its snapshots are -- that&apos;s hidden behind an abstraction layer -- so we have to guess. It means the cache size limit won&apos;t be perfectly respected if our guess is wrong. Won&apos;t make a difference for Apple ports since your &quot;estimate&quot; is not changed and will always be exact.

Hi owners, we just need this function name change approved please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768042</commentid>
    <comment_count>17</comment_count>
      <attachid>429857</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-08 21:18:31 -0700</bug_when>
    <thetext>Comment on attachment 429857
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/ViewSnapshotStore.h:89
&gt;&gt;&gt; +    size_t estimateImageSizeInBytes() const { return m_surface ? m_surface-&gt;totalBytes() : 0; }
&gt;&gt; 
&gt;&gt; Hi Chris, we need an owner for this... can you approve this change please?
&gt;&gt; 
&gt;&gt; The problem is our new ViewSnapshotStore implementation doesn&apos;t actually know for sure how large its snapshots are -- that&apos;s hidden behind an abstraction layer -- so we have to guess. It means the cache size limit won&apos;t be perfectly respected if our guess is wrong. Won&apos;t make a difference for Apple ports since your &quot;estimate&quot; is not changed and will always be exact.
&gt; 
&gt; Hi owners, we just need this function name change approved please.

I approve estimatedImageSizeInBytes() (note the rename).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768068</commentid>
    <comment_count>18</comment_count>
      <attachid>430944</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 23:55:12 -0700</bug_when>
    <thetext>Created attachment 430944
Patch

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768069</commentid>
    <comment_count>19</comment_count>
      <attachid>430945</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-09 00:02:00 -0700</bug_when>
    <thetext>Created attachment 430945
Patch

Forgot to regenerate changelog, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768126</commentid>
    <comment_count>20</comment_count>
      <attachid>430945</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-09 03:34:06 -0700</bug_when>
    <thetext>Comment on attachment 430945
Patch

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

&gt; Source/WebKit/UIProcess/gtk/ViewSnapshotStoreGtk3.cppSource/WebKit/UIProcess/gtk/ViewSnapshotStoreGtk.cpp:63
&gt; +size_t ViewSnapshot::estimatedImageSizeInBytes() const

estimated it is. Thanks Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768148</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-09 05:36:14 -0700</bug_when>
    <thetext>Committed r278657 (238639@main): &lt;https://commits.webkit.org/238639@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430945.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428798</attachid>
            <date>2021-05-16 11:49:56 -0700</date>
            <delta_ts>2021-05-24 03:37:40 -0700</delta_ts>
            <desc>Support snapshots for the navigation gesture on GTK4</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>19412</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSBjMzIyNDY4MmRmNzgyODA3ZGQyMDUzZDg1ZTA3YzJhMDdlMTc4Mjc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogU3VuLCAxNiBNYXkgMjAyMSAyMzo0ODozNiArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8IDE0ICsrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwICAg
IHwgMTUgKysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaCAgICAg
IHwgIDYgKysKIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8
IDQ1ICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgICAgICAgICAgICAg
ICAgICB8ICAzICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
ICAgfCAzMCArKysrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAg
ICAgICAgfCAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmggIHwgMTEgKystCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5o
ICAgfCAxOCArKysrCiAuLi4vZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAgICAgICAg
ICAgfCA1MSArKysrKysrKystLQogLi4uU3RvcmVHdGsuY3BwID0+IFZpZXdTbmFwc2hvdFN0b3Jl
R3RrMy5jcHB9IHwgIDQgKwogLi4uL1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0
LmNwcCAgIHwgODggKysrKysrKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwgMjc0IGlu
c2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFwc2hvdFN0b3JlR3Rr
My5jcHB9ICg5OSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2YTRkNmMwYzJi
Li5jNDBjMTVjMTE5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0xNiAg
QWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0
XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5kZXJOb2RlIGZvciBH
UmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOgorICAgICAg
ICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4YW5kZXIgTWlraGF5
bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lPTjogS2lu
ZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGggYXN5bmMgc2Nyb2xs
aW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCmluZGV4
IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRl
cmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShHVEs0KQor
dGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBwdHIpCit7
CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihwdHIpOworICAgIHJl
dHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdza1JlbmRlck5vZGUq
IHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25vZGVfdW5yZWYocHRy
KTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsu
aAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5cGVkZWYgc3RydWN0
IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVjdCBfU2VjcmV0VmFs
dWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9kZSBHc2tSZW5kZXJO
b2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAgdGVtcGxhdGUgPD4g
R3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwogdGVtcGxhdGUgPD4g
dm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgogCisjaWYgVVNFKEdU
SzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1JlbmRlck5vZGUqIHB0
cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBwdHIpOworI2Vu
ZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLjgyNDEwNjM1MzYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMS0wNS0xNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8
YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdh
dGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJlIGluc3RlYWQgb2Yg
Q2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdTbmFwc2hvdFN0b3Jl
R3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAgc2luY2UgdGhleSBk
b24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFraW5nIGEgdmlldyBz
bmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4KKworICAgICAgICBX
aGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSByZW5kZXIgbm9kZSBm
cm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFjayBjb2xvciwgdGhl
biByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJvLgorCisgICAgICAg
ICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld1NuYXBzaG90U3Rv
cmUuaDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90Ojp0ZXh0dXJlIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmNyZWF0ZVRleHR1cmVOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGszLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktp
dDo6Vmlld1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6
OlZpZXdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcDogCisgICAgICAgIChXZWJLaXQ6OlZp
ZXdTbmFwc2hvdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpWaWV3
U25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6Omhhc0ltYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpjbGVhckltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6Vmlld1NuYXBzaG90OjppbWFnZVNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6Vmlld1NuYXBzaG90OjpzaXplIGNvbnN0KToKKwogMjAyMS0wNS0xNSAgSWFuIEdp
bGJlcnQgIDxpYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUgd2l0aCBWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApp
bmRleCA4OTRlNWQ0ZDMyNWUuLmE0MzkxYmU3YjYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0y
NTksNyArMjU5LDggQEAgVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuY3BwIEBuby11
bmlmeQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyWDExLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL2d0ay9W
aWV3U25hcHNob3RTdG9yZUd0ay5jcHAKK1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVH
dGszLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAog
VUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3Mv
Z3RrL1dlYkNvbG9yUGlja2VyR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBlNzgyODU0OTRjODIuLjE0
Njk4ZmM5NTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI0ODAsNiArMjQ4MCw3IEBAIFJlZlB0cjxXZWJL
aXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktp
dFdlYlZpZXdCYXNlCiAgICAgZmxvYXQgZGV2aWNlU2NhbGUgPSBwYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogICAgIHNpemUuc2NhbGUoZGV2aWNlU2NhbGUpOwogCisjaWYgIVVTRShHVEs0KQog
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfUkdCMjQsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkpOwogICAgIGNhaXJvX3N1cmZhY2Vfc2V0X2RldmljZV9zY2FsZShzdXJmYWNlLmdl
dCgpLCBkZXZpY2VTY2FsZSwgZGV2aWNlU2NhbGUpOwogCkBAIC0yNDg5LDExICsyNDkwLDM2IEBA
IFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1Nu
YXBzaG90KFdlYktpdFdlYlZpZXdCYXNlCiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQo
KSwgY2xpcFJlY3QtPngoKSwgY2xpcFJlY3QtPnkoKSwgY2xpcFJlY3QtPndpZHRoKCksIGNsaXBS
ZWN0LT5oZWlnaHQoKSk7CiAgICAgICAgIGNhaXJvX2NsaXAoY3IuZ2V0KCkpOwogICAgIH0KLSNp
ZiAhVVNFKEdUSzQpCiAgICAgd2Via2l0V2ViVmlld0Jhc2VEcmF3KEdUS19XSURHRVQod2Via2l0
V2ViVmlld0Jhc2UpLCBjci5nZXQoKSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBWaWV3U25hcHNo
b3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyNlbHNlCisgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisgICAgYXV0byogcmVu
ZGVyZXIgPSBndGtfbmF0aXZlX2dldF9yZW5kZXJlcihHVEtfTkFUSVZFKHByaXYtPnRvcGxldmVs
T25TY3JlZW5XaW5kb3cpKTsKKworICAgIEdSZWZQdHI8R3RrU25hcHNob3Q+IHNuYXBzaG90ID0g
YWRvcHRHUmVmKGd0a19zbmFwc2hvdF9uZXcoKSk7CisKKyAgICBpZihjbGlwUmVjdCkgeworICAg
ICAgICBncmFwaGVuZV9wb2ludF90IHBvaW50ID0geyAtKGZsb2F0KWNsaXBSZWN0LT54KCksIC0o
ZmxvYXQpY2xpcFJlY3QtPnkoKSB9OworICAgICAgICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IHsg
KGZsb2F0KWNsaXBSZWN0LT54KCksIChmbG9hdCljbGlwUmVjdC0+eSgpLCAoZmxvYXQpY2xpcFJl
Y3QtPndpZHRoKCksIChmbG9hdCljbGlwUmVjdC0+aGVpZ2h0KCkgfTsKKworICAgICAgICBndGtf
c25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LmdldCgpLCAmcG9pbnQpOworICAgICAgICBndGtf
c25hcHNob3RfcHVzaF9jbGlwKHNuYXBzaG90LmdldCgpLCAmcmVjdCk7CisgICAgfQorCisgICAg
Z3RrX3NuYXBzaG90X3NjYWxlKHNuYXBzaG90LmdldCgpLCBkZXZpY2VTY2FsZSwgZGV2aWNlU2Nh
bGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU25hcHNob3QoR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZSksIHNuYXBzaG90LmdldCgpKTsKKworICAgIGlmKGNsaXBSZWN0KQorICAgICAgICBn
dGtfc25hcHNob3RfcG9wKHNuYXBzaG90LmdldCgpKTsKKworICAgIEdSZWZQdHI8R3NrUmVuZGVy
Tm9kZT4gcmVuZGVyTm9kZSA9IGFkb3B0R1JlZihndGtfc25hcHNob3RfdG9fbm9kZShzbmFwc2hv
dC5nZXQoKSkpOworCisgICAgZ3JhcGhlbmVfcmVjdF90IHZpZXdwb3J0ID0geyAwLCAwLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkgfTsKKyAgICBHZGtUZXh0dXJlICp0ZXh0dXJlID0gZ3Nr
X3JlbmRlcmVyX3JlbmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmll
d3BvcnQpOworCisgICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVy
ZSkpOworI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvck1haW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dl
YkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRh
MDcyM2IuLjgxNjZjOTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q2Fpcm8uY3BwCkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9w
dGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5j
b2RlZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9S
TShHVEspCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2
NEVuY29kZWRQTkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCmluZGV4IGI4NmUwMGI2YzI5ZC4uMWVlNDZiZDg1OWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAs
MTQgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fp
cm9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgorCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3Rr
Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxMSArNDQxLDE1IEBAIHByaXZh
dGU6CiAKICAgICBTd2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwog
CisjaWYgVVNFKEdUSzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9j
dXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4g
bV9zd2lwZURpbW1pbmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dp
cGVTaGFkb3dQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3Jk
ZXJQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0
dGVybjsKKyNlbmRpZgogICAgIGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lw
ZUJvcmRlclNpemU7CiAgICAgaW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IGQyODBkYWVlOThkNy4uNzczMmE1
MDBjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgK
QEAgLTM2LDggKzM2LDEyIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0Uo
R1RLNCkKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvUmVm
UHRyQ2Fpcm8uaD4KICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01
MCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCisjaWYgVVNFKEdUSzQpCisgICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNy
ZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYpOworI2Vsc2UKICAgICBzdGF0aWMgUmVmPFZpZXdT
bmFwc2hvdD4gY3JlYXRlKFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOworI2VuZGlmCiAjZW5k
aWYKIAogICAgIH5WaWV3U25hcHNob3QoKTsKQEAgLTg3LDcgKzk1LDExIEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQorI2lmIFVTRShHVEs0KQorICAgIEdka1RleHR1cmUq
IHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyNlbHNlCiAgICAg
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgp
OyB9CisjZW5kaWYKIAogICAgIHNpemVfdCBpbWFnZVNpemVJbkJ5dGVzKCkgY29uc3Q7CiAgICAg
V2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CkBAIC0xMDEsOSArMTEzLDE1IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyAgICBleHBs
aWNpdCBWaWV3U25hcHNob3QoR1JlZlB0cjxHZGtUZXh0dXJlPiYmKTsKKworICAgIEdSZWZQdHI8
R2RrVGV4dHVyZT4gbV90ZXh0dXJlOworI2Vsc2UKICAgICBleHBsaWNpdCBWaWV3U25hcHNob3Qo
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBtX3N1cmZhY2U7CisjZW5kaWYKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVl
U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0
dXJlQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRjY2NkM2JjMmNkLi5hMzUxYzI5YzYxNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJHdGsuY3BwCkBAIC0zMDksNiArMzA5LDE5IEBAIHN0YXRpYyBpbnQgZWxlbWVudFdp
ZHRoKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCkKIAogICAgIHJldHVybiB3aWR0aDsKIH0KKwor
I2Vsc2UKKworc3RhdGljIEdza1JlbmRlck5vZGUqIGNyZWF0ZVRleHR1cmVOb2RlKEdka1RleHR1
cmUgKnRleHR1cmUsIEZsb2F0U2l6ZSAmc2l6ZSkKK3sKKyAgICBHdGtTbmFwc2hvdCogc25hcHNo
b3QgPSBndGtfc25hcHNob3RfbmV3KCk7CisgICAgZ3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7IDAs
IDAsIChmbG9hdClzaXplLndpZHRoKCksIChmbG9hdClzaXplLmhlaWdodCgpIH07CisKKyAgICBn
dGtfc25hcHNob3RfYXBwZW5kX3RleHR1cmUoc25hcHNob3QsIHRleHR1cmUsICZyZWN0KTsKKwor
ICAgIHJldHVybiBndGtfc25hcHNob3RfZnJlZV90b19ub2RlKHNuYXBzaG90KTsKK30KKwogI2Vu
ZGlmCiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24p
CkBAIC0zMTksMzQgKzMzMiw1OCBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5T
d2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbQogCiAgICAgd2ls
bEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKTsKIAorICAgIEZsb2F0U2l6ZSB2
aWV3U2l6ZShtX3dlYlBhZ2VQcm94eS52aWV3U2l6ZSgpKTsKKworI2lmIFVTRShHVEs0KQorICAg
IGdyYXBoZW5lX3JlY3RfdCBib3VuZHMgPSB7IDAsIDAsIHZpZXdTaXplLndpZHRoKCksIHZpZXdT
aXplLmhlaWdodCgpIH07CisjZW5kaWYKKwogICAgIGlmIChhdXRvKiBzbmFwc2hvdCA9IHRhcmdl
dEl0ZW0tPnNuYXBzaG90KCkpIHsKICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdCA9IHNu
YXBzaG90OwogCi0gICAgICAgIEZsb2F0U2l6ZSB2aWV3U2l6ZShtX3dlYlBhZ2VQcm94eS52aWV3
U2l6ZSgpKTsKICAgICAgICAgaWYgKHNuYXBzaG90LT5oYXNJbWFnZSgpICYmIHNob3VsZFVzZVNu
YXBzaG90Rm9yU2l6ZSgqc25hcHNob3QsIHZpZXdTaXplLCAwKSkKKyNpZiBVU0UoR1RLNCkKKyAg
ICAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGNyZWF0
ZVRleHR1cmVOb2RlKHNuYXBzaG90LT50ZXh0dXJlKCksIHZpZXdTaXplKSk7CisjZWxzZQogICAg
ICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19w
YXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzbmFwc2hvdC0+c3VyZmFjZSgpKSk7CisjZW5kaWYK
IAogICAgICAgICBDb2xvciBjb2xvciA9IHNuYXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQ29s
b3JGb3JDdXJyZW50U25hcHNob3QgPSBjb2xvcjsKICAgICAgICAgICAgIGlmICghbV9jdXJyZW50
U3dpcGVTbmFwc2hvdFBhdHRlcm4pIHsKICAgICAgICAgICAgICAgICBhdXRvIFtyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYV0gPSBjb2xvci50b1NSR0JBTG9zc3k8ZmxvYXQ+KCk7CisjaWYgVVNFKEdU
SzQpCisgICAgICAgICAgICAgICAgR2RrUkdCQSByZ2JhID0geyByZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSB9OworICAgICAgICAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0g
YWRvcHRHUmVmKGdza19jb2xvcl9ub2RlX25ldygmcmdiYSwgJmJvdW5kcykpOworI2Vsc2UKICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0UmVmKGNh
aXJvX3BhdHRlcm5fY3JlYXRlX3JnYmEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKKyNlbmRp
ZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0jaWYgIVVTRShHVEs0KQogICAg
IGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4pIHsKICAgICAgICAgR2RrUkdCQSBj
b2xvcjsKICAgICAgICAgYXV0byogY29udGV4dCA9IGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRl
eHQobV93ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgaWYgKGd0a19zdHlsZV9j
b250ZXh0X2xvb2t1cF9jb2xvcihjb250ZXh0LCAidGhlbWVfYmFzZV9jb2xvciIsICZjb2xvcikp
CisjaWYgVVNFKEdUSzQpCisgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVy
biA9IGFkb3B0R1JlZihnc2tfY29sb3Jfbm9kZV9uZXcoJmNvbG9yLCAmYm91bmRzKSk7CisjZWxz
ZQogICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihj
YWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2JhKGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJs
dWUsIGNvbG9yLmFscGhhKSk7CisjZW5kaWYKICAgICB9CiAKLSAgICBpZiAoIW1fY3VycmVudFN3
aXBlU25hcHNob3RQYXR0ZXJuKQorICAgIGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRl
cm4pIHsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgR2RrUkdCQSBjb2xvciA9IHsgMSwgMSwgMSwg
MSB9OworICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihn
c2tfY29sb3Jfbm9kZV9uZXcoJmNvbG9yLCAmYm91bmRzKSk7CisjZWxzZQogICAgICAgICBtX2N1
cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRl
X3JnYigxLCAxLCAxKSk7CisjZW5kaWYKKyAgICB9CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgYXV0
byBzaXplID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+c2l6ZSgpOwogCiAgICAgaWYg
KCFtX2Nzc1Byb3ZpZGVyKSB7CkBAIC00MjAsMTEgKzQ1Nyw3IEBAIHZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpzbmFwc2hvdChHdGtTbmFwc2hvdCogc25hcHNob3QsIEdza1JlbmRlck5vZGUq
IHBhZ2VSCiAgICAgICAgIGd0a19zbmFwc2hvdF90cmFuc2xhdGUoc25hcHNob3QsICZ0cmFuc2xh
dGlvbik7CiAgICAgfQogCi0gICAgZ3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7IDAsIDAsIChmbG9h
dCl3aWR0aCwgKGZsb2F0KWhlaWdodCB9OwotICAgIGF1dG8qIGNyID0gZ3RrX3NuYXBzaG90X2Fw
cGVuZF9jYWlybyhzbmFwc2hvdCwgJnJlY3QpOwotICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIG1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuLmdldCgpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwotICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGd0a19z
bmFwc2hvdF9hcHBlbmRfbm9kZShzbmFwc2hvdCwgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRl
cm4uZ2V0KCkpOwogCiAgICAgaWYgKHN3aXBpbmdCYWNrKSB7CiAgICAgICAgIGd0a19zbmFwc2hv
dF90cmFuc2xhdGUoc25hcHNob3QsICZ0cmFuc2xhdGlvbik7CkBAIC01MzYsMTAgKzU2OSwxMiBA
QCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gbnVsbHB0
cjsKKyNpZiAhVVNFKEdUSzQpCiAgICAgbV9zd2lwZURpbW1pbmdQYXR0ZXJuID0gbnVsbHB0cjsK
ICAgICBtX3N3aXBlU2hhZG93UGF0dGVybiA9IG51bGxwdHI7CiAgICAgbV9zd2lwZUJvcmRlclBh
dHRlcm4gPSBudWxscHRyOwogICAgIG1fc3dpcGVPdXRsaW5lUGF0dGVybiA9IG51bGxwdHI7Cisj
ZW5kaWYKIAogICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrMy5jcHAK
c2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrMy5jcHAKaW5kZXggNmQyYmFhZDY4OGVhLi44
ZGQwZjA2ODgxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3
U25hcHNob3RTdG9yZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrMy5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgogCisjaWYgIVVTRShHVEs0KQor
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTgzLDMgKzg1LDUgQEAgV2ViQ29yZTo6SW50U2l6ZSBWaWV3U25hcHNob3Q6OnNpemUo
KSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmQzZTc1MTEyNDBjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0
b3JlR3RrNC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sZGQKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisKKyNpZiBVU0UoR1RLNCkK
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFZp
ZXdTbmFwc2hvdD4gVmlld1NuYXBzaG90OjpjcmVhdGUoR1JlZlB0cjxHZGtUZXh0dXJlPiYmIHRl
eHR1cmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlld1NuYXBzaG90KFdURk1vdmUo
dGV4dHVyZSkpKTsKK30KKworVmlld1NuYXBzaG90OjpWaWV3U25hcHNob3QoR1JlZlB0cjxHZGtU
ZXh0dXJlPiYmIHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKK3sK
KyAgICBpZiAoaGFzSW1hZ2UoKSkKKyAgICAgICAgVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRv
bigpLmRpZEFkZEltYWdlVG9TbmFwc2hvdCgqdGhpcyk7Cit9CisKK2Jvb2wgVmlld1NuYXBzaG90
OjpoYXNJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV90ZXh0dXJlOworfQorCit2b2lk
IFZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSgpCit7CisgICAgaWYgKCFoYXNJbWFnZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2luZ2xldG9uKCkud2lsbFJl
bW92ZUltYWdlRnJvbVNuYXBzaG90KCp0aGlzKTsKKworICAgIG1fdGV4dHVyZSA9IG51bGxwdHI7
Cit9CisKK3NpemVfdCBWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMoKSBjb25zdAorewor
ICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGludCB3aWR0aCA9
IGdka190ZXh0dXJlX2dldF93aWR0aChtX3RleHR1cmUuZ2V0KCkpOworICAgIGludCBoZWlnaHQg
PSBnZGtfdGV4dHVyZV9nZXRfaGVpZ2h0KG1fdGV4dHVyZS5nZXQoKSk7CisKKyAgICAvLyBGSVhN
RTogVW5mb3J0dW5hdGVseSB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGdldCBzaXplIG9mIGEgdGV4
dHVyZQorICAgIC8vIGluIGJ5dGVzLCBzbyB3ZSdsbCBoYXZlIHRvIG1ha2Ugc29tZXRoaW5nIHVw
LiBMZXQncyBhc3N1bWUgdGhhdAorICAgIC8vIHBpeGVsID09IDQgYnl0ZXMuCisgICAgcmV0dXJu
IHdpZHRoICogaGVpZ2h0ICogNDsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBWaWV3U25hcHNob3Q6
OnNpemUoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgaW50IHdpZHRoID0gZ2RrX3RleHR1cmVfZ2V0X3dpZHRoKG1fdGV4dHVyZS5nZXQo
KSk7CisgICAgaW50IGhlaWdodCA9IGdka190ZXh0dXJlX2dldF9oZWlnaHQobV90ZXh0dXJlLmdl
dCgpKTsKKworICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgotLSAKMi4zMS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429520</attachid>
            <date>2021-05-24 03:37:40 -0700</date>
            <delta_ts>2021-05-24 04:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>23671</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAwNzZmYTZiN2RmNzY2ZDcxYmI5ZWIxMGNjNDEyMzg0MGI5MDllMWIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNTozMzo0MyArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCAg
ICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggICAg
ICB8ICAgNiArCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
fCAgNTAgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgICAgICAgICAgICAg
ICAgICB8ICAgMyArLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cCAgIHwgIDMxICsrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAg
ICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oICB8ICAxMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
aCAgIHwgIDE4ICsrKwogLi4uL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwICAgICAg
ICAgIHwgMTEzICsrKysrKysrKysrKysrKystLQogLi4uU3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9IHwgICA0ICsKIC4uLi9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hv
dFN0b3JlR3RrNC5jcHAgICB8ICA4OCArKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwg
MzQwIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFwc2hvdFN0
b3JlR3RrMy5jcHB9ICg5OSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2YTRk
NmMwYzJiLi5kMWE3MmNlMjIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0w
NS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAg
IFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5kZXJOb2Rl
IGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOgor
ICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4YW5kZXIg
TWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lP
TjogS2luZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGggYXN5bmMg
c2Nyb2xsaW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CmluZGV4IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShH
VEs0KQordGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBw
dHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihwdHIpOwor
ICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdza1JlbmRl
ck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25vZGVfdW5y
ZWYocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQ
dHJHdGsuaAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5cGVkZWYg
c3RydWN0IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVjdCBfU2Vj
cmV0VmFsdWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9kZSBHc2tS
ZW5kZXJOb2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAgdGVtcGxh
dGUgPD4gR3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwogdGVtcGxh
dGUgPD4gdm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgogCisjaWYg
VVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1JlbmRlck5v
ZGUqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBwdHIp
OworI2VuZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLmNiNjFiZDQwNzE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxl
bmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3Ig
bmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJlIGluc3Rl
YWQgb2YgQ2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdTbmFwc2hv
dFN0b3JlR3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAgc2luY2Ug
dGhleSBkb24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFraW5nIGEg
dmlldyBzbmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4KKworICAg
ICAgICBXaGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSByZW5kZXIg
bm9kZSBmcm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFjayBjb2xv
ciwgdGhlbiByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJvLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgc2FtZSBkaW1taW5nK3NoYWRvdyBhcyBpbiBHVEszLiBUaGlz
IHRpbWUgZG9uJ3QgYm90aGVyCisgICAgICAgIHdpdGggQ1NTLCB0aGUgYXBwcm9hY2ggd2UgdXNl
ZCBpbiBHVEszIGRvZXNuJ3Qgd29yayBhbnltb3JlLCBhbmQgc2luY2UKKyAgICAgICAgZWxlbWVu
dHMgbGlrZSBzY3JvbGxiYXJzIGFyZW4ndCB0aGVtZWFibGUgYW55d2F5IGl0J3Mgbm90IHZlcnkg
aW1wb3J0YW50CisgICAgICAgIHRvIHByZXNlcnZlIHRoYXQuCisKKyAgICAgICAgKiBTb3VyY2Vz
R1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlVGV4dHVyZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25h
cHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmlld1NuYXBz
aG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9W
aWV3U25hcHNob3RTdG9yZUd0azQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Vmll
d1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OlZpZXdT
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorCiAyMDIxLTA1LTE1ICBJYW4gR2ls
YmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IDg5NGU1ZDRkMzI1ZS4uYTQzOTFiZTdiNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI1
OSw3ICsyNTksOCBAQCBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCiBV
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4Mi4uZjRk
YjZiYjE3ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgUmVmUHRyPFdlYktp
dDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0
V2ViVmlld0Jhc2UKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZhY2UuZ2V0
KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKQEAgLTI0ODksMTEgKzI0OTAsMzcgQEAg
UmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25h
cHNob3QoV2ViS2l0V2ViVmlld0Jhc2UKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgp
LCBjbGlwUmVjdC0+eCgpLCBjbGlwUmVjdC0+eSgpLCBjbGlwUmVjdC0+d2lkdGgoKSwgY2xpcFJl
Y3QtPmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjci5nZXQoKSk7CiAgICAgfQotI2lm
ICFVU0UoR1RLNCkKICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSksIGNyLmdldCgpKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFZpZXdTbmFwc2hv
dDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworI2Vsc2UKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBhdXRvKiByZW5k
ZXJlciA9IGd0a19uYXRpdmVfZ2V0X3JlbmRlcmVyKEdUS19OQVRJVkUocHJpdi0+dG9wbGV2ZWxP
blNjcmVlbldpbmRvdykpOworCisgICAgR1JlZlB0cjxHdGtTbmFwc2hvdD4gc25hcHNob3QgPSBh
ZG9wdEdSZWYoZ3RrX3NuYXBzaG90X25ldygpKTsKKworICAgIGlmKGNsaXBSZWN0KSB7CisgICAg
ICAgIGdyYXBoZW5lX3BvaW50X3QgcG9pbnQgPSB7IC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJl
Y3QtPngoKSksIC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPnkoKSkgfTsKKyAgICAgICAg
Z3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT54
KCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPnkoKSkgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT53aWR0aCgp
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT5oZWlnaHQoKSkgfSB9OworCisgICAgICAg
IGd0a19zbmFwc2hvdF90cmFuc2xhdGUoc25hcHNob3QuZ2V0KCksICZwb2ludCk7CisgICAgICAg
IGd0a19zbmFwc2hvdF9wdXNoX2NsaXAoc25hcHNob3QuZ2V0KCksICZyZWN0KTsKKyAgICB9CisK
KyAgICBndGtfc25hcHNob3Rfc2NhbGUoc25hcHNob3QuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZp
Y2VTY2FsZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTbmFwc2hvdChHVEtfV0lER0VUKHdlYmtp
dFdlYlZpZXdCYXNlKSwgc25hcHNob3QuZ2V0KCkpOworCisgICAgaWYoY2xpcFJlY3QpCisgICAg
ICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QuZ2V0KCkpOworCisgICAgR1JlZlB0cjxHc2tS
ZW5kZXJOb2RlPiByZW5kZXJOb2RlID0gYWRvcHRHUmVmKGd0a19zbmFwc2hvdF90b19ub2RlKHNu
YXBzaG90LmdldCgpKSk7CisKKyAgICBncmFwaGVuZV9yZWN0X3Qgdmlld3BvcnQgPSB7IDAsIDAs
IHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6
ZS5oZWlnaHQoKSkgfTsKKyAgICBHZGtUZXh0dXJlICp0ZXh0dXJlID0gZ3NrX3JlbmRlcmVyX3Jl
bmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmlld3BvcnQpOworCisg
ICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOworI2VuZGlm
CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1h
aW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25T
ZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRhMDcyM2IuLjgxNjZj
OTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
YWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBA
IC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9wdGlvbmFsPFN0cmlu
Zz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEo
Y29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdE
YXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmlu
ZGV4IGI4NmUwMGI2YzI5ZC4uZTUwM2FlZmU5OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAsMTQgQEAKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgor
CisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+CisjZWxzZQor
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxNSArNDQxLDIwIEBAIHByaXZhdGU6CiAKICAgICBT
d2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwogCisjaWYgVVNFKEdU
SzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0
dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9jdXJyZW50U3dpcGVT
bmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9zd2lwZURpbW1p
bmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVTaGFkb3dQYXR0
ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3JkZXJQYXR0ZXJuOwog
ICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0dGVybjsKKwogICAg
IGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lwZUJvcmRlclNpemU7CiAgICAg
aW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKICAgICBHUmVmUHRyPEd0a0Nzc1Byb3ZpZGVyPiBtX2Nz
c1Byb3ZpZGVyOworI2VuZGlmCiAKICAgICBib29sIG1faXNTaW11bGF0ZWRTd2lwZSB7IGZhbHNl
IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5o
CmluZGV4IGQyODBkYWVlOThkNy4uNzczMmE1MDBjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTM2LDggKzM2LDEyIEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyNpbmNsdWRlIDxndGsvZ3RrLmg+Cisj
ZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgorI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01MCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisgICAg
c3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYpOwor
I2Vsc2UKICAgICBzdGF0aWMgUmVmPFZpZXdTbmFwc2hvdD4gY3JlYXRlKFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIH5WaWV3U25hcHNob3QoKTsKQEAg
LTg3LDcgKzk1LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQorI2lm
IFVTRShHVEs0KQorICAgIEdka1RleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmUuZ2V0KCk7IH0KKyNlbHNlCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisjZW5kaWYKIAogICAgIHNpemVfdCBpbWFn
ZVNpemVJbkJ5dGVzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7
CkBAIC0xMDEsOSArMTEzLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdU
SykKKyNpZiBVU0UoR1RLNCkKKyAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoR1JlZlB0cjxHZGtU
ZXh0dXJlPiYmKTsKKworICAgIEdSZWZQdHI8R2RrVGV4dHVyZT4gbV90ZXh0dXJlOworI2Vsc2UK
ICAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAK
ICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisjZW5kaWYKICNlbmRpZgog
CiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRj
Y2NkM2JjMmNkLi41MmYyN2E1NjA0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCkBAIC00OCw2ICs0OCwx
OSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQW5pbWF0aW9uRHVyYXRpb25NdWx0aXBsaWVy
ID0gMzsKIHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVDYW5jZWxBcmVhID0gMC41Owogc3RhdGlj
IGNvbnN0IGRvdWJsZSBzd2lwZUNhbmNlbFZlbG9jaXR5VGhyZXNob2xkID0gMC40OwogCitzdGF0
aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9IDAuMDY7CitzdGF0aWMg
Y29uc3QgZmxvYXQgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0eSA9IDAuMDU7CitzdGF0aWMgY29u
c3QgZmxvYXQgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkgPSAwLjA1Oworc3RhdGljIGNvbnN0
IGZsb2F0IHN3aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ID0gMC4xMjsKK3N0YXRpYyBjb25zdCBm
bG9hdCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCA9IDU3Oworc3RhdGljIGNvbnN0IEdza0NvbG9y
U3RvcCBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wc1tdID0geworICAgIHsgMCwgICAgIHsgMCwgMCwg
MCwgMC4wOCAgfSB9LAorICAgIHsgMC4xMjUsIHsgMCwgMCwgMCwgMC4wNTMgfSB9LAorICAgIHsg
MC40MjgsIHsgMCwgMCwgMCwgMC4wMjYgfSB9LAorICAgIHsgMC43MTQsIHsgMCwgMCwgMCwgMC4w
MSAgfSB9LAorICAgIHsgMSwgICAgIHsgMCwgMCwgMCwgMCAgICAgfSB9Cit9OworCiBzdGF0aWMg
Ym9vbCBpc0V2ZW50U3RvcChQbGF0Zm9ybUd0a1Njcm9sbERhdGEqIGV2ZW50KQogewogICAgIHJl
dHVybiBldmVudC0+aXNFbmQ7CkBAIC0zMDksNiArMzIyLDE5IEBAIHN0YXRpYyBpbnQgZWxlbWVu
dFdpZHRoKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCkKIAogICAgIHJldHVybiB3aWR0aDsKIH0K
KworI2Vsc2UKKworc3RhdGljIEdza1JlbmRlck5vZGUqIGNyZWF0ZVRleHR1cmVOb2RlKEdka1Rl
eHR1cmUgKnRleHR1cmUsIEZsb2F0U2l6ZSAmc2l6ZSkKK3sKKyAgICBHdGtTbmFwc2hvdCogc25h
cHNob3QgPSBndGtfc25hcHNob3RfbmV3KCk7CisgICAgZ3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7
IDAsIDAsIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oc2l6ZS5oZWlnaHQoKSkgfTsKKworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfdGV4dHVyZShz
bmFwc2hvdCwgdGV4dHVyZSwgJnJlY3QpOworCisgICAgcmV0dXJuIGd0a19zbmFwc2hvdF9mcmVl
X3RvX25vZGUoc25hcHNob3QpOworfQorCiAjZW5kaWYKIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0
ZW0sIFN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTMxOSwzNCArMzQ1LDU4IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGVtCiAKICAgICB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlw
ZTo6U3dpcGUpOwogCisgICAgRmxvYXRTaXplIHZpZXdTaXplKG1fd2ViUGFnZVByb3h5LnZpZXdT
aXplKCkpOworCisjaWYgVVNFKEdUSzQpCisgICAgZ3JhcGhlbmVfcmVjdF90IGJvdW5kcyA9IHsg
MCwgMCwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkgfTsKKyNlbmRpZgorCiAg
ICAgaWYgKGF1dG8qIHNuYXBzaG90ID0gdGFyZ2V0SXRlbS0+c25hcHNob3QoKSkgewogICAgICAg
ICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25hcHNob3Q7CiAKLSAgICAgICAgRmxvYXRTaXpl
IHZpZXdTaXplKG1fd2ViUGFnZVByb3h5LnZpZXdTaXplKCkpOwogICAgICAgICBpZiAoc25hcHNo
b3QtPmhhc0ltYWdlKCkgJiYgc2hvdWxkVXNlU25hcHNob3RGb3JTaXplKCpzbmFwc2hvdCwgdmll
d1NpemUsIDApKQorI2lmIFVTRShHVEs0KQorICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFw
c2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoY3JlYXRlVGV4dHVyZU5vZGUoc25hcHNob3QtPnRleHR1
cmUoKSwgdmlld1NpemUpKTsKKyNlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBz
aG90UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHNu
YXBzaG90LT5zdXJmYWNlKCkpKTsKKyNlbmRpZgogCiAgICAgICAgIENvbG9yIGNvbG9yID0gc25h
cHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7
CiAgICAgICAgICAgICBtX2JhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdCA9IGNvbG9y
OwogICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybikgewogICAg
ICAgICAgICAgICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yLnRvU1JH
QkFMb3NzeTxmbG9hdD4oKTsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAgICAgICBHZGtSR0JB
IHJnYmEgPSB7IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIH07CisgICAgICAgICAgICAgICAgbV9j
dXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3
KCZyZ2JhLCAmYm91bmRzKSk7CisjZWxzZQogICAgICAgICAgICAgICAgIG1fY3VycmVudFN3aXBl
U25hcHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiYShyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSkpOworI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSNpZiAhVVNFKEdUSzQpCiAgICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90
UGF0dGVybikgewogICAgICAgICBHZGtSR0JBIGNvbG9yOwogICAgICAgICBhdXRvKiBjb250ZXh0
ID0gZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChtX3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0
KCkpOwogICAgICAgICBpZiAoZ3RrX3N0eWxlX2NvbnRleHRfbG9va3VwX2NvbG9yKGNvbnRleHQs
ICJ0aGVtZV9iYXNlX2NvbG9yIiwgJmNvbG9yKSkKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAg
IG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGdza19jb2xvcl9ub2Rl
X25ldygmY29sb3IsICZib3VuZHMpKTsKKyNlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JnYmEoY29s
b3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSwgY29sb3IuYWxwaGEpKTsKKyNlbmRpZgog
ICAgIH0KIAotICAgIGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4pCisgICAgaWYg
KCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybikgeworI2lmIFVTRShHVEs0KQorICAgICAg
ICBHZGtSR0JBIGNvbG9yID0geyAxLCAxLCAxLCAxIH07CisgICAgICAgIG1fY3VycmVudFN3aXBl
U25hcHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGdza19jb2xvcl9ub2RlX25ldygmY29sb3IsICZi
b3VuZHMpKTsKKyNlbHNlCiAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0g
YWRvcHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiKDEsIDEsIDEpKTsKKyNlbmRpZgorICAg
IH0KIAorI2lmICFVU0UoR1RLNCkKICAgICBhdXRvIHNpemUgPSBtX3dlYlBhZ2VQcm94eS5kcmF3
aW5nQXJlYSgpLT5zaXplKCk7CiAKICAgICBpZiAoIW1fY3NzUHJvdmlkZXIpIHsKQEAgLTQwNCwz
MyArNDU0LDcyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzbmFwc2hvdChHdGtTbmFw
c2hvdCogc25hcHNob3QsIEdza1JlbmRlck5vZGUqIHBhZ2VSCiAgICAgaW50IGhlaWdodCA9IHNp
emUuaGVpZ2h0KCk7CiAgICAgZG91YmxlIHNjYWxlID0gbV93ZWJQYWdlUHJveHkuZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKIAotICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSAoc3dpcGluZ0xl
ZnQgPyAwIDogd2lkdGgpICsgZmxvb3Iod2lkdGggKiBwcm9ncmVzcyAqIHNjYWxlKSAvIHNjYWxl
OworICAgIGZsb2F0IHN3aXBpbmdMYXllck9mZnNldCA9IChzd2lwaW5nTGVmdCA/IDAgOiB3aWR0
aCkgKyBmbG9vcih3aWR0aCAqIHByb2dyZXNzICogc2NhbGUpIC8gc2NhbGU7CiAKLSAgICBkb3Vi
bGUgZGltbWluZ1Byb2dyZXNzID0gc3dpcGluZ0xlZnQgPyAxIC0gcHJvZ3Jlc3MgOiAtcHJvZ3Jl
c3M7CisgICAgZmxvYXQgZGltbWluZ1Byb2dyZXNzID0gc3dpcGluZ0xlZnQgPyAxIC0gcHJvZ3Jl
c3MgOiAtcHJvZ3Jlc3M7CiAgICAgaWYgKGlzUlRMKSB7CiAgICAgICAgIGRpbW1pbmdQcm9ncmVz
cyA9IDEgLSBkaW1taW5nUHJvZ3Jlc3M7CiAgICAgICAgIHN3aXBpbmdMYXllck9mZnNldCA9IC0o
d2lkdGggLSBzd2lwaW5nTGF5ZXJPZmZzZXQpOwogICAgIH0KIAorICAgIGZsb2F0IHJlbWFpbmlu
Z1N3aXBlRGlzdGFuY2UgPSBkaW1taW5nUHJvZ3Jlc3MgKiB3aWR0aDsKKworICAgIGZsb2F0IHNo
YWRvd09wYWNpdHkgPSAxOworICAgIGlmIChyZW1haW5pbmdTd2lwZURpc3RhbmNlIDwgc3dpcGVP
dmVybGF5U2hhZG93V2lkdGgpCisgICAgICAgIHNoYWRvd09wYWNpdHkgPSByZW1haW5pbmdTd2lw
ZURpc3RhbmNlIC8gc3dpcGVPdmVybGF5U2hhZG93V2lkdGg7CisKICAgICBndGtfc25hcHNob3Rf
c2F2ZShzbmFwc2hvdCk7CiAKLSAgICBncmFwaGVuZV9wb2ludF90IHRyYW5zbGF0aW9uID0geyBz
dGF0aWNfY2FzdDxmbG9hdD4oc3dpcGluZ0xheWVyT2Zmc2V0KSwgMCB9OworICAgIGdyYXBoZW5l
X3JlY3RfdCBjbGlwID0geyAwLCAwLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZS53aWR0aCgpKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUuaGVpZ2h0KCkpIH07CisgICAgZ3RrX3NuYXBzaG90X3B1
c2hfY2xpcChzbmFwc2hvdCwgJmNsaXApOworCisgICAgZ3JhcGhlbmVfcG9pbnRfdCB0cmFuc2xh
dGlvbiA9IHsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwIH07CiAgICAgaWYgKCFzd2lwaW5nQmFjaykg
ewogICAgICAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIHBhZ2VSZW5kZXJO
b2RlKTsKICAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hvdCwgJnRyYW5zbGF0
aW9uKTsKICAgICB9CiAKLSAgICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IHsgMCwgMCwgKGZsb2F0
KXdpZHRoLCAoZmxvYXQpaGVpZ2h0IH07Ci0gICAgYXV0byogY3IgPSBndGtfc25hcHNob3RfYXBw
ZW5kX2NhaXJvKHNuYXBzaG90LCAmcmVjdCk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgbV9j
dXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4uZ2V0KCkpOwotICAgIGNhaXJvX3JlY3RhbmdsZShj
ciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZmlsbChjcik7CisgICAgZ3RrX3Nu
YXBzaG90X2FwcGVuZF9ub2RlKHNuYXBzaG90LCBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVy
bi5nZXQoKSk7CiAKICAgICBpZiAoc3dpcGluZ0JhY2spIHsKICAgICAgICAgZ3RrX3NuYXBzaG90
X3RyYW5zbGF0ZShzbmFwc2hvdCwgJnRyYW5zbGF0aW9uKTsKICAgICAgICAgZ3RrX3NuYXBzaG90
X2FwcGVuZF9ub2RlKHNuYXBzaG90LCBwYWdlUmVuZGVyTm9kZSk7CiAgICAgfQogCisgICAgaWYg
KCFwcm9ncmVzcykgeworICAgICAgICBndGtfc25hcHNob3RfcG9wKHNuYXBzaG90KTsKKyAgICAg
ICAgZ3RrX3NuYXBzaG90X3Jlc3RvcmUoc25hcHNob3QpOworCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoaXNSVEwpIHsKKyAgICAgICAgdHJhbnNsYXRpb24gPSB7IHN0YXRpY19j
YXN0PGZsb2F0Pih3aWR0aCksIDAgfTsKKyAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShz
bmFwc2hvdCwgJnRyYW5zbGF0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBndGtfc25hcHNo
b3Rfc2NhbGUoc25hcHNob3QsIC0xLCAxKTsKKyAgICB9CisKKyAgICBHZGtSR0JBIGRpbW1pbmcg
PSB7IDAsIDAsIDAsIHN3aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ICogZGltbWluZ1Byb2dyZXNz
IH07CisgICAgR2RrUkdCQSBib3JkZXIgPSB7IDAsIDAsIDAsIHN3aXBlT3ZlcmxheUJvcmRlck9w
YWNpdHkgfTsKKyAgICBHZGtSR0JBIG91dGxpbmUgPSB7IDEsIDEsIDEsIHN3aXBlT3ZlcmxheU91
dGxpbmVPcGFjaXR5IH07CisKKyAgICBncmFwaGVuZV9yZWN0X3QgZGltbWluZ1JlY3QgPSB7IDAs
IDAsICBzdGF0aWNfY2FzdDxmbG9hdD4od2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0
KSB9OworICAgIGdyYXBoZW5lX3JlY3RfdCBib3JkZXJSZWN0ID0geyAwLCAwLCAxLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oaGVpZ2h0KSB9OworICAgIGdyYXBoZW5lX3JlY3RfdCBvdXRsaW5lUmVjdCA9
IHsgLTEsIDAsIDEsIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVf
cmVjdF90IHNoYWRvd1JlY3QgPSB7IDAsIDAsIHN3aXBlT3ZlcmxheVNoYWRvd1dpZHRoLCBzdGF0
aWNfY2FzdDxmbG9hdD4oaGVpZ2h0KSB9OworICAgIGdyYXBoZW5lX3BvaW50X3Qgc2hhZG93U3Rh
cnQgPSB7IDAsIDAgfTsKKyAgICBncmFwaGVuZV9wb2ludF90IHNoYWRvd0VuZCA9IHsgc3dpcGVP
dmVybGF5U2hhZG93V2lkdGgsIDAgfTsKKworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfY29sb3Io
c25hcHNob3QsICZkaW1taW5nLCAmZGltbWluZ1JlY3QpOworICAgIGd0a19zbmFwc2hvdF9hcHBl
bmRfY29sb3Ioc25hcHNob3QsICZib3JkZXIsICZib3JkZXJSZWN0KTsKKyAgICBndGtfc25hcHNo
b3RfYXBwZW5kX2NvbG9yKHNuYXBzaG90LCAmb3V0bGluZSwgJm91dGxpbmVSZWN0KTsKKyAgICBn
dGtfc25hcHNob3RfcHVzaF9vcGFjaXR5KHNuYXBzaG90LCBzaGFkb3dPcGFjaXR5KTsKKyAgICBn
dGtfc25hcHNob3RfYXBwZW5kX2xpbmVhcl9ncmFkaWVudChzbmFwc2hvdCwgJnNoYWRvd1JlY3Qs
ICZzaGFkb3dTdGFydCwgJnNoYWRvd0VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wcywgR19OX0VMRU1FTlRTIChzd2lwZU92
ZXJsYXlTaGFkb3dTdG9wcykpOworICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QpOworCisg
ICAgZ3RrX3NuYXBzaG90X3BvcChzbmFwc2hvdCk7CiAgICAgZ3RrX3NuYXBzaG90X3Jlc3RvcmUo
c25hcHNob3QpOwogfQogI2Vsc2UKQEAgLTUzNiwxMCArNjI1LDEyIEBAIHZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBudWxscHRyOworI2lmICFVU0UoR1RL
NCkKICAgICBtX3N3aXBlRGltbWluZ1BhdHRlcm4gPSBudWxscHRyOwogICAgIG1fc3dpcGVTaGFk
b3dQYXR0ZXJuID0gbnVsbHB0cjsKICAgICBtX3N3aXBlQm9yZGVyUGF0dGVybiA9IG51bGxwdHI7
CiAgICAgbV9zd2lwZU91dGxpbmVQYXR0ZXJuID0gbnVsbHB0cjsKKyNlbmRpZgogCiAgICAgbV9j
dXJyZW50U3dpcGVTbmFwc2hvdCA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGszLmNwcApzaW1pbGFyaXR5IGluZGV4
IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90
U3RvcmVHdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGszLmNwcAppbmRleCA2ZDJiYWFkNjg4ZWEuLjhkZDBmMDY4ODExZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVH
dGszLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAKKyNpZiAhVVNFKEdUSzQpCisKICNpbmNsdWRlIDxXZWJD
b3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODMsMyArODUs
NSBAQCBXZWJDb3JlOjpJbnRTaXplIFZpZXdTbmFwc2hvdDo6c2l6ZSgpIGNvbnN0CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZDNlNzUxMTI0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTyxkZAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVmlld1NuYXBzaG90U3RvcmUuaCIKKworI2lmIFVTRShHVEs0KQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8Vmlld1NuYXBzaG90PiBWaWV3
U25hcHNob3Q6OmNyZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYgdGV4dHVyZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWV3U25hcHNob3QoV1RGTW92ZSh0ZXh0dXJlKSkpOworfQor
CitWaWV3U25hcHNob3Q6OlZpZXdTbmFwc2hvdChHUmVmUHRyPEdka1RleHR1cmU+JiYgdGV4dHVy
ZSkKKyAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQoreworICAgIGlmIChoYXNJbWFn
ZSgpKQorICAgICAgICBWaWV3U25hcHNob3RTdG9yZTo6c2luZ2xldG9uKCkuZGlkQWRkSW1hZ2VU
b1NuYXBzaG90KCp0aGlzKTsKK30KKworYm9vbCBWaWV3U25hcHNob3Q6Omhhc0ltYWdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gISFtX3RleHR1cmU7Cit9CisKK3ZvaWQgVmlld1NuYXBzaG90Ojpj
bGVhckltYWdlKCkKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS53aWxsUmVtb3ZlSW1hZ2VGcm9tU25h
cHNob3QoKnRoaXMpOworCisgICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKK30KKworc2l6ZV90IFZp
ZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1
cmUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IHdpZHRoID0gZ2RrX3RleHR1cmVfZ2V0
X3dpZHRoKG1fdGV4dHVyZS5nZXQoKSk7CisgICAgaW50IGhlaWdodCA9IGdka190ZXh0dXJlX2dl
dF9oZWlnaHQobV90ZXh0dXJlLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBVbmZvcnR1bmF0ZWx5
IHdlIGRvbid0IGhhdmUgYSB3YXkgdG8gZ2V0IHNpemUgb2YgYSB0ZXh0dXJlCisgICAgLy8gaW4g
Ynl0ZXMsIHNvIHdlJ2xsIGhhdmUgdG8gbWFrZSBzb21ldGhpbmcgdXAuIExldCdzIGFzc3VtZSB0
aGF0CisgICAgLy8gcGl4ZWwgPT0gNCBieXRlcy4KKyAgICByZXR1cm4gd2lkdGggKiBoZWlnaHQg
KiA0OworfQorCitXZWJDb3JlOjpJbnRTaXplIFZpZXdTbmFwc2hvdDo6c2l6ZSgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgd2lk
dGggPSBnZGtfdGV4dHVyZV9nZXRfd2lkdGgobV90ZXh0dXJlLmdldCgpKTsKKyAgICBpbnQgaGVp
Z2h0ID0gZ2RrX3RleHR1cmVfZ2V0X2hlaWdodChtX3RleHR1cmUuZ2V0KCkpOworCisgICAgcmV0
dXJuIHsgd2lkdGgsIGhlaWdodCB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCi0tIAoyLjMxLjEKCg==
</data>
<flag name="commit-queue"
          id="450722"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429523</attachid>
            <date>2021-05-24 04:36:27 -0700</date>
            <delta_ts>2021-05-24 05:06:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>23694</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAyZjc2ODA3ZjE2ZTRiYWNiNDJkNGJlYjhlM2EwZDcyOTY5YmY3ZjY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNTozMzo0MyArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCAg
ICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggICAg
ICB8ICAgNiArCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
fCAgNTAgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgICAgICAgICAgICAg
ICAgICB8ICAgMyArLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cCAgIHwgIDMxICsrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAg
ICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oICB8ICAxMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
aCAgIHwgIDE4ICsrKwogLi4uL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwICAgICAg
ICAgIHwgMTE1ICsrKysrKysrKysrKysrKystLQogLi4uU3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9IHwgICA0ICsKIC4uLi9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hv
dFN0b3JlR3RrNC5jcHAgICB8ICA4OCArKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwg
MzQyIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFwc2hvdFN0
b3JlR3RrMy5jcHB9ICg5OSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2YTRk
NmMwYzJiLi5kMWE3MmNlMjIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0w
NS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAg
IFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5kZXJOb2Rl
IGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOgor
ICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4YW5kZXIg
TWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lP
TjogS2luZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGggYXN5bmMg
c2Nyb2xsaW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CmluZGV4IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShH
VEs0KQordGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBw
dHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihwdHIpOwor
ICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdza1JlbmRl
ck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25vZGVfdW5y
ZWYocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQ
dHJHdGsuaAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5cGVkZWYg
c3RydWN0IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVjdCBfU2Vj
cmV0VmFsdWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9kZSBHc2tS
ZW5kZXJOb2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAgdGVtcGxh
dGUgPD4gR3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwogdGVtcGxh
dGUgPD4gdm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgogCisjaWYg
VVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1JlbmRlck5v
ZGUqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBwdHIp
OworI2VuZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLmNiNjFiZDQwNzE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxl
bmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3Ig
bmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJlIGluc3Rl
YWQgb2YgQ2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdTbmFwc2hv
dFN0b3JlR3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAgc2luY2Ug
dGhleSBkb24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFraW5nIGEg
dmlldyBzbmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4KKworICAg
ICAgICBXaGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSByZW5kZXIg
bm9kZSBmcm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFjayBjb2xv
ciwgdGhlbiByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJvLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgc2FtZSBkaW1taW5nK3NoYWRvdyBhcyBpbiBHVEszLiBUaGlz
IHRpbWUgZG9uJ3QgYm90aGVyCisgICAgICAgIHdpdGggQ1NTLCB0aGUgYXBwcm9hY2ggd2UgdXNl
ZCBpbiBHVEszIGRvZXNuJ3Qgd29yayBhbnltb3JlLCBhbmQgc2luY2UKKyAgICAgICAgZWxlbWVu
dHMgbGlrZSBzY3JvbGxiYXJzIGFyZW4ndCB0aGVtZWFibGUgYW55d2F5IGl0J3Mgbm90IHZlcnkg
aW1wb3J0YW50CisgICAgICAgIHRvIHByZXNlcnZlIHRoYXQuCisKKyAgICAgICAgKiBTb3VyY2Vz
R1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlVGV4dHVyZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25h
cHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmlld1NuYXBz
aG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9W
aWV3U25hcHNob3RTdG9yZUd0azQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Vmll
d1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OlZpZXdT
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorCiAyMDIxLTA1LTE1ICBJYW4gR2ls
YmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IDg5NGU1ZDRkMzI1ZS4uYTQzOTFiZTdiNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI1
OSw3ICsyNTksOCBAQCBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCiBV
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4Mi4uZjRk
YjZiYjE3ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgUmVmUHRyPFdlYktp
dDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0
V2ViVmlld0Jhc2UKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZhY2UuZ2V0
KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKQEAgLTI0ODksMTEgKzI0OTAsMzcgQEAg
UmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25h
cHNob3QoV2ViS2l0V2ViVmlld0Jhc2UKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgp
LCBjbGlwUmVjdC0+eCgpLCBjbGlwUmVjdC0+eSgpLCBjbGlwUmVjdC0+d2lkdGgoKSwgY2xpcFJl
Y3QtPmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjci5nZXQoKSk7CiAgICAgfQotI2lm
ICFVU0UoR1RLNCkKICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSksIGNyLmdldCgpKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFZpZXdTbmFwc2hv
dDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworI2Vsc2UKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBhdXRvKiByZW5k
ZXJlciA9IGd0a19uYXRpdmVfZ2V0X3JlbmRlcmVyKEdUS19OQVRJVkUocHJpdi0+dG9wbGV2ZWxP
blNjcmVlbldpbmRvdykpOworCisgICAgR1JlZlB0cjxHdGtTbmFwc2hvdD4gc25hcHNob3QgPSBh
ZG9wdEdSZWYoZ3RrX3NuYXBzaG90X25ldygpKTsKKworICAgIGlmKGNsaXBSZWN0KSB7CisgICAg
ICAgIGdyYXBoZW5lX3BvaW50X3QgcG9pbnQgPSB7IC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJl
Y3QtPngoKSksIC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPnkoKSkgfTsKKyAgICAgICAg
Z3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT54
KCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPnkoKSkgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT53aWR0aCgp
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT5oZWlnaHQoKSkgfSB9OworCisgICAgICAg
IGd0a19zbmFwc2hvdF90cmFuc2xhdGUoc25hcHNob3QuZ2V0KCksICZwb2ludCk7CisgICAgICAg
IGd0a19zbmFwc2hvdF9wdXNoX2NsaXAoc25hcHNob3QuZ2V0KCksICZyZWN0KTsKKyAgICB9CisK
KyAgICBndGtfc25hcHNob3Rfc2NhbGUoc25hcHNob3QuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZp
Y2VTY2FsZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTbmFwc2hvdChHVEtfV0lER0VUKHdlYmtp
dFdlYlZpZXdCYXNlKSwgc25hcHNob3QuZ2V0KCkpOworCisgICAgaWYoY2xpcFJlY3QpCisgICAg
ICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QuZ2V0KCkpOworCisgICAgR1JlZlB0cjxHc2tS
ZW5kZXJOb2RlPiByZW5kZXJOb2RlID0gYWRvcHRHUmVmKGd0a19zbmFwc2hvdF90b19ub2RlKHNu
YXBzaG90LmdldCgpKSk7CisKKyAgICBncmFwaGVuZV9yZWN0X3Qgdmlld3BvcnQgPSB7IDAsIDAs
IHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6
ZS5oZWlnaHQoKSkgfTsKKyAgICBHZGtUZXh0dXJlICp0ZXh0dXJlID0gZ3NrX3JlbmRlcmVyX3Jl
bmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmlld3BvcnQpOworCisg
ICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOworI2VuZGlm
CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1h
aW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25T
ZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRhMDcyM2IuLjgxNjZj
OTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
YWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBA
IC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9wdGlvbmFsPFN0cmlu
Zz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEo
Y29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdE
YXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmlu
ZGV4IGI4NmUwMGI2YzI5ZC4uZTUwM2FlZmU5OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAsMTQgQEAKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgor
CisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+CisjZWxzZQor
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxNSArNDQxLDIwIEBAIHByaXZhdGU6CiAKICAgICBT
d2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwogCisjaWYgVVNFKEdU
SzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0
dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9jdXJyZW50U3dpcGVT
bmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9zd2lwZURpbW1p
bmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVTaGFkb3dQYXR0
ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3JkZXJQYXR0ZXJuOwog
ICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0dGVybjsKKwogICAg
IGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lwZUJvcmRlclNpemU7CiAgICAg
aW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKICAgICBHUmVmUHRyPEd0a0Nzc1Byb3ZpZGVyPiBtX2Nz
c1Byb3ZpZGVyOworI2VuZGlmCiAKICAgICBib29sIG1faXNTaW11bGF0ZWRTd2lwZSB7IGZhbHNl
IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5o
CmluZGV4IGQyODBkYWVlOThkNy4uNzczMmE1MDBjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTM2LDggKzM2LDEyIEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyNpbmNsdWRlIDxndGsvZ3RrLmg+Cisj
ZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgorI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01MCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9T
dXJmYWNlPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisgICAg
c3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYpOwor
I2Vsc2UKICAgICBzdGF0aWMgUmVmPFZpZXdTbmFwc2hvdD4gY3JlYXRlKFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiYpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIH5WaWV3U25hcHNob3QoKTsKQEAg
LTg3LDcgKzk1LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQorI2lm
IFVTRShHVEs0KQorICAgIEdka1RleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmUuZ2V0KCk7IH0KKyNlbHNlCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisjZW5kaWYKIAogICAgIHNpemVfdCBpbWFn
ZVNpemVJbkJ5dGVzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7
CkBAIC0xMDEsOSArMTEzLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdU
SykKKyNpZiBVU0UoR1RLNCkKKyAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoR1JlZlB0cjxHZGtU
ZXh0dXJlPiYmKTsKKworICAgIEdSZWZQdHI8R2RrVGV4dHVyZT4gbV90ZXh0dXJlOworI2Vsc2UK
ICAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAK
ICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisjZW5kaWYKICNlbmRpZgog
CiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRj
Y2NkM2JjMmNkLi4wYWUzMGU3NDVkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCkBAIC00OCw2ICs0OCwy
MSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQW5pbWF0aW9uRHVyYXRpb25NdWx0aXBsaWVy
ID0gMzsKIHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVDYW5jZWxBcmVhID0gMC41Owogc3RhdGlj
IGNvbnN0IGRvdWJsZSBzd2lwZUNhbmNlbFZlbG9jaXR5VGhyZXNob2xkID0gMC40OwogCisjaWYg
VVNFKEdUSzQpCitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9
IDAuMDY7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0eSA9IDAu
MDU7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkgPSAwLjA1
Oworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ID0gMC4xMjsK
K3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCA9IDU3Oworc3RhdGlj
IGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wc1tdID0geworICAgIHsg
MCwgICAgIHsgMCwgMCwgMCwgMC4wOCAgfSB9LAorICAgIHsgMC4xMjUsIHsgMCwgMCwgMCwgMC4w
NTMgfSB9LAorICAgIHsgMC40MjgsIHsgMCwgMCwgMCwgMC4wMjYgfSB9LAorICAgIHsgMC43MTQs
IHsgMCwgMCwgMCwgMC4wMSAgfSB9LAorICAgIHsgMSwgICAgIHsgMCwgMCwgMCwgMCAgICAgfSB9
Cit9OworI2VuZGlmCisKIHN0YXRpYyBib29sIGlzRXZlbnRTdG9wKFBsYXRmb3JtR3RrU2Nyb2xs
RGF0YSogZXZlbnQpCiB7CiAgICAgcmV0dXJuIGV2ZW50LT5pc0VuZDsKQEAgLTMwOSw2ICszMjQs
MTkgQEAgc3RhdGljIGludCBlbGVtZW50V2lkdGgoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0KQog
CiAgICAgcmV0dXJuIHdpZHRoOwogfQorCisjZWxzZQorCitzdGF0aWMgR3NrUmVuZGVyTm9kZSog
Y3JlYXRlVGV4dHVyZU5vZGUoR2RrVGV4dHVyZSAqdGV4dHVyZSwgRmxvYXRTaXplICZzaXplKQor
eworICAgIEd0a1NuYXBzaG90KiBzbmFwc2hvdCA9IGd0a19zbmFwc2hvdF9uZXcoKTsKKyAgICBn
cmFwaGVuZV9yZWN0X3QgcmVjdCA9IHsgMCwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUud2lk
dGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLmhlaWdodCgpKSB9OworCisgICAgZ3RrX3Nu
YXBzaG90X2FwcGVuZF90ZXh0dXJlKHNuYXBzaG90LCB0ZXh0dXJlLCAmcmVjdCk7CisKKyAgICBy
ZXR1cm4gZ3RrX3NuYXBzaG90X2ZyZWVfdG9fbm9kZShzbmFwc2hvdCk7Cit9CisKICNlbmRpZgog
CiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAt
MzE5LDM0ICszNDcsNTggQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVH
ZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgIHdpbGxCZWdp
bkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpTd2lwZSk7CiAKKyAgICBGbG9hdFNpemUgdmlld1Np
emUobV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CisKKyNpZiBVU0UoR1RLNCkKKyAgICBncmFw
aGVuZV9yZWN0X3QgYm91bmRzID0geyAwLCAwLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5o
ZWlnaHQoKSB9OworI2VuZGlmCisKICAgICBpZiAoYXV0byogc25hcHNob3QgPSB0YXJnZXRJdGVt
LT5zbmFwc2hvdCgpKSB7CiAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBzbmFwc2hv
dDsKIAotICAgICAgICBGbG9hdFNpemUgdmlld1NpemUobV93ZWJQYWdlUHJveHkudmlld1NpemUo
KSk7CiAgICAgICAgIGlmIChzbmFwc2hvdC0+aGFzSW1hZ2UoKSAmJiBzaG91bGRVc2VTbmFwc2hv
dEZvclNpemUoKnNuYXBzaG90LCB2aWV3U2l6ZSwgMCkpCisjaWYgVVNFKEdUSzQpCisgICAgICAg
ICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihjcmVhdGVUZXh0
dXJlTm9kZShzbmFwc2hvdC0+dGV4dHVyZSgpLCB2aWV3U2l6ZSkpOworI2Vsc2UKICAgICAgICAg
ICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0dGVy
bl9jcmVhdGVfZm9yX3N1cmZhY2Uoc25hcHNob3QtPnN1cmZhY2UoKSkpOworI2VuZGlmCiAKICAg
ICAgICAgQ29sb3IgY29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAg
IGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yRm9y
Q3VycmVudFNuYXBzaG90ID0gY29sb3I7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudFN3aXBl
U25hcHNob3RQYXR0ZXJuKSB7CiAgICAgICAgICAgICAgICAgYXV0byBbcmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGFdID0gY29sb3IudG9TUkdCQUxvc3N5PGZsb2F0PigpOworI2lmIFVTRShHVEs0KQor
ICAgICAgICAgICAgICAgIEdka1JHQkEgcmdiYSA9IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEg
fTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0
R1JlZihnc2tfY29sb3Jfbm9kZV9uZXcoJnJnYmEsICZib3VuZHMpKTsKKyNlbHNlCiAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19w
YXR0ZXJuX2NyZWF0ZV9yZ2JhKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CisjZW5kaWYKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotI2lmICFVU0UoR1RLNCkKICAgICBpZiAo
IW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKSB7CiAgICAgICAgIEdka1JHQkEgY29sb3I7
CiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBndGtfd2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0KG1f
d2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIGlmIChndGtfc3R5bGVfY29udGV4
dF9sb29rdXBfY29sb3IoY29udGV4dCwgInRoZW1lX2Jhc2VfY29sb3IiLCAmY29sb3IpKQorI2lm
IFVTRShHVEs0KQorICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBh
ZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3KCZjb2xvciwgJmJvdW5kcykpOworI2Vsc2UKICAg
ICAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9f
cGF0dGVybl9jcmVhdGVfcmdiYShjb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlLCBj
b2xvci5hbHBoYSkpOworI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNu
YXBzaG90UGF0dGVybikKKyAgICBpZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKSB7
CisjaWYgVVNFKEdUSzQpCisgICAgICAgIEdka1JHQkEgY29sb3IgPSB7IDEsIDEsIDEsIDEgfTsK
KyAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3NrX2Nv
bG9yX25vZGVfbmV3KCZjb2xvciwgJmJvdW5kcykpOworI2Vsc2UKICAgICAgICAgbV9jdXJyZW50
U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2Io
MSwgMSwgMSkpOworI2VuZGlmCisgICAgfQogCisjaWYgIVVTRShHVEs0KQogICAgIGF1dG8gc2l6
ZSA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKTsKIAogICAgIGlmICghbV9j
c3NQcm92aWRlcikgewpAQCAtNDA0LDMzICs0NTYsNzIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OnNuYXBzaG90KEd0a1NuYXBzaG90KiBzbmFwc2hvdCwgR3NrUmVuZGVyTm9kZSogcGFn
ZVIKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKICAgICBkb3VibGUgc2NhbGUgPSBt
X3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgZG91YmxlIHN3aXBpbmdM
YXllck9mZnNldCA9IChzd2lwaW5nTGVmdCA/IDAgOiB3aWR0aCkgKyBmbG9vcih3aWR0aCAqIHBy
b2dyZXNzICogc2NhbGUpIC8gc2NhbGU7CisgICAgZmxvYXQgc3dpcGluZ0xheWVyT2Zmc2V0ID0g
KHN3aXBpbmdMZWZ0ID8gMCA6IHdpZHRoKSArIGZsb29yKHdpZHRoICogcHJvZ3Jlc3MgKiBzY2Fs
ZSkgLyBzY2FsZTsKIAotICAgIGRvdWJsZSBkaW1taW5nUHJvZ3Jlc3MgPSBzd2lwaW5nTGVmdCA/
IDEgLSBwcm9ncmVzcyA6IC1wcm9ncmVzczsKKyAgICBmbG9hdCBkaW1taW5nUHJvZ3Jlc3MgPSBz
d2lwaW5nTGVmdCA/IDEgLSBwcm9ncmVzcyA6IC1wcm9ncmVzczsKICAgICBpZiAoaXNSVEwpIHsK
ICAgICAgICAgZGltbWluZ1Byb2dyZXNzID0gMSAtIGRpbW1pbmdQcm9ncmVzczsKICAgICAgICAg
c3dpcGluZ0xheWVyT2Zmc2V0ID0gLSh3aWR0aCAtIHN3aXBpbmdMYXllck9mZnNldCk7CiAgICAg
fQogCisgICAgZmxvYXQgcmVtYWluaW5nU3dpcGVEaXN0YW5jZSA9IGRpbW1pbmdQcm9ncmVzcyAq
IHdpZHRoOworCisgICAgZmxvYXQgc2hhZG93T3BhY2l0eSA9IDE7CisgICAgaWYgKHJlbWFpbmlu
Z1N3aXBlRGlzdGFuY2UgPCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCkKKyAgICAgICAgc2hhZG93
T3BhY2l0eSA9IHJlbWFpbmluZ1N3aXBlRGlzdGFuY2UgLyBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0
aDsKKwogICAgIGd0a19zbmFwc2hvdF9zYXZlKHNuYXBzaG90KTsKIAotICAgIGdyYXBoZW5lX3Bv
aW50X3QgdHJhbnNsYXRpb24gPSB7IHN0YXRpY19jYXN0PGZsb2F0Pihzd2lwaW5nTGF5ZXJPZmZz
ZXQpLCAwIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IGNsaXAgPSB7IDAsIDAsIHN0YXRpY19jYXN0
PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZS5oZWlnaHQoKSkg
fTsKKyAgICBndGtfc25hcHNob3RfcHVzaF9jbGlwKHNuYXBzaG90LCAmY2xpcCk7CisKKyAgICBn
cmFwaGVuZV9wb2ludF90IHRyYW5zbGF0aW9uID0geyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAgfTsK
ICAgICBpZiAoIXN3aXBpbmdCYWNrKSB7CiAgICAgICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfbm9k
ZShzbmFwc2hvdCwgcGFnZVJlbmRlck5vZGUpOwogICAgICAgICBndGtfc25hcHNob3RfdHJhbnNs
YXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24pOwogICAgIH0KIAotICAgIGdyYXBoZW5lX3JlY3Rf
dCByZWN0ID0geyAwLCAwLCAoZmxvYXQpd2lkdGgsIChmbG9hdCloZWlnaHQgfTsKLSAgICBhdXRv
KiBjciA9IGd0a19zbmFwc2hvdF9hcHBlbmRfY2Fpcm8oc25hcHNob3QsICZyZWN0KTsKLSAgICBj
YWlyb19zZXRfc291cmNlKGNyLCBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybi5nZXQoKSk7
Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBjYWly
b19maWxsKGNyKTsKKyAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIG1fY3Vy
cmVudFN3aXBlU25hcHNob3RQYXR0ZXJuLmdldCgpKTsKIAogICAgIGlmIChzd2lwaW5nQmFjaykg
ewogICAgICAgICBndGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24p
OwogICAgICAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIHBhZ2VSZW5kZXJO
b2RlKTsKICAgICB9CiAKKyAgICBpZiAoIXByb2dyZXNzKSB7CisgICAgICAgIGd0a19zbmFwc2hv
dF9wb3Aoc25hcHNob3QpOworICAgICAgICBndGtfc25hcHNob3RfcmVzdG9yZShzbmFwc2hvdCk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc1JUTCkgeworICAgICAgICB0
cmFuc2xhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoKSwgMCB9OworICAgICAgICBn
dGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGd0a19zbmFwc2hvdF9zY2FsZShzbmFwc2hvdCwgLTEsIDEpOworICAgIH0K
KworICAgIEdka1JHQkEgZGltbWluZyA9IHsgMCwgMCwgMCwgc3dpcGVPdmVybGF5RGltbWluZ09w
YWNpdHkgKiBkaW1taW5nUHJvZ3Jlc3MgfTsKKyAgICBHZGtSR0JBIGJvcmRlciA9IHsgMCwgMCwg
MCwgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0eSB9OworICAgIEdka1JHQkEgb3V0bGluZSA9IHsg
MSwgMSwgMSwgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkgfTsKKworICAgIGdyYXBoZW5lX3Jl
Y3RfdCBkaW1taW5nUmVjdCA9IHsgMCwgMCwgIHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCksIHN0
YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IGJvcmRlclJl
Y3QgPSB7IDAsIDAsIDEsIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhl
bmVfcmVjdF90IG91dGxpbmVSZWN0ID0geyAtMSwgMCwgMSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhl
aWdodCkgfTsKKyAgICBncmFwaGVuZV9yZWN0X3Qgc2hhZG93UmVjdCA9IHsgMCwgMCwgc3dpcGVP
dmVybGF5U2hhZG93V2lkdGgsIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3Jh
cGhlbmVfcG9pbnRfdCBzaGFkb3dTdGFydCA9IHsgMCwgMCB9OworICAgIGdyYXBoZW5lX3BvaW50
X3Qgc2hhZG93RW5kID0geyBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCwgMCB9OworCisgICAgZ3Rr
X3NuYXBzaG90X2FwcGVuZF9jb2xvcihzbmFwc2hvdCwgJmRpbW1pbmcsICZkaW1taW5nUmVjdCk7
CisgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF9jb2xvcihzbmFwc2hvdCwgJmJvcmRlciwgJmJvcmRl
clJlY3QpOworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfY29sb3Ioc25hcHNob3QsICZvdXRsaW5l
LCAmb3V0bGluZVJlY3QpOworICAgIGd0a19zbmFwc2hvdF9wdXNoX29wYWNpdHkoc25hcHNob3Qs
IHNoYWRvd09wYWNpdHkpOworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfbGluZWFyX2dyYWRpZW50
KHNuYXBzaG90LCAmc2hhZG93UmVjdCwgJnNoYWRvd1N0YXJ0LCAmc2hhZG93RW5kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlT3ZlcmxheVNoYWRvd1N0b3Bz
LCBHX05fRUxFTUVOVFMgKHN3aXBlT3ZlcmxheVNoYWRvd1N0b3BzKSk7CisgICAgZ3RrX3NuYXBz
aG90X3BvcChzbmFwc2hvdCk7CisKKyAgICBndGtfc25hcHNob3RfcG9wKHNuYXBzaG90KTsKICAg
ICBndGtfc25hcHNob3RfcmVzdG9yZShzbmFwc2hvdCk7CiB9CiAjZWxzZQpAQCAtNTM2LDEwICs2
MjcsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3Qo
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9
IG51bGxwdHI7CisjaWYgIVVTRShHVEs0KQogICAgIG1fc3dpcGVEaW1taW5nUGF0dGVybiA9IG51
bGxwdHI7CiAgICAgbV9zd2lwZVNoYWRvd1BhdHRlcm4gPSBudWxscHRyOwogICAgIG1fc3dpcGVC
b3JkZXJQYXR0ZXJuID0gbnVsbHB0cjsKICAgICBtX3N3aXBlT3V0bGluZVBhdHRlcm4gPSBudWxs
cHRyOworI2VuZGlmCiAKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3Jl
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azMuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwCmluZGV4IDZkMmJhYWQ2
ODhlYS4uOGRkMGYwNjg4MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld1NuYXBzaG90U3RvcmUuaCIKIAorI2lmICFVU0Uo
R1RLNCkKKwogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC04MywzICs4NSw1IEBAIFdlYkNvcmU6OkludFNpemUgVmlld1NuYXBzaG90
OjpzaXplKCkgY29uc3QKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJkM2U3NTExMjQw
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25h
cHNob3RTdG9yZUd0azQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLGRkCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorCisjaWYgVVNF
KEdUSzQpCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K1JlZjxWaWV3U25hcHNob3Q+IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKEdSZWZQdHI8R2RrVGV4dHVy
ZT4mJiB0ZXh0dXJlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZXdTbmFwc2hvdChX
VEZNb3ZlKHRleHR1cmUpKSk7Cit9CisKK1ZpZXdTbmFwc2hvdDo6Vmlld1NuYXBzaG90KEdSZWZQ
dHI8R2RrVGV4dHVyZT4mJiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVy
ZSkpCit7CisgICAgaWYgKGhhc0ltYWdlKCkpCisgICAgICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpz
aW5nbGV0b24oKS5kaWRBZGRJbWFnZVRvU25hcHNob3QoKnRoaXMpOworfQorCitib29sIFZpZXdT
bmFwc2hvdDo6aGFzSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fdGV4dHVyZTsKK30K
Kwordm9pZCBWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UoKQoreworICAgIGlmICghaGFzSW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigp
LndpbGxSZW1vdmVJbWFnZUZyb21TbmFwc2hvdCgqdGhpcyk7CisKKyAgICBtX3RleHR1cmUgPSBu
dWxscHRyOworfQorCitzaXplX3QgVmlld1NuYXBzaG90OjppbWFnZVNpemVJbkJ5dGVzKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQg
d2lkdGggPSBnZGtfdGV4dHVyZV9nZXRfd2lkdGgobV90ZXh0dXJlLmdldCgpKTsKKyAgICBpbnQg
aGVpZ2h0ID0gZ2RrX3RleHR1cmVfZ2V0X2hlaWdodChtX3RleHR1cmUuZ2V0KCkpOworCisgICAg
Ly8gRklYTUU6IFVuZm9ydHVuYXRlbHkgd2UgZG9uJ3QgaGF2ZSBhIHdheSB0byBnZXQgc2l6ZSBv
ZiBhIHRleHR1cmUKKyAgICAvLyBpbiBieXRlcywgc28gd2UnbGwgaGF2ZSB0byBtYWtlIHNvbWV0
aGluZyB1cC4gTGV0J3MgYXNzdW1lIHRoYXQKKyAgICAvLyBwaXhlbCA9PSA0IGJ5dGVzLgorICAg
IHJldHVybiB3aWR0aCAqIGhlaWdodCAqIDQ7Cit9CisKK1dlYkNvcmU6OkludFNpemUgVmlld1Nu
YXBzaG90OjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGludCB3aWR0aCA9IGdka190ZXh0dXJlX2dldF93aWR0aChtX3RleHR1
cmUuZ2V0KCkpOworICAgIGludCBoZWlnaHQgPSBnZGtfdGV4dHVyZV9nZXRfaGVpZ2h0KG1fdGV4
dHVyZS5nZXQoKSk7CisKKyAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKLS0gCjIuMzEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429526</attachid>
            <date>2021-05-24 05:06:20 -0700</date>
            <delta_ts>2021-05-27 01:35:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>23655</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAwNWRjMWM3MThhODhkNmZhM2RmNTE0MGIzMmMzNWI1NDgxMzdlMDU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNTozMzo0MyArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCAg
ICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggICAg
ICB8ICAgNiArCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
fCAgNTAgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgICAgICAgICAgICAg
ICAgICB8ICAgMyArLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cCAgIHwgIDMzICsrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAg
ICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oICB8ICAxMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
aCAgIHwgIDE4ICsrKwogLi4uL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwICAgICAg
ICAgIHwgMTE0ICsrKysrKysrKysrKysrKystLQogLi4uU3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9IHwgICA0ICsKIC4uLi9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hv
dFN0b3JlR3RrNC5jcHAgICB8ICA4OCArKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwg
MzQzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFwc2hvdFN0
b3JlR3RrMy5jcHB9ICg5OSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2YTRk
NmMwYzJiLi5kMWE3MmNlMjIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0w
NS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAg
IFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5kZXJOb2Rl
IGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwOgor
ICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4YW5kZXIg
TWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lP
TjogS2luZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGggYXN5bmMg
c2Nyb2xsaW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dS
ZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3Bw
CmluZGV4IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShH
VEs0KQordGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBw
dHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihwdHIpOwor
ICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdza1JlbmRl
ck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25vZGVfdW5y
ZWYocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQ
dHJHdGsuaAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5cGVkZWYg
c3RydWN0IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVjdCBfU2Vj
cmV0VmFsdWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9kZSBHc2tS
ZW5kZXJOb2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAgdGVtcGxh
dGUgPD4gR3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwogdGVtcGxh
dGUgPD4gdm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgogCisjaWYg
VVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1JlbmRlck5v
ZGUqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2RlKiBwdHIp
OworI2VuZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLmNiNjFiZDQwNzE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxl
bmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3Ig
bmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJlIGluc3Rl
YWQgb2YgQ2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdTbmFwc2hv
dFN0b3JlR3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAgc2luY2Ug
dGhleSBkb24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFraW5nIGEg
dmlldyBzbmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4KKworICAg
ICAgICBXaGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSByZW5kZXIg
bm9kZSBmcm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFjayBjb2xv
ciwgdGhlbiByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJvLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgc2FtZSBkaW1taW5nK3NoYWRvdyBhcyBpbiBHVEszLiBUaGlz
IHRpbWUgZG9uJ3QgYm90aGVyCisgICAgICAgIHdpdGggQ1NTLCB0aGUgYXBwcm9hY2ggd2UgdXNl
ZCBpbiBHVEszIGRvZXNuJ3Qgd29yayBhbnltb3JlLCBhbmQgc2luY2UKKyAgICAgICAgZWxlbWVu
dHMgbGlrZSBzY3JvbGxiYXJzIGFyZW4ndCB0aGVtZWFibGUgYW55d2F5IGl0J3Mgbm90IHZlcnkg
aW1wb3J0YW50CisgICAgICAgIHRvIHByZXNlcnZlIHRoYXQuCisKKyAgICAgICAgKiBTb3VyY2Vz
R1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlVGV4dHVyZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25h
cHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmlld1NuYXBz
aG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9W
aWV3U25hcHNob3RTdG9yZUd0azQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Vmll
d1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OlZpZXdT
bmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorCiAyMDIxLTA1LTE1ICBJYW4gR2ls
YmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IDg5NGU1ZDRkMzI1ZS4uYTQzOTFiZTdiNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTI1
OSw3ICsyNTksOCBAQCBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAgQG5vLXVu
aWZ5CiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCiBV
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4Mi4uNDJk
MWFhNDQ1YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgUmVmUHRyPFdlYktp
dDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0
V2ViVmlld0Jhc2UKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZhY2UuZ2V0
KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKQEAgLTI0ODksMTEgKzI0OTAsMzkgQEAg
UmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25h
cHNob3QoV2ViS2l0V2ViVmlld0Jhc2UKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgp
LCBjbGlwUmVjdC0+eCgpLCBjbGlwUmVjdC0+eSgpLCBjbGlwUmVjdC0+d2lkdGgoKSwgY2xpcFJl
Y3QtPmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjci5nZXQoKSk7CiAgICAgfQotI2lm
ICFVU0UoR1RLNCkKICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSksIGNyLmdldCgpKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFZpZXdTbmFwc2hv
dDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworI2Vsc2UKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBhdXRvKiByZW5k
ZXJlciA9IGd0a19uYXRpdmVfZ2V0X3JlbmRlcmVyKEdUS19OQVRJVkUocHJpdi0+dG9wbGV2ZWxP
blNjcmVlbldpbmRvdykpOworCisgICAgR1JlZlB0cjxHdGtTbmFwc2hvdD4gc25hcHNob3QgPSBh
ZG9wdEdSZWYoZ3RrX3NuYXBzaG90X25ldygpKTsKKworICAgIGlmIChjbGlwUmVjdCkgeworICAg
ICAgICBncmFwaGVuZV9wb2ludF90IHBvaW50ID0geyAtc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBS
ZWN0LT54KCkpLCAtc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT55KCkpIH07CisgICAgICAg
IGdyYXBoZW5lX3JlY3RfdCByZWN0ID0geworICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxmbG9h
dD4oY2xpcFJlY3QtPngoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjbGlwUmVjdC0+eSgpKSB9LAor
ICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPndpZHRoKCkpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPmhlaWdodCgpKSB9CisgICAgICAgIH07CisKKyAgICAg
ICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hvdC5nZXQoKSwgJnBvaW50KTsKKyAgICAg
ICAgZ3RrX3NuYXBzaG90X3B1c2hfY2xpcChzbmFwc2hvdC5nZXQoKSwgJnJlY3QpOworICAgIH0K
KworICAgIGd0a19zbmFwc2hvdF9zY2FsZShzbmFwc2hvdC5nZXQoKSwgZGV2aWNlU2NhbGUsIGRl
dmljZVNjYWxlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNuYXBzaG90KEdUS19XSURHRVQod2Vi
a2l0V2ViVmlld0Jhc2UpLCBzbmFwc2hvdC5nZXQoKSk7CisKKyAgICBpZiAoY2xpcFJlY3QpCisg
ICAgICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QuZ2V0KCkpOworCisgICAgR1JlZlB0cjxH
c2tSZW5kZXJOb2RlPiByZW5kZXJOb2RlID0gYWRvcHRHUmVmKGd0a19zbmFwc2hvdF90b19ub2Rl
KHNuYXBzaG90LmdldCgpKSk7CisKKyAgICBncmFwaGVuZV9yZWN0X3Qgdmlld3BvcnQgPSB7IDAs
IDAsIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
c2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBHZGtUZXh0dXJlKiB0ZXh0dXJlID0gZ3NrX3JlbmRlcmVy
X3JlbmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmlld3BvcnQpOwor
CisgICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ck1haW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRp
b25TZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
YWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRhMDcyM2IuLjgx
NjZjOTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9STShHVEspCisj
aWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQ
TkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5o
CmluZGV4IGI4NmUwMGI2YzI5ZC4uZTUwM2FlZmU5OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAsMTQgQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgorCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+CisjZWxz
ZQorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxNSArNDQxLDIwIEBAIHByaXZhdGU6CiAKICAg
ICBTd2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwogCisjaWYgVVNF
KEdUSzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90
UGF0dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9jdXJyZW50U3dp
cGVTbmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9zd2lwZURp
bW1pbmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVTaGFkb3dQ
YXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3JkZXJQYXR0ZXJu
OwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0dGVybjsKKwog
ICAgIGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lwZUJvcmRlclNpemU7CiAg
ICAgaW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKICAgICBHUmVmUHRyPEd0a0Nzc1Byb3ZpZGVyPiBt
X2Nzc1Byb3ZpZGVyOworI2VuZGlmCiAKICAgICBib29sIG1faXNTaW11bGF0ZWRTd2lwZSB7IGZh
bHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdT
bmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5oCmluZGV4IGQyODBkYWVlOThkNy4uNzczMmE1MDBjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTM2LDggKzM2LDEyIEBACiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CisjZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01MCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SU9TdXJmYWNlPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisg
ICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYp
OworI2Vsc2UKICAgICBzdGF0aWMgUmVmPFZpZXdTbmFwc2hvdD4gY3JlYXRlKFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+JiYpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIH5WaWV3U25hcHNob3QoKTsK
QEAgLTg3LDcgKzk1LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQor
I2lmIFVTRShHVEs0KQorICAgIEdka1RleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KKyNlbHNlCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisjZW5kaWYKIAogICAgIHNpemVfdCBp
bWFnZVNpemVJbkJ5dGVzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29u
c3Q7CkBAIC0xMDEsOSArMTEzLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykKKyNpZiBVU0UoR1RLNCkKKyAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoR1JlZlB0cjxH
ZGtUZXh0dXJlPiYmKTsKKworICAgIEdSZWZQdHI8R2RrVGV4dHVyZT4gbV90ZXh0dXJlOworI2Vs
c2UKICAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7
CiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisjZW5kaWYKICNlbmRp
ZgogCiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKaW5kZXgg
ZDRjY2NkM2JjMmNkLi4zMzY1N2VhYmRiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCkBAIC00OCw2ICs0
OCwyMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQW5pbWF0aW9uRHVyYXRpb25NdWx0aXBs
aWVyID0gMzsKIHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVDYW5jZWxBcmVhID0gMC41Owogc3Rh
dGljIGNvbnN0IGRvdWJsZSBzd2lwZUNhbmNlbFZlbG9jaXR5VGhyZXNob2xkID0gMC40OwogCisj
aWYgVVNFKEdUSzQpCitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0
eSA9IDAuMDY7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0eSA9
IDAuMDU7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkgPSAw
LjA1Oworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ID0gMC4x
MjsKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCA9IDU3Oworc3Rh
dGljIGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wc1tdID0geworICAg
IHsgMCwgICAgIHsgMCwgMCwgMCwgMC4wOCAgfSB9LAorICAgIHsgMC4xMjUsIHsgMCwgMCwgMCwg
MC4wNTMgfSB9LAorICAgIHsgMC40MjgsIHsgMCwgMCwgMCwgMC4wMjYgfSB9LAorICAgIHsgMC43
MTQsIHsgMCwgMCwgMCwgMC4wMSAgfSB9LAorICAgIHsgMSwgICAgIHsgMCwgMCwgMCwgMCAgICAg
fSB9Cit9OworI2VuZGlmCisKIHN0YXRpYyBib29sIGlzRXZlbnRTdG9wKFBsYXRmb3JtR3RrU2Ny
b2xsRGF0YSogZXZlbnQpCiB7CiAgICAgcmV0dXJuIGV2ZW50LT5pc0VuZDsKQEAgLTMwOSw2ICsz
MjQsMTkgQEAgc3RhdGljIGludCBlbGVtZW50V2lkdGgoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0
KQogCiAgICAgcmV0dXJuIHdpZHRoOwogfQorCisjZWxzZQorCitzdGF0aWMgR3NrUmVuZGVyTm9k
ZSogY3JlYXRlVGV4dHVyZU5vZGUoR2RrVGV4dHVyZSAqdGV4dHVyZSwgRmxvYXRTaXplICZzaXpl
KQoreworICAgIEd0a1NuYXBzaG90KiBzbmFwc2hvdCA9IGd0a19zbmFwc2hvdF9uZXcoKTsKKyAg
ICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IHsgMCwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUu
d2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLmhlaWdodCgpKSB9OworCisgICAgZ3Rr
X3NuYXBzaG90X2FwcGVuZF90ZXh0dXJlKHNuYXBzaG90LCB0ZXh0dXJlLCAmcmVjdCk7CisKKyAg
ICByZXR1cm4gZ3RrX3NuYXBzaG90X2ZyZWVfdG9fbm9kZShzbmFwc2hvdCk7Cit9CisKICNlbmRp
ZgogCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKQpA
QCAtMzE5LDM0ICszNDcsNTggQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dp
cGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgIHdpbGxC
ZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpTd2lwZSk7CiAKKyAgICBGbG9hdFNpemUgdmll
d1NpemUobV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CisKKyNpZiBVU0UoR1RLNCkKKyAgICBn
cmFwaGVuZV9yZWN0X3QgYm91bmRzID0geyAwLCAwLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6
ZS5oZWlnaHQoKSB9OworI2VuZGlmCisKICAgICBpZiAoYXV0byogc25hcHNob3QgPSB0YXJnZXRJ
dGVtLT5zbmFwc2hvdCgpKSB7CiAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBzbmFw
c2hvdDsKIAotICAgICAgICBGbG9hdFNpemUgdmlld1NpemUobV93ZWJQYWdlUHJveHkudmlld1Np
emUoKSk7CiAgICAgICAgIGlmIChzbmFwc2hvdC0+aGFzSW1hZ2UoKSAmJiBzaG91bGRVc2VTbmFw
c2hvdEZvclNpemUoKnNuYXBzaG90LCB2aWV3U2l6ZSwgMCkpCisjaWYgVVNFKEdUSzQpCisgICAg
ICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihjcmVhdGVU
ZXh0dXJlTm9kZShzbmFwc2hvdC0+dGV4dHVyZSgpLCB2aWV3U2l6ZSkpOworI2Vsc2UKICAgICAg
ICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0
dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc25hcHNob3QtPnN1cmZhY2UoKSkpOworI2VuZGlmCiAK
ICAgICAgICAgQ29sb3IgY29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAg
ICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fYmFja2dyb3VuZENvbG9y
Rm9yQ3VycmVudFNuYXBzaG90ID0gY29sb3I7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudFN3
aXBlU25hcHNob3RQYXR0ZXJuKSB7CiAgICAgICAgICAgICAgICAgYXV0byBbcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGFdID0gY29sb3IudG9TUkdCQUxvc3N5PGZsb2F0PigpOworI2lmIFVTRShHVEs0
KQorICAgICAgICAgICAgICAgIEdka1JHQkEgcmdiYSA9IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEgfTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFk
b3B0R1JlZihnc2tfY29sb3Jfbm9kZV9uZXcoJnJnYmEsICZib3VuZHMpKTsKKyNlbHNlCiAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWly
b19wYXR0ZXJuX2NyZWF0ZV9yZ2JhKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CisjZW5kaWYK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotI2lmICFVU0UoR1RLNCkKICAgICBp
ZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKSB7CiAgICAgICAgIEdka1JHQkEgY29s
b3I7CiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBndGtfd2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0
KG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIGlmIChndGtfc3R5bGVfY29u
dGV4dF9sb29rdXBfY29sb3IoY29udGV4dCwgInRoZW1lX2Jhc2VfY29sb3IiLCAmY29sb3IpKQor
I2lmIFVTRShHVEs0KQorICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4g
PSBhZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3KCZjb2xvciwgJmJvdW5kcykpOworI2Vsc2UK
ICAgICAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fp
cm9fcGF0dGVybl9jcmVhdGVfcmdiYShjb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVl
LCBjb2xvci5hbHBoYSkpOworI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybikKKyAgICBpZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJu
KSB7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIEdka1JHQkEgY29sb3IgPSB7IDEsIDEsIDEsIDEg
fTsKKyAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3Nr
X2NvbG9yX25vZGVfbmV3KCZjb2xvciwgJmJvdW5kcykpOworI2Vsc2UKICAgICAgICAgbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9y
Z2IoMSwgMSwgMSkpOworI2VuZGlmCisgICAgfQogCisjaWYgIVVTRShHVEs0KQogICAgIGF1dG8g
c2l6ZSA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKTsKIAogICAgIGlmICgh
bV9jc3NQcm92aWRlcikgewpAQCAtNDA0LDMzICs0NTYsNzEgQEAgdm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OnNuYXBzaG90KEd0a1NuYXBzaG90KiBzbmFwc2hvdCwgR3NrUmVuZGVyTm9kZSog
cGFnZVIKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKICAgICBkb3VibGUgc2NhbGUg
PSBtX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgZG91YmxlIHN3aXBp
bmdMYXllck9mZnNldCA9IChzd2lwaW5nTGVmdCA/IDAgOiB3aWR0aCkgKyBmbG9vcih3aWR0aCAq
IHByb2dyZXNzICogc2NhbGUpIC8gc2NhbGU7CisgICAgZmxvYXQgc3dpcGluZ0xheWVyT2Zmc2V0
ID0gKHN3aXBpbmdMZWZ0ID8gMCA6IHdpZHRoKSArIGZsb29yKHdpZHRoICogcHJvZ3Jlc3MgKiBz
Y2FsZSkgLyBzY2FsZTsKIAotICAgIGRvdWJsZSBkaW1taW5nUHJvZ3Jlc3MgPSBzd2lwaW5nTGVm
dCA/IDEgLSBwcm9ncmVzcyA6IC1wcm9ncmVzczsKKyAgICBmbG9hdCBkaW1taW5nUHJvZ3Jlc3Mg
PSBzd2lwaW5nTGVmdCA/IDEgLSBwcm9ncmVzcyA6IC1wcm9ncmVzczsKICAgICBpZiAoaXNSVEwp
IHsKICAgICAgICAgZGltbWluZ1Byb2dyZXNzID0gMSAtIGRpbW1pbmdQcm9ncmVzczsKICAgICAg
ICAgc3dpcGluZ0xheWVyT2Zmc2V0ID0gLSh3aWR0aCAtIHN3aXBpbmdMYXllck9mZnNldCk7CiAg
ICAgfQogCisgICAgZmxvYXQgcmVtYWluaW5nU3dpcGVEaXN0YW5jZSA9IGRpbW1pbmdQcm9ncmVz
cyAqIHdpZHRoOworCisgICAgZmxvYXQgc2hhZG93T3BhY2l0eSA9IDE7CisgICAgaWYgKHJlbWFp
bmluZ1N3aXBlRGlzdGFuY2UgPCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCkKKyAgICAgICAgc2hh
ZG93T3BhY2l0eSA9IHJlbWFpbmluZ1N3aXBlRGlzdGFuY2UgLyBzd2lwZU92ZXJsYXlTaGFkb3dX
aWR0aDsKKwogICAgIGd0a19zbmFwc2hvdF9zYXZlKHNuYXBzaG90KTsKIAotICAgIGdyYXBoZW5l
X3BvaW50X3QgdHJhbnNsYXRpb24gPSB7IHN0YXRpY19jYXN0PGZsb2F0Pihzd2lwaW5nTGF5ZXJP
ZmZzZXQpLCAwIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IGNsaXAgPSB7IDAsIDAsIHN0YXRpY19j
YXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZS5oZWlnaHQo
KSkgfTsKKyAgICBndGtfc25hcHNob3RfcHVzaF9jbGlwKHNuYXBzaG90LCAmY2xpcCk7CisKKyAg
ICBncmFwaGVuZV9wb2ludF90IHRyYW5zbGF0aW9uID0geyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAg
fTsKICAgICBpZiAoIXN3aXBpbmdCYWNrKSB7CiAgICAgICAgIGd0a19zbmFwc2hvdF9hcHBlbmRf
bm9kZShzbmFwc2hvdCwgcGFnZVJlbmRlck5vZGUpOwogICAgICAgICBndGtfc25hcHNob3RfdHJh
bnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24pOwogICAgIH0KIAotICAgIGdyYXBoZW5lX3Jl
Y3RfdCByZWN0ID0geyAwLCAwLCAoZmxvYXQpd2lkdGgsIChmbG9hdCloZWlnaHQgfTsKLSAgICBh
dXRvKiBjciA9IGd0a19zbmFwc2hvdF9hcHBlbmRfY2Fpcm8oc25hcHNob3QsICZyZWN0KTsKLSAg
ICBjYWlyb19zZXRfc291cmNlKGNyLCBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybi5nZXQo
KSk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBj
YWlyb19maWxsKGNyKTsKKyAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIG1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuLmdldCgpKTsKIAogICAgIGlmIChzd2lwaW5nQmFj
aykgewogICAgICAgICBndGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRp
b24pOwogICAgICAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIHBhZ2VSZW5k
ZXJOb2RlKTsKICAgICB9CiAKKyAgICBpZiAoIXByb2dyZXNzKSB7CisgICAgICAgIGd0a19zbmFw
c2hvdF9wb3Aoc25hcHNob3QpOworICAgICAgICBndGtfc25hcHNob3RfcmVzdG9yZShzbmFwc2hv
dCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc1JUTCkgeworICAgICAg
ICB0cmFuc2xhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoKSwgMCB9OworICAgICAg
ICBndGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24pOworICAgIH0g
ZWxzZQorICAgICAgICBndGtfc25hcHNob3Rfc2NhbGUoc25hcHNob3QsIC0xLCAxKTsKKworICAg
IEdka1JHQkEgZGltbWluZyA9IHsgMCwgMCwgMCwgc3dpcGVPdmVybGF5RGltbWluZ09wYWNpdHkg
KiBkaW1taW5nUHJvZ3Jlc3MgfTsKKyAgICBHZGtSR0JBIGJvcmRlciA9IHsgMCwgMCwgMCwgc3dp
cGVPdmVybGF5Qm9yZGVyT3BhY2l0eSB9OworICAgIEdka1JHQkEgb3V0bGluZSA9IHsgMSwgMSwg
MSwgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkgfTsKKworICAgIGdyYXBoZW5lX3JlY3RfdCBk
aW1taW5nUmVjdCA9IHsgMCwgMCwgIHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCksIHN0YXRpY19j
YXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IGJvcmRlclJlY3QgPSB7
IDAsIDAsIDEsIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcmVj
dF90IG91dGxpbmVSZWN0ID0geyAtMSwgMCwgMSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCkg
fTsKKyAgICBncmFwaGVuZV9yZWN0X3Qgc2hhZG93UmVjdCA9IHsgMCwgMCwgc3dpcGVPdmVybGF5
U2hhZG93V2lkdGgsIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVf
cG9pbnRfdCBzaGFkb3dTdGFydCA9IHsgMCwgMCB9OworICAgIGdyYXBoZW5lX3BvaW50X3Qgc2hh
ZG93RW5kID0geyBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCwgMCB9OworCisgICAgZ3RrX3NuYXBz
aG90X2FwcGVuZF9jb2xvcihzbmFwc2hvdCwgJmRpbW1pbmcsICZkaW1taW5nUmVjdCk7CisgICAg
Z3RrX3NuYXBzaG90X2FwcGVuZF9jb2xvcihzbmFwc2hvdCwgJmJvcmRlciwgJmJvcmRlclJlY3Qp
OworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfY29sb3Ioc25hcHNob3QsICZvdXRsaW5lLCAmb3V0
bGluZVJlY3QpOworICAgIGd0a19zbmFwc2hvdF9wdXNoX29wYWNpdHkoc25hcHNob3QsIHNoYWRv
d09wYWNpdHkpOworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfbGluZWFyX2dyYWRpZW50KHNuYXBz
aG90LCAmc2hhZG93UmVjdCwgJnNoYWRvd1N0YXJ0LCAmc2hhZG93RW5kLAorICAgICAgICBzd2lw
ZU92ZXJsYXlTaGFkb3dTdG9wcywgR19OX0VMRU1FTlRTKHN3aXBlT3ZlcmxheVNoYWRvd1N0b3Bz
KSk7CisgICAgZ3RrX3NuYXBzaG90X3BvcChzbmFwc2hvdCk7CisKKyAgICBndGtfc25hcHNob3Rf
cG9wKHNuYXBzaG90KTsKICAgICBndGtfc25hcHNob3RfcmVzdG9yZShzbmFwc2hvdCk7CiB9CiAj
ZWxzZQpAQCAtNTM2LDEwICs2MjYsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJl
bW92ZVN3aXBlU25hcHNob3QoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybiA9IG51bGxwdHI7CisjaWYgIVVTRShHVEs0KQogICAgIG1fc3dpcGVE
aW1taW5nUGF0dGVybiA9IG51bGxwdHI7CiAgICAgbV9zd2lwZVNoYWRvd1BhdHRlcm4gPSBudWxs
cHRyOwogICAgIG1fc3dpcGVCb3JkZXJQYXR0ZXJuID0gbnVsbHB0cjsKICAgICBtX3N3aXBlT3V0
bGluZVBhdHRlcm4gPSBudWxscHRyOworI2VuZGlmCiAKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBz
aG90ID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9W
aWV3U25hcHNob3RTdG9yZUd0azMuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0ay5jcHAKcmVu
YW1lIHRvIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMu
Y3BwCmluZGV4IDZkMmJhYWQ2ODhlYS4uOGRkMGYwNjg4MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld1NuYXBzaG90U3Rv
cmUuaCIKIAorI2lmICFVU0UoR1RLNCkKKwogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRp
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MywzICs4NSw1IEBAIFdlYkNvcmU6Oklu
dFNpemUgVmlld1NuYXBzaG90OjpzaXplKCkgY29uc3QKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmll
d1NuYXBzaG90U3RvcmVHdGs0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmJkM2U3NTExMjQwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLGRkCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWV3U25hcHNob3RT
dG9yZS5oIgorCisjaWYgVVNFKEdUSzQpCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxWaWV3U25hcHNob3Q+IFZpZXdTbmFwc2hvdDo6Y3JlYXRl
KEdSZWZQdHI8R2RrVGV4dHVyZT4mJiB0ZXh0dXJlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZXdTbmFwc2hvdChXVEZNb3ZlKHRleHR1cmUpKSk7Cit9CisKK1ZpZXdTbmFwc2hvdDo6
Vmlld1NuYXBzaG90KEdSZWZQdHI8R2RrVGV4dHVyZT4mJiB0ZXh0dXJlKQorICAgIDogbV90ZXh0
dXJlKFdURk1vdmUodGV4dHVyZSkpCit7CisgICAgaWYgKGhhc0ltYWdlKCkpCisgICAgICAgIFZp
ZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5kaWRBZGRJbWFnZVRvU25hcHNob3QoKnRoaXMp
OworfQorCitib29sIFZpZXdTbmFwc2hvdDo6aGFzSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVy
biAhIW1fdGV4dHVyZTsKK30KKwordm9pZCBWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UoKQorewor
ICAgIGlmICghaGFzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlld1NuYXBzaG90
U3RvcmU6OnNpbmdsZXRvbigpLndpbGxSZW1vdmVJbWFnZUZyb21TbmFwc2hvdCgqdGhpcyk7CisK
KyAgICBtX3RleHR1cmUgPSBudWxscHRyOworfQorCitzaXplX3QgVmlld1NuYXBzaG90OjppbWFn
ZVNpemVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBpbnQgd2lkdGggPSBnZGtfdGV4dHVyZV9nZXRfd2lkdGgobV90ZXh0dXJl
LmdldCgpKTsKKyAgICBpbnQgaGVpZ2h0ID0gZ2RrX3RleHR1cmVfZ2V0X2hlaWdodChtX3RleHR1
cmUuZ2V0KCkpOworCisgICAgLy8gRklYTUU6IFVuZm9ydHVuYXRlbHkgd2UgZG9uJ3QgaGF2ZSBh
IHdheSB0byBnZXQgc2l6ZSBvZiBhIHRleHR1cmUKKyAgICAvLyBpbiBieXRlcywgc28gd2UnbGwg
aGF2ZSB0byBtYWtlIHNvbWV0aGluZyB1cC4gTGV0J3MgYXNzdW1lIHRoYXQKKyAgICAvLyBwaXhl
bCA9PSA0IGJ5dGVzLgorICAgIHJldHVybiB3aWR0aCAqIGhlaWdodCAqIDQ7Cit9CisKK1dlYkNv
cmU6OkludFNpemUgVmlld1NuYXBzaG90OjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4
dHVyZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGludCB3aWR0aCA9IGdka190ZXh0dXJl
X2dldF93aWR0aChtX3RleHR1cmUuZ2V0KCkpOworICAgIGludCBoZWlnaHQgPSBnZGtfdGV4dHVy
ZV9nZXRfaGVpZ2h0KG1fdGV4dHVyZS5nZXQoKSk7CisKKyAgICByZXR1cm4geyB3aWR0aCwgaGVp
Z2h0IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKLS0gCjIuMzEuMQoK
</data>
<flag name="review"
          id="450732"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="450733"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429857</attachid>
            <date>2021-05-27 01:35:30 -0700</date>
            <delta_ts>2021-06-08 23:55:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>25046</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA1N2UwODA3OWViYWZhMzg1N2E1YjQwOGNkMjRlYTVjY2I5NzFiNTgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNTozMzo0MyArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCAg
ICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggICAg
ICB8ICAgNiArKwogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgIDUwICsrKysrKysrKwogU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCAgICAgICAgICAg
ICAgICAgIHwgICAzICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwICAgfCAgMzMgKysrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5j
cHAgICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oICB8ICAxMiArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0
b3JlLmNwcCB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3Rv
cmUuaCAgIHwgIDIyICsrKy0KIC4uLi9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCAg
ICAgICAgICB8IDEwMSArKysrKysrKysrKysrKysrLS0KIC4uLlN0b3JlR3RrLmNwcCA9PiBWaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwfSB8ICAgNiArLQogLi4uL1VJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGs0LmNwcCAgIHwgIDg4ICsrKysrKysrKysrKysrKwogMTMgZmlsZXMgY2hh
bmdlZCwgMzM1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9ICg5NyUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDc2YTRkNmMwYzJiLi5kMWE3MmNlMjIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisg
ICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5k
ZXJOb2RlIGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsu
Y3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4
YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVH
UkVTU0lPTjogS2luZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGgg
YXN5bmMgc2Nyb2xsaW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dSZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJH
dGsuY3BwCmluZGV4IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0
ZSA8PiB2b2lkIGRlcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lm
IFVTRShHVEs0KQordGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJO
b2RlKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihw
dHIpOworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdz
a1JlbmRlck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25v
ZGVfdW5yZWYocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dSZWZQdHJHdGsuaAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5
cGVkZWYgc3RydWN0IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVj
dCBfU2VjcmV0VmFsdWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9k
ZSBHc2tSZW5kZXJOb2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAg
dGVtcGxhdGUgPD4gR3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwog
dGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgog
CisjaWYgVVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1Jl
bmRlck5vZGUqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2Rl
KiBwdHIpOworI2VuZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLmNiNjFiZDQw
NzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNS0yNCAgQWxleGFuZGVyIE1p
a2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9y
dCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJl
IGluc3RlYWQgb2YgQ2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdT
bmFwc2hvdFN0b3JlR3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAg
c2luY2UgdGhleSBkb24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFr
aW5nIGEgdmlldyBzbmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4K
KworICAgICAgICBXaGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSBy
ZW5kZXIgbm9kZSBmcm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFj
ayBjb2xvciwgdGhlbiByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJv
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgc2FtZSBkaW1taW5nK3NoYWRvdyBhcyBpbiBHVEsz
LiBUaGlzIHRpbWUgZG9uJ3QgYm90aGVyCisgICAgICAgIHdpdGggQ1NTLCB0aGUgYXBwcm9hY2gg
d2UgdXNlZCBpbiBHVEszIGRvZXNuJ3Qgd29yayBhbnltb3JlLCBhbmQgc2luY2UKKyAgICAgICAg
ZWxlbWVudHMgbGlrZSBzY3JvbGxiYXJzIGFyZW4ndCB0aGVtZWFibGUgYW55d2F5IGl0J3Mgbm90
IHZlcnkgaW1wb3J0YW50CisgICAgICAgIHRvIHByZXNlcnZlIHRoYXQuCisKKyAgICAgICAgKiBT
b3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5o
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlVGV4dHVyZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpW
aWV3U25hcHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmll
d1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktp
dDo6Vmlld1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6
OlZpZXdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorCiAyMDIxLTA1LTE1ICBJ
YW4gR2lsYmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0CmluZGV4IDg5NGU1ZDRkMzI1ZS4uYTQzOTFiZTdiNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
QEAgLTI1OSw3ICsyNTksOCBAQCBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAg
QG5vLXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3Mv
Z3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RT
dG9yZUd0azMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsu
Y3BwCiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4
Mi4uNDJkMWFhNDQ1YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgUmVmUHRy
PFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3Qo
V2ViS2l0V2ViVmlld0Jhc2UKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKKyNpZiAhVVNFKEdU
SzQpCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZh
Y2UuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKQEAgLTI0ODksMTEgKzI0OTAs
MzkgQEAgUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VW
aWV3U25hcHNob3QoV2ViS2l0V2ViVmlld0Jhc2UKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LmdldCgpLCBjbGlwUmVjdC0+eCgpLCBjbGlwUmVjdC0+eSgpLCBjbGlwUmVjdC0+d2lkdGgoKSwg
Y2xpcFJlY3QtPmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjci5nZXQoKSk7CiAgICAg
fQotI2lmICFVU0UoR1RLNCkKICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3
ZWJraXRXZWJWaWV3QmFzZSksIGNyLmdldCgpKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFZpZXdT
bmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworI2Vsc2UKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBhdXRv
KiByZW5kZXJlciA9IGd0a19uYXRpdmVfZ2V0X3JlbmRlcmVyKEdUS19OQVRJVkUocHJpdi0+dG9w
bGV2ZWxPblNjcmVlbldpbmRvdykpOworCisgICAgR1JlZlB0cjxHdGtTbmFwc2hvdD4gc25hcHNo
b3QgPSBhZG9wdEdSZWYoZ3RrX3NuYXBzaG90X25ldygpKTsKKworICAgIGlmIChjbGlwUmVjdCkg
eworICAgICAgICBncmFwaGVuZV9wb2ludF90IHBvaW50ID0geyAtc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNsaXBSZWN0LT54KCkpLCAtc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT55KCkpIH07Cisg
ICAgICAgIGdyYXBoZW5lX3JlY3RfdCByZWN0ID0geworICAgICAgICAgICAgeyBzdGF0aWNfY2Fz
dDxmbG9hdD4oY2xpcFJlY3QtPngoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjbGlwUmVjdC0+eSgp
KSB9LAorICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPndpZHRoKCkp
LCBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPmhlaWdodCgpKSB9CisgICAgICAgIH07CisK
KyAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hvdC5nZXQoKSwgJnBvaW50KTsK
KyAgICAgICAgZ3RrX3NuYXBzaG90X3B1c2hfY2xpcChzbmFwc2hvdC5nZXQoKSwgJnJlY3QpOwor
ICAgIH0KKworICAgIGd0a19zbmFwc2hvdF9zY2FsZShzbmFwc2hvdC5nZXQoKSwgZGV2aWNlU2Nh
bGUsIGRldmljZVNjYWxlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNuYXBzaG90KEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2UpLCBzbmFwc2hvdC5nZXQoKSk7CisKKyAgICBpZiAoY2xpcFJl
Y3QpCisgICAgICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QuZ2V0KCkpOworCisgICAgR1Jl
ZlB0cjxHc2tSZW5kZXJOb2RlPiByZW5kZXJOb2RlID0gYWRvcHRHUmVmKGd0a19zbmFwc2hvdF90
b19ub2RlKHNuYXBzaG90LmdldCgpKSk7CisKKyAgICBncmFwaGVuZV9yZWN0X3Qgdmlld3BvcnQg
PSB7IDAsIDAsIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBHZGtUZXh0dXJlKiB0ZXh0dXJlID0gZ3NrX3Jl
bmRlcmVyX3JlbmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmlld3Bv
cnQpOworCisgICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkp
OworI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvck1haW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1
dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRhMDcy
M2IuLjgxNjZjOTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fp
cm8uY3BwCkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9STShH
VEspCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2NEVu
Y29kZWRQTkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCmluZGV4IGI4NmUwMGI2YzI5ZC4uZTUwM2FlZmU5OWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAsMTQg
QEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9V
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+
CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxNSArNDQxLDIwIEBAIHByaXZhdGU6
CiAKICAgICBTd2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwogCisj
aWYgVVNFKEdUSzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lwZVNu
YXBzaG90UGF0dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9z
d2lwZURpbW1pbmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVT
aGFkb3dQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3JkZXJQ
YXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0dGVy
bjsKKwogICAgIGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lwZUJvcmRlclNp
emU7CiAgICAgaW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKICAgICBHUmVmUHRyPEd0a0Nzc1Byb3Zp
ZGVyPiBtX2Nzc1Byb3ZpZGVyOworI2VuZGlmCiAKICAgICBib29sIG1faXNTaW11bGF0ZWRTd2lw
ZSB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdTbmFwc2hvdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmNwcAppbmRleCAyMzMxOTJhOGYxNDEuLjU5ZjQ2YWUzMGMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtNTgsMTQgKzU4
LDE0IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OmRpZEFkZEltYWdlVG9TbmFwc2hvdChWaWV3
U25hcHNob3QmIHNuYXBzaG90KQogewogICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1fc25hcHNob3Rz
V2l0aEltYWdlcy5hZGQoJnNuYXBzaG90KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQo
aXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7Ci0gICAgbV9zbmFwc2hvdENhY2hlU2l6ZSArPSBzbmFw
c2hvdC5pbWFnZVNpemVJbkJ5dGVzKCk7CisgICAgbV9zbmFwc2hvdENhY2hlU2l6ZSArPSBzbmFw
c2hvdC5lc3RpbWF0ZUltYWdlU2l6ZUluQnl0ZXMoKTsKIH0KIAogdm9pZCBWaWV3U25hcHNob3RT
dG9yZTo6d2lsbFJlbW92ZUltYWdlRnJvbVNuYXBzaG90KFZpZXdTbmFwc2hvdCYgc25hcHNob3Qp
CiB7CiAgICAgYm9vbCByZW1vdmVkID0gbV9zbmFwc2hvdHNXaXRoSW1hZ2VzLnJlbW92ZSgmc25h
cHNob3QpOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgbV9zbmFw
c2hvdENhY2hlU2l6ZSAtPSBzbmFwc2hvdC5pbWFnZVNpemVJbkJ5dGVzKCk7CisgICAgbV9zbmFw
c2hvdENhY2hlU2l6ZSAtPSBzbmFwc2hvdC5lc3RpbWF0ZUltYWdlU2l6ZUluQnl0ZXMoKTsKIH0K
IAogdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cHJ1bmVTbmFwc2hvdHMoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25h
cHNob3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
aAppbmRleCBkMjgwZGFlZTk4ZDcuLjlkZDlkNDhhZTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCkBAIC0zNiw4ICszNiwxMiBAQAogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgor
I2Vsc2UKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjZW5kaWYKKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTAsNyArNTQsMTEgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Vmlld1NuYXBzaG90PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQorI2lmIFVTRShHVEs0KQorICAg
IHN0YXRpYyBSZWY8Vmlld1NuYXBzaG90PiBjcmVhdGUoR1JlZlB0cjxHZGtUZXh0dXJlPiYmKTsK
KyNlbHNlCiAgICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiYmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB+Vmlld1NuYXBzaG90KCk7CkBA
IC03OCw3ICs4Niw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBXZWJDb3Jl
OjpJT1N1cmZhY2UqIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0K
IAotICAgIHNpemVfdCBpbWFnZVNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNl
ID8gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCkgOiAwOyB9CisgICAgc2l6ZV90IGVzdGltYXRlSW1h
Z2VTaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+dG90
YWxCeXRlcygpIDogMDsgfQogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+c2l6ZSgpIDogV2ViQ29yZTo6SW50U2l6ZSgpOyB9
CiAKICAgICB2b2lkIHNldFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4pOwpAQCAtODcsOSArOTUsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShH
VEspCisjaWYgVVNFKEdUSzQpCisgICAgR2RrVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorI2Vsc2UKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKyNlbmRpZgogCi0gICAgc2l6
ZV90IGltYWdlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICBzaXplX3QgZXN0aW1hdGVJbWFnZVNp
emVJbkJ5dGVzKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CiAj
ZW5kaWYKIApAQCAtMTAxLDkgKzExMywxNSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShHVEspCisjaWYgVVNFKEdUSzQpCisgICAgZXhwbGljaXQgVmlld1NuYXBzaG90KEdSZWZQ
dHI8R2RrVGV4dHVyZT4mJik7CisKKyAgICBHUmVmUHRyPEdka1RleHR1cmU+IG1fdGV4dHVyZTsK
KyNlbHNlCiAgICAgZXhwbGljaXQgVmlld1NuYXBzaG90KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
JiYpOwogCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOworI2VuZGlmCiAj
ZW5kaWYKIAogICAgIHVpbnQ2NF90IG1fcmVuZGVyVHJlZVNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IGQ0Y2NjZDNiYzJjZC4uYTdmNmZjNjM5ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcApAQCAtNDgs
NiArNDgsMjEgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBzd2lwZUFuaW1hdGlvbkR1cmF0aW9uTXVs
dGlwbGllciA9IDM7CiBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQ2FuY2VsQXJlYSA9IDAuNTsK
IHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVDYW5jZWxWZWxvY2l0eVRocmVzaG9sZCA9IDAuNDsK
IAorI2lmIFVTRShHVEs0KQorc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheVNoYWRvd09w
YWNpdHkgPSAwLjA2Oworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheUJvcmRlck9wYWNp
dHkgPSAwLjA1Oworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheU91dGxpbmVPcGFjaXR5
ID0gMC4wNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlEaW1taW5nT3BhY2l0eSA9
IDAuMTI7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5U2hhZG93V2lkdGggPSA1NzsK
K3N0YXRpYyBjb25zdCBHc2tDb2xvclN0b3Agc3dpcGVPdmVybGF5U2hhZG93U3RvcHNbXSA9IHsK
KyAgICB7IDAsICAgICB7IDAsIDAsIDAsIDAuMDggIH0gfSwKKyAgICB7IDAuMTI1LCB7IDAsIDAs
IDAsIDAuMDUzIH0gfSwKKyAgICB7IDAuNDI4LCB7IDAsIDAsIDAsIDAuMDI2IH0gfSwKKyAgICB7
IDAuNzE0LCB7IDAsIDAsIDAsIDAuMDEgIH0gfSwKKyAgICB7IDEsICAgICB7IDAsIDAsIDAsIDAg
ICAgIH0gfQorfTsKKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpc0V2ZW50U3RvcChQbGF0Zm9ybUd0
a1Njcm9sbERhdGEqIGV2ZW50KQogewogICAgIHJldHVybiBldmVudC0+aXNFbmQ7CkBAIC0zMDks
NiArMzI0LDcgQEAgc3RhdGljIGludCBlbGVtZW50V2lkdGgoR3RrU3R5bGVDb250ZXh0KiBjb250
ZXh0KQogCiAgICAgcmV0dXJuIHdpZHRoOwogfQorCiAjZW5kaWYKIAogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRh
cmdldEl0ZW0sIFN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTMxOSwzNCArMzM1LDU4IEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAKICAgICB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0
dXJlVHlwZTo6U3dpcGUpOwogCisgICAgRmxvYXRTaXplIHZpZXdTaXplKG1fd2ViUGFnZVByb3h5
LnZpZXdTaXplKCkpOworCisjaWYgVVNFKEdUSzQpCisgICAgZ3JhcGhlbmVfcmVjdF90IGJvdW5k
cyA9IHsgMCwgMCwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkgfTsKKyNlbmRp
ZgorCiAgICAgaWYgKGF1dG8qIHNuYXBzaG90ID0gdGFyZ2V0SXRlbS0+c25hcHNob3QoKSkgewog
ICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25hcHNob3Q7CiAKLSAgICAgICAgRmxv
YXRTaXplIHZpZXdTaXplKG1fd2ViUGFnZVByb3h5LnZpZXdTaXplKCkpOwogICAgICAgICBpZiAo
c25hcHNob3QtPmhhc0ltYWdlKCkgJiYgc2hvdWxkVXNlU25hcHNob3RGb3JTaXplKCpzbmFwc2hv
dCwgdmlld1NpemUsIDApKQorI2lmIFVTRShHVEs0KQorICAgICAgICAgICAgbV9jdXJyZW50U3dp
cGVTbmFwc2hvdFBhdHRlcm4gPSBnc2tfdGV4dHVyZV9ub2RlX25ldyhzbmFwc2hvdC0+dGV4dHVy
ZSgpLCAmYm91bmRzKTsKKyNlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90
UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHNuYXBz
aG90LT5zdXJmYWNlKCkpKTsKKyNlbmRpZgogCiAgICAgICAgIENvbG9yIGNvbG9yID0gc25hcHNo
b3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CiAg
ICAgICAgICAgICBtX2JhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdCA9IGNvbG9yOwog
ICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybikgewogICAgICAg
ICAgICAgICAgIGF1dG8gW3JlZCwgZ3JlZW4sIGJsdWUsIGFscGhhXSA9IGNvbG9yLnRvU1JHQkFM
b3NzeTxmbG9hdD4oKTsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAgICAgICBHZGtSR0JBIHJn
YmEgPSB7IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIH07CisgICAgICAgICAgICAgICAgbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3KCZy
Z2JhLCAmYm91bmRzKSk7CisjZWxzZQogICAgICAgICAgICAgICAgIG1fY3VycmVudFN3aXBlU25h
cHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiYShyZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSkpOworI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKLSNpZiAhVVNFKEdUSzQpCiAgICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0
dGVybikgewogICAgICAgICBHZGtSR0JBIGNvbG9yOwogICAgICAgICBhdXRvKiBjb250ZXh0ID0g
Z3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChtX3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkp
OwogICAgICAgICBpZiAoZ3RrX3N0eWxlX2NvbnRleHRfbG9va3VwX2NvbG9yKGNvbnRleHQsICJ0
aGVtZV9iYXNlX2NvbG9yIiwgJmNvbG9yKSkKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAgIG1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGdza19jb2xvcl9ub2RlX25l
dygmY29sb3IsICZib3VuZHMpKTsKKyNlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZVNu
YXBzaG90UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JnYmEoY29sb3Iu
cmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSwgY29sb3IuYWxwaGEpKTsKKyNlbmRpZgogICAg
IH0KIAotICAgIGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4pCisgICAgaWYgKCFt
X2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybikgeworI2lmIFVTRShHVEs0KQorICAgICAgICBH
ZGtSR0JBIGNvbG9yID0geyAxLCAxLCAxLCAxIH07CisgICAgICAgIG1fY3VycmVudFN3aXBlU25h
cHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGdza19jb2xvcl9ub2RlX25ldygmY29sb3IsICZib3Vu
ZHMpKTsKKyNlbHNlCiAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRv
cHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiKDEsIDEsIDEpKTsKKyNlbmRpZgorICAgIH0K
IAorI2lmICFVU0UoR1RLNCkKICAgICBhdXRvIHNpemUgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5n
QXJlYSgpLT5zaXplKCk7CiAKICAgICBpZiAoIW1fY3NzUHJvdmlkZXIpIHsKQEAgLTQwNCwzMyAr
NDQ0LDcwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzbmFwc2hvdChHdGtTbmFwc2hv
dCogc25hcHNob3QsIEdza1JlbmRlck5vZGUqIHBhZ2VSCiAgICAgaW50IGhlaWdodCA9IHNpemUu
aGVpZ2h0KCk7CiAgICAgZG91YmxlIHNjYWxlID0gbV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVG
YWN0b3IoKTsKIAotICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSAoc3dpcGluZ0xlZnQg
PyAwIDogd2lkdGgpICsgZmxvb3Iod2lkdGggKiBwcm9ncmVzcyAqIHNjYWxlKSAvIHNjYWxlOwor
ICAgIGZsb2F0IHN3aXBpbmdMYXllck9mZnNldCA9IChzd2lwaW5nTGVmdCA/IDAgOiB3aWR0aCkg
KyBmbG9vcih3aWR0aCAqIHByb2dyZXNzICogc2NhbGUpIC8gc2NhbGU7CiAKLSAgICBkb3VibGUg
ZGltbWluZ1Byb2dyZXNzID0gc3dpcGluZ0xlZnQgPyAxIC0gcHJvZ3Jlc3MgOiAtcHJvZ3Jlc3M7
CisgICAgZmxvYXQgZGltbWluZ1Byb2dyZXNzID0gc3dpcGluZ0xlZnQgPyAxIC0gcHJvZ3Jlc3Mg
OiAtcHJvZ3Jlc3M7CiAgICAgaWYgKGlzUlRMKSB7CiAgICAgICAgIGRpbW1pbmdQcm9ncmVzcyA9
IDEgLSBkaW1taW5nUHJvZ3Jlc3M7CiAgICAgICAgIHN3aXBpbmdMYXllck9mZnNldCA9IC0od2lk
dGggLSBzd2lwaW5nTGF5ZXJPZmZzZXQpOwogICAgIH0KIAorICAgIGZsb2F0IHJlbWFpbmluZ1N3
aXBlRGlzdGFuY2UgPSBkaW1taW5nUHJvZ3Jlc3MgKiB3aWR0aDsKKworICAgIGZsb2F0IHNoYWRv
d09wYWNpdHkgPSAxOworICAgIGlmIChyZW1haW5pbmdTd2lwZURpc3RhbmNlIDwgc3dpcGVPdmVy
bGF5U2hhZG93V2lkdGgpCisgICAgICAgIHNoYWRvd09wYWNpdHkgPSByZW1haW5pbmdTd2lwZURp
c3RhbmNlIC8gc3dpcGVPdmVybGF5U2hhZG93V2lkdGg7CisKICAgICBndGtfc25hcHNob3Rfc2F2
ZShzbmFwc2hvdCk7CiAKLSAgICBncmFwaGVuZV9wb2ludF90IHRyYW5zbGF0aW9uID0geyBzdGF0
aWNfY2FzdDxmbG9hdD4oc3dpcGluZ0xheWVyT2Zmc2V0KSwgMCB9OworICAgIGdyYXBoZW5lX3Jl
Y3RfdCBjbGlwID0geyAwLCAwLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZS53aWR0aCgpKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHNpemUuaGVpZ2h0KCkpIH07CisgICAgZ3RrX3NuYXBzaG90X3B1c2hf
Y2xpcChzbmFwc2hvdCwgJmNsaXApOworCisgICAgZ3JhcGhlbmVfcG9pbnRfdCB0cmFuc2xhdGlv
biA9IHsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwIH07CiAgICAgaWYgKCFzd2lwaW5nQmFjaykgewog
ICAgICAgICBndGtfc25hcHNob3RfYXBwZW5kX25vZGUoc25hcHNob3QsIHBhZ2VSZW5kZXJOb2Rl
KTsKICAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hvdCwgJnRyYW5zbGF0aW9u
KTsKICAgICB9CiAKLSAgICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IHsgMCwgMCwgKGZsb2F0KXdp
ZHRoLCAoZmxvYXQpaGVpZ2h0IH07Ci0gICAgYXV0byogY3IgPSBndGtfc25hcHNob3RfYXBwZW5k
X2NhaXJvKHNuYXBzaG90LCAmcmVjdCk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4uZ2V0KCkpOwotICAgIGNhaXJvX3JlY3RhbmdsZShjciwg
MCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZmlsbChjcik7CisgICAgZ3RrX3NuYXBz
aG90X2FwcGVuZF9ub2RlKHNuYXBzaG90LCBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybi5n
ZXQoKSk7CiAKICAgICBpZiAoc3dpcGluZ0JhY2spIHsKICAgICAgICAgZ3RrX3NuYXBzaG90X3Ry
YW5zbGF0ZShzbmFwc2hvdCwgJnRyYW5zbGF0aW9uKTsKICAgICAgICAgZ3RrX3NuYXBzaG90X2Fw
cGVuZF9ub2RlKHNuYXBzaG90LCBwYWdlUmVuZGVyTm9kZSk7CiAgICAgfQogCisgICAgaWYgKCFw
cm9ncmVzcykgeworICAgICAgICBndGtfc25hcHNob3RfcG9wKHNuYXBzaG90KTsKKyAgICAgICAg
Z3RrX3NuYXBzaG90X3Jlc3RvcmUoc25hcHNob3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGlzUlRMKSB7CisgICAgICAgIHRyYW5zbGF0aW9uID0geyBzdGF0aWNfY2FzdDxm
bG9hdD4od2lkdGgpLCAwIH07CisgICAgICAgIGd0a19zbmFwc2hvdF90cmFuc2xhdGUoc25hcHNo
b3QsICZ0cmFuc2xhdGlvbik7CisgICAgfSBlbHNlCisgICAgICAgIGd0a19zbmFwc2hvdF9zY2Fs
ZShzbmFwc2hvdCwgLTEsIDEpOworCisgICAgR2RrUkdCQSBkaW1taW5nID0geyAwLCAwLCAwLCBz
d2lwZU92ZXJsYXlEaW1taW5nT3BhY2l0eSAqIGRpbW1pbmdQcm9ncmVzcyB9OworICAgIEdka1JH
QkEgYm9yZGVyID0geyAwLCAwLCAwLCBzd2lwZU92ZXJsYXlCb3JkZXJPcGFjaXR5IH07CisgICAg
R2RrUkdCQSBvdXRsaW5lID0geyAxLCAxLCAxLCBzd2lwZU92ZXJsYXlPdXRsaW5lT3BhY2l0eSB9
OworCisgICAgZ3JhcGhlbmVfcmVjdF90IGRpbW1pbmdSZWN0ID0geyAwLCAwLCAgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHdpZHRoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCkgfTsKKyAgICBncmFw
aGVuZV9yZWN0X3QgYm9yZGVyUmVjdCA9IHsgMCwgMCwgMSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhl
aWdodCkgfTsKKyAgICBncmFwaGVuZV9yZWN0X3Qgb3V0bGluZVJlY3QgPSB7IC0xLCAwLCAxLCBz
dGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0KSB9OworICAgIGdyYXBoZW5lX3JlY3RfdCBzaGFkb3dS
ZWN0ID0geyAwLCAwLCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGhlaWdodCkgfTsKKyAgICBncmFwaGVuZV9wb2ludF90IHNoYWRvd1N0YXJ0ID0geyAwLCAwIH07
CisgICAgZ3JhcGhlbmVfcG9pbnRfdCBzaGFkb3dFbmQgPSB7IHN3aXBlT3ZlcmxheVNoYWRvd1dp
ZHRoLCAwIH07CisKKyAgICBndGtfc25hcHNob3RfYXBwZW5kX2NvbG9yKHNuYXBzaG90LCAmZGlt
bWluZywgJmRpbW1pbmdSZWN0KTsKKyAgICBndGtfc25hcHNob3RfYXBwZW5kX2NvbG9yKHNuYXBz
aG90LCAmYm9yZGVyLCAmYm9yZGVyUmVjdCk7CisgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF9jb2xv
cihzbmFwc2hvdCwgJm91dGxpbmUsICZvdXRsaW5lUmVjdCk7CisgICAgZ3RrX3NuYXBzaG90X3B1
c2hfb3BhY2l0eShzbmFwc2hvdCwgc2hhZG93T3BhY2l0eSk7CisgICAgZ3RrX3NuYXBzaG90X2Fw
cGVuZF9saW5lYXJfZ3JhZGllbnQoc25hcHNob3QsICZzaGFkb3dSZWN0LCAmc2hhZG93U3RhcnQs
ICZzaGFkb3dFbmQsCisgICAgICAgIHN3aXBlT3ZlcmxheVNoYWRvd1N0b3BzLCBHX05fRUxFTUVO
VFMoc3dpcGVPdmVybGF5U2hhZG93U3RvcHMpKTsKKyAgICBndGtfc25hcHNob3RfcG9wKHNuYXBz
aG90KTsKKworICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QpOwogICAgIGd0a19zbmFwc2hv
dF9yZXN0b3JlKHNuYXBzaG90KTsKIH0KICNlbHNlCkBAIC01MzYsMTAgKzYxMywxMiBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gbnVsbHB0cjsKKyNp
ZiAhVVNFKEdUSzQpCiAgICAgbV9zd2lwZURpbW1pbmdQYXR0ZXJuID0gbnVsbHB0cjsKICAgICBt
X3N3aXBlU2hhZG93UGF0dGVybiA9IG51bGxwdHI7CiAgICAgbV9zd2lwZUJvcmRlclBhdHRlcm4g
PSBudWxscHRyOwogICAgIG1fc3dpcGVPdXRsaW5lUGF0dGVybiA9IG51bGxwdHI7CisjZW5kaWYK
IAogICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrMy5jcHAKc2ltaWxh
cml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Zp
ZXdTbmFwc2hvdFN0b3JlR3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrMy5jcHAKaW5kZXggNmQyYmFhZDY4OGVhLi5kODkxOTAz
OTNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNo
b3RTdG9yZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgogCisjaWYgIVVTRShHVEs0KQorCiAjaW5j
bHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU4LDcgKzYwLDcgQEAgdm9pZCBWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UoKQogICAgIG1fc3Vy
ZmFjZSA9IG51bGxwdHI7CiB9CiAKLXNpemVfdCBWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0
ZXMoKSBjb25zdAorc2l6ZV90IFZpZXdTbmFwc2hvdDo6ZXN0aW1hdGVJbWFnZVNpemVJbkJ5dGVz
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04
MywzICs4NSw1IEBAIFdlYkNvcmU6OkludFNpemUgVmlld1NuYXBzaG90OjpzaXplKCkgY29uc3QK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRkMTBlMDI4MGRlNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQu
Y3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLGRkCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorCisjaWYgVVNFKEdUSzQpCisKK25hbWVz
cGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxWaWV3U25hcHNo
b3Q+IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKEdSZWZQdHI8R2RrVGV4dHVyZT4mJiB0ZXh0dXJlKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZXdTbmFwc2hvdChXVEZNb3ZlKHRleHR1cmUp
KSk7Cit9CisKK1ZpZXdTbmFwc2hvdDo6Vmlld1NuYXBzaG90KEdSZWZQdHI8R2RrVGV4dHVyZT4m
JiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCit7CisgICAgaWYg
KGhhc0ltYWdlKCkpCisgICAgICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5kaWRB
ZGRJbWFnZVRvU25hcHNob3QoKnRoaXMpOworfQorCitib29sIFZpZXdTbmFwc2hvdDo6aGFzSW1h
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisKK3ZvaWQgVmlld1NuYXBz
aG90OjpjbGVhckltYWdlKCkKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS53aWxsUmVtb3ZlSW1hZ2VG
cm9tU25hcHNob3QoKnRoaXMpOworCisgICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKK30KKworc2l6
ZV90IFZpZXdTbmFwc2hvdDo6ZXN0aW1hdGVJbWFnZVNpemVJbkJ5dGVzKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgd2lkdGggPSBn
ZGtfdGV4dHVyZV9nZXRfd2lkdGgobV90ZXh0dXJlLmdldCgpKTsKKyAgICBpbnQgaGVpZ2h0ID0g
Z2RrX3RleHR1cmVfZ2V0X2hlaWdodChtX3RleHR1cmUuZ2V0KCkpOworCisgICAgLy8gVW5mb3J0
dW5hdGVseSB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGdldCBzaXplIG9mIGEgdGV4dHVyZSBpbgor
ICAgIC8vIGJ5dGVzLCBzbyB3ZSdsbCBoYXZlIHRvIG1ha2Ugc29tZXRoaW5nIHVwLiBMZXQncyBh
c3N1bWUgdGhhdAorICAgIC8vIHBpeGVsID09IDQgYnl0ZXMuCisgICAgcmV0dXJuIHdpZHRoICog
aGVpZ2h0ICogNDsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBWaWV3U25hcHNob3Q6OnNpemUoKSBj
b25zdAoreworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
aW50IHdpZHRoID0gZ2RrX3RleHR1cmVfZ2V0X3dpZHRoKG1fdGV4dHVyZS5nZXQoKSk7CisgICAg
aW50IGhlaWdodCA9IGdka190ZXh0dXJlX2dldF9oZWlnaHQobV90ZXh0dXJlLmdldCgpKTsKKwor
ICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgotLSAKMi4zMS4xCgo=
</data>
<flag name="review"
          id="451129"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430944</attachid>
            <date>2021-06-08 23:55:12 -0700</date>
            <delta_ts>2021-06-09 00:02:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>25052</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA1N2UwODA3OWViYWZhMzg1N2E1YjQwOGNkMjRlYTVjY2I5NzFiNTgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNTozMzo0MyArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCAg
ICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggICAg
ICB8ICAgNiArKwogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgIDUwICsrKysrKysrKwogU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCAgICAgICAgICAg
ICAgICAgIHwgICAzICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwICAgfCAgMzMgKysrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5j
cHAgICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oICB8ICAxMiArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0
b3JlLmNwcCB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3Rv
cmUuaCAgIHwgIDIyICsrKy0KIC4uLi9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCAg
ICAgICAgICB8IDEwMSArKysrKysrKysrKysrKysrLS0KIC4uLlN0b3JlR3RrLmNwcCA9PiBWaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwfSB8ICAgNiArLQogLi4uL1VJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGs0LmNwcCAgIHwgIDg4ICsrKysrKysrKysrKysrKwogMTMgZmlsZXMgY2hh
bmdlZCwgMzM1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9ICg5NyUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDc2YTRkNmMwYzJiLi5kMWE3MmNlMjIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisg
ICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5k
ZXJOb2RlIGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsu
Y3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTE1ICBBbGV4
YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUkVH
UkVTU0lPTjogS2luZXRpYyBzY3JvbGxpbmcgb24gdG91Y2hwYWQgZG9lc24ndCB3b3JrIHdpdGgg
YXN5bmMgc2Nyb2xsaW5nIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dSZWZQdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJH
dGsuY3BwCmluZGV4IDEyMGM2MjJiZWQwOS4uOTQ2MGIzMzMzODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCkBAIC03Niw0ICs3NiwxOSBAQCB0ZW1wbGF0
ZSA8PiB2b2lkIGRlcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpCiB9CiAjZW5kaWYKIAorI2lm
IFVTRShHVEs0KQordGVtcGxhdGUgPD4gR3NrUmVuZGVyTm9kZSogcmVmR1B0cihHc2tSZW5kZXJO
b2RlKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3NrX3JlbmRlcl9ub2RlX3JlZihw
dHIpOworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdz
a1JlbmRlck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc2tfcmVuZGVyX25v
ZGVfdW5yZWYocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dSZWZQdHJHdGsuaAppbmRleCBkY2MzYjZhM2U4NTAuLjk0NTMyYTM4YTNlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5
cGVkZWYgc3RydWN0IF9HdGtXaWRnZXRQYXRoIEd0a1dpZGdldFBhdGg7CiB0eXBlZGVmIHN0cnVj
dCBfU2VjcmV0VmFsdWUgU2VjcmV0VmFsdWU7Cit0eXBlZGVmIHN0cnVjdCBfR3NrUmVuZGVyTm9k
ZSBHc2tSZW5kZXJOb2RlOwogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDIsNSArNDMsMTAgQEAg
dGVtcGxhdGUgPD4gR3RrV2lkZ2V0UGF0aCogcmVmR1B0cihHdGtXaWRnZXRQYXRoKiBwdHIpOwog
dGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR3RrV2lkZ2V0UGF0aCogcHRyKTsKICNlbmRpZgog
CisjaWYgVVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5kZXJOb2RlKiByZWZHUHRyKEdza1Jl
bmRlck5vZGUqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHc2tSZW5kZXJOb2Rl
KiBwdHIpOworI2VuZGlmCisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZTNmNWViYWViMGEuLmNiNjFiZDQw
NzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNS0yNCAgQWxleGFuZGVyIE1p
a2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisgICAgICAgIFtHVEs0XSBBZGQgc3VwcG9y
dCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBWaWV3U25hcHNob3RTdG9yZSBzdG9yZSBHZGtUZXh0dXJl
IGluc3RlYWQgb2YgQ2Fpcm8gc3VyZmFjZXMKKyAgICAgICAgZm9yIEdUSzQuIFNwbGl0IFZpZXdT
bmFwc2hvdFN0b3JlR3RrLmNwcCBpbnRvIEdUSzMgYW5kIEdUSzQgdmVyc2lvbnMKKyAgICAgICAg
c2luY2UgdGhleSBkb24ndCBoYXZlIG11Y2ggaW4gY29tbW9uLgorCisgICAgICAgIFdoZW4gdGFr
aW5nIGEgdmlldyBzbmFwc2hvdCwgcmVuZGVyIHRoZSB3ZWIgdmlldyBpbnRvIGEgdGV4dHVyZS4K
KworICAgICAgICBXaGVuIHN0YXJ0aW5nIGEgbmF2aWdhdGlvbiBnZXN0dXJlLCBjcmVhdGUgYSBy
ZW5kZXIgbm9kZSBmcm9tCisgICAgICAgIGVpdGhlciB0aGUgdGV4dHVyZSwgb3IgYSBmYWxsYmFj
ayBjb2xvciwgdGhlbiByZW5kZXIgdGhhdCBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIENhaXJv
LgorCisgICAgICAgIEltcGxlbWVudCB0aGUgc2FtZSBkaW1taW5nK3NoYWRvdyBhcyBpbiBHVEsz
LiBUaGlzIHRpbWUgZG9uJ3QgYm90aGVyCisgICAgICAgIHdpdGggQ1NTLCB0aGUgYXBwcm9hY2gg
d2UgdXNlZCBpbiBHVEszIGRvZXNuJ3Qgd29yayBhbnltb3JlLCBhbmQgc2luY2UKKyAgICAgICAg
ZWxlbWVudHMgbGlrZSBzY3JvbGxiYXJzIGFyZW4ndCB0aGVtZWFibGUgYW55d2F5IGl0J3Mgbm90
IHZlcnkgaW1wb3J0YW50CisgICAgICAgIHRvIHByZXNlcnZlIHRoYXQuCisKKyAgICAgICAgKiBT
b3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5o
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlVGV4dHVyZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpW
aWV3U25hcHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmll
d1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktp
dDo6Vmlld1NuYXBzaG90OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6
OlZpZXdTbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6aGFzSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnNpemUgY29uc3QpOgorCiAyMDIxLTA1LTE1ICBJ
YW4gR2lsYmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSB3aXRoIFZhcmlhbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0CmluZGV4IDg5NGU1ZDRkMzI1ZS4uYTQzOTFiZTdiNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
QEAgLTI1OSw3ICsyNTksOCBAQCBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlci5jcHAg
QG5vLXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3Mv
Z3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcAorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RT
dG9yZUd0azMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0
azQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsu
Y3BwCiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4
Mi4uNDJkMWFhNDQ1YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgUmVmUHRy
PFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3Qo
V2ViS2l0V2ViVmlld0Jhc2UKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKKyNpZiAhVVNFKEdU
SzQpCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZh
Y2UuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKQEAgLTI0ODksMTEgKzI0OTAs
MzkgQEAgUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VW
aWV3U25hcHNob3QoV2ViS2l0V2ViVmlld0Jhc2UKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LmdldCgpLCBjbGlwUmVjdC0+eCgpLCBjbGlwUmVjdC0+eSgpLCBjbGlwUmVjdC0+d2lkdGgoKSwg
Y2xpcFJlY3QtPmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjci5nZXQoKSk7CiAgICAg
fQotI2lmICFVU0UoR1RLNCkKICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3
ZWJraXRXZWJWaWV3QmFzZSksIGNyLmdldCgpKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFZpZXdT
bmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworI2Vsc2UKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBhdXRv
KiByZW5kZXJlciA9IGd0a19uYXRpdmVfZ2V0X3JlbmRlcmVyKEdUS19OQVRJVkUocHJpdi0+dG9w
bGV2ZWxPblNjcmVlbldpbmRvdykpOworCisgICAgR1JlZlB0cjxHdGtTbmFwc2hvdD4gc25hcHNo
b3QgPSBhZG9wdEdSZWYoZ3RrX3NuYXBzaG90X25ldygpKTsKKworICAgIGlmIChjbGlwUmVjdCkg
eworICAgICAgICBncmFwaGVuZV9wb2ludF90IHBvaW50ID0geyAtc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNsaXBSZWN0LT54KCkpLCAtc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT55KCkpIH07Cisg
ICAgICAgIGdyYXBoZW5lX3JlY3RfdCByZWN0ID0geworICAgICAgICAgICAgeyBzdGF0aWNfY2Fz
dDxmbG9hdD4oY2xpcFJlY3QtPngoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjbGlwUmVjdC0+eSgp
KSB9LAorICAgICAgICAgICAgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPndpZHRoKCkp
LCBzdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPmhlaWdodCgpKSB9CisgICAgICAgIH07CisK
KyAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hvdC5nZXQoKSwgJnBvaW50KTsK
KyAgICAgICAgZ3RrX3NuYXBzaG90X3B1c2hfY2xpcChzbmFwc2hvdC5nZXQoKSwgJnJlY3QpOwor
ICAgIH0KKworICAgIGd0a19zbmFwc2hvdF9zY2FsZShzbmFwc2hvdC5nZXQoKSwgZGV2aWNlU2Nh
bGUsIGRldmljZVNjYWxlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNuYXBzaG90KEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2UpLCBzbmFwc2hvdC5nZXQoKSk7CisKKyAgICBpZiAoY2xpcFJl
Y3QpCisgICAgICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QuZ2V0KCkpOworCisgICAgR1Jl
ZlB0cjxHc2tSZW5kZXJOb2RlPiByZW5kZXJOb2RlID0gYWRvcHRHUmVmKGd0a19zbmFwc2hvdF90
b19ub2RlKHNuYXBzaG90LmdldCgpKSk7CisKKyAgICBncmFwaGVuZV9yZWN0X3Qgdmlld3BvcnQg
PSB7IDAsIDAsIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBHZGtUZXh0dXJlKiB0ZXh0dXJlID0gZ3NrX3Jl
bmRlcmVyX3JlbmRlcl90ZXh0dXJlKHJlbmRlcmVyLCByZW5kZXJOb2RlLmdldCgpLCAmdmlld3Bv
cnQpOworCisgICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkp
OworI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvck1haW5GcmFtZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1
dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCAwMjM5YzRhMDcy
M2IuLjgxNjZjOTI1MjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fp
cm8uY3BwCkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiAKIE9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSNpZiBQTEFURk9STShH
VEspCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgcmV0dXJuIGJhc2U2NEVu
Y29kZWRQTkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7CiAjZWxzZQogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCmluZGV4IGI4NmUwMGI2YzI5ZC4uZTUwM2FlZmU5OWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtNDAsOSArNDAsMTQg
QEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9V
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+
CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KKyNlbmRpZgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQzNiwxNSArNDQxLDIwIEBAIHByaXZhdGU6
CiAKICAgICBTd2lwZVByb2dyZXNzVHJhY2tlciBtX3N3aXBlUHJvZ3Jlc3NUcmFja2VyOwogCisj
aWYgVVNFKEdUSzQpCisgICAgR1JlZlB0cjxHc2tSZW5kZXJOb2RlPiBtX2N1cnJlbnRTd2lwZVNu
YXBzaG90UGF0dGVybjsKKyNlbHNlCiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFBhdHRlcm47CiAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4gbV9z
d2lwZURpbW1pbmdQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVT
aGFkb3dQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVCb3JkZXJQ
YXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVPdXRsaW5lUGF0dGVy
bjsKKwogICAgIGludCBtX3N3aXBlU2hhZG93U2l6ZTsKICAgICBpbnQgbV9zd2lwZUJvcmRlclNp
emU7CiAgICAgaW50IG1fc3dpcGVPdXRsaW5lU2l6ZTsKICAgICBHUmVmUHRyPEd0a0Nzc1Byb3Zp
ZGVyPiBtX2Nzc1Byb3ZpZGVyOworI2VuZGlmCiAKICAgICBib29sIG1faXNTaW11bGF0ZWRTd2lw
ZSB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdTbmFwc2hvdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmNwcAppbmRleCAyMzMxOTJhOGYxNDEuLjU5ZjQ2YWUzMGMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtNTgsMTQgKzU4
LDE0IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OmRpZEFkZEltYWdlVG9TbmFwc2hvdChWaWV3
U25hcHNob3QmIHNuYXBzaG90KQogewogICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1fc25hcHNob3Rz
V2l0aEltYWdlcy5hZGQoJnNuYXBzaG90KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQo
aXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7Ci0gICAgbV9zbmFwc2hvdENhY2hlU2l6ZSArPSBzbmFw
c2hvdC5pbWFnZVNpemVJbkJ5dGVzKCk7CisgICAgbV9zbmFwc2hvdENhY2hlU2l6ZSArPSBzbmFw
c2hvdC5lc3RpbWF0ZWRJbWFnZVNpemVJbkJ5dGVzKCk7CiB9CiAKIHZvaWQgVmlld1NuYXBzaG90
U3RvcmU6OndpbGxSZW1vdmVJbWFnZUZyb21TbmFwc2hvdChWaWV3U25hcHNob3QmIHNuYXBzaG90
KQogewogICAgIGJvb2wgcmVtb3ZlZCA9IG1fc25hcHNob3RzV2l0aEltYWdlcy5yZW1vdmUoJnNu
YXBzaG90KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwotICAgIG1fc25h
cHNob3RDYWNoZVNpemUgLT0gc25hcHNob3QuaW1hZ2VTaXplSW5CeXRlcygpOworICAgIG1fc25h
cHNob3RDYWNoZVNpemUgLT0gc25hcHNob3QuZXN0aW1hdGVkSW1hZ2VTaXplSW5CeXRlcygpOwog
fQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpwcnVuZVNuYXBzaG90cyhXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdT
bmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5oCmluZGV4IGQyODBkYWVlOThkNy4uOWRkOWQ0OGFlMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTM2LDggKzM2LDEyIEBACiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CisjZWxzZQogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNlbmRpZgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01MCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SU9TdXJmYWNlPik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisg
ICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShHUmVmUHRyPEdka1RleHR1cmU+JiYp
OworI2Vsc2UKICAgICBzdGF0aWMgUmVmPFZpZXdTbmFwc2hvdD4gY3JlYXRlKFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+JiYpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIH5WaWV3U25hcHNob3QoKTsK
QEAgLTc4LDcgKzg2LDcgQEAgcHVibGljOgogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIFdlYkNv
cmU6OklPU3VyZmFjZSogc3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsg
fQogCi0gICAgc2l6ZV90IGltYWdlU2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3N1cmZh
Y2UgPyBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKSA6IDA7IH0KKyAgICBzaXplX3QgZXN0aW1hdGVk
SW1hZ2VTaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+
dG90YWxCeXRlcygpIDogMDsgfQogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VyZmFjZSA/IG1fc3VyZmFjZS0+c2l6ZSgpIDogV2ViQ29yZTo6SW50U2l6ZSgp
OyB9CiAKICAgICB2b2lkIHNldFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4pOwpAQCAtODcsOSArOTUsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShHVEspCisjaWYgVVNFKEdUSzQpCisgICAgR2RrVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorI2Vsc2UKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KKyNlbmRpZgogCi0gICAg
c2l6ZV90IGltYWdlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICBzaXplX3QgZXN0aW1hdGVkSW1h
Z2VTaXplSW5CeXRlcygpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0
OwogI2VuZGlmCiAKQEAgLTEwMSw5ICsxMTMsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oR1RLKQorI2lmIFVTRShHVEs0KQorICAgIGV4cGxpY2l0IFZpZXdTbmFwc2hvdChH
UmVmUHRyPEdka1RleHR1cmU+JiYpOworCisgICAgR1JlZlB0cjxHZGtUZXh0dXJlPiBtX3RleHR1
cmU7CisjZWxzZQogICAgIGV4cGxpY2l0IFZpZXdTbmFwc2hvdChSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmKTsKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKKyNlbmRp
ZgogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNw
cAppbmRleCBkNGNjY2QzYmMyY2QuLmE3ZjZmYzYzOWVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKQEAg
LTQ4LDYgKzQ4LDIxIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVBbmltYXRpb25EdXJhdGlv
bk11bHRpcGxpZXIgPSAzOwogc3RhdGljIGNvbnN0IGRvdWJsZSBzd2lwZUNhbmNlbEFyZWEgPSAw
LjU7CiBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQ2FuY2VsVmVsb2NpdHlUaHJlc2hvbGQgPSAw
LjQ7CiAKKyNpZiBVU0UoR1RLNCkKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlTaGFk
b3dPcGFjaXR5ID0gMC4wNjsKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlCb3JkZXJP
cGFjaXR5ID0gMC4wNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlPdXRsaW5lT3Bh
Y2l0eSA9IDAuMDU7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5RGltbWluZ09wYWNp
dHkgPSAwLjEyOworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheVNoYWRvd1dpZHRoID0g
NTc7CitzdGF0aWMgY29uc3QgR3NrQ29sb3JTdG9wIHN3aXBlT3ZlcmxheVNoYWRvd1N0b3BzW10g
PSB7CisgICAgeyAwLCAgICAgeyAwLCAwLCAwLCAwLjA4ICB9IH0sCisgICAgeyAwLjEyNSwgeyAw
LCAwLCAwLCAwLjA1MyB9IH0sCisgICAgeyAwLjQyOCwgeyAwLCAwLCAwLCAwLjAyNiB9IH0sCisg
ICAgeyAwLjcxNCwgeyAwLCAwLCAwLCAwLjAxICB9IH0sCisgICAgeyAxLCAgICAgeyAwLCAwLCAw
LCAwICAgICB9IH0KK307CisjZW5kaWYKKwogc3RhdGljIGJvb2wgaXNFdmVudFN0b3AoUGxhdGZv
cm1HdGtTY3JvbGxEYXRhKiBldmVudCkKIHsKICAgICByZXR1cm4gZXZlbnQtPmlzRW5kOwpAQCAt
MzA5LDYgKzMyNCw3IEBAIHN0YXRpYyBpbnQgZWxlbWVudFdpZHRoKEd0a1N0eWxlQ29udGV4dCog
Y29udGV4dCkKIAogICAgIHJldHVybiB3aWR0aDsKIH0KKwogI2VuZGlmCiAKIHZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiB0YXJnZXRJdGVtLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0zMTksMzQgKzMzNSw1
OCBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbQogCiAgICAgd2lsbEJlZ2luR2VzdHVyZShWaWV3
R2VzdHVyZVR5cGU6OlN3aXBlKTsKIAorICAgIEZsb2F0U2l6ZSB2aWV3U2l6ZShtX3dlYlBhZ2VQ
cm94eS52aWV3U2l6ZSgpKTsKKworI2lmIFVTRShHVEs0KQorICAgIGdyYXBoZW5lX3JlY3RfdCBi
b3VuZHMgPSB7IDAsIDAsIHZpZXdTaXplLndpZHRoKCksIHZpZXdTaXplLmhlaWdodCgpIH07Cisj
ZW5kaWYKKwogICAgIGlmIChhdXRvKiBzbmFwc2hvdCA9IHRhcmdldEl0ZW0tPnNuYXBzaG90KCkp
IHsKICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdCA9IHNuYXBzaG90OwogCi0gICAgICAg
IEZsb2F0U2l6ZSB2aWV3U2l6ZShtX3dlYlBhZ2VQcm94eS52aWV3U2l6ZSgpKTsKICAgICAgICAg
aWYgKHNuYXBzaG90LT5oYXNJbWFnZSgpICYmIHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZSgqc25h
cHNob3QsIHZpZXdTaXplLCAwKSkKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAgIG1fY3VycmVu
dFN3aXBlU25hcHNob3RQYXR0ZXJuID0gZ3NrX3RleHR1cmVfbm9kZV9uZXcoc25hcHNob3QtPnRl
eHR1cmUoKSwgJmJvdW5kcyk7CisjZWxzZQogICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFw
c2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShz
bmFwc2hvdC0+c3VyZmFjZSgpKSk7CisjZW5kaWYKIAogICAgICAgICBDb2xvciBjb2xvciA9IHNu
YXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3QgPSBjb2xv
cjsKICAgICAgICAgICAgIGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4pIHsKICAg
ICAgICAgICAgICAgICBhdXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvci50b1NS
R0JBTG9zc3k8ZmxvYXQ+KCk7CisjaWYgVVNFKEdUSzQpCisgICAgICAgICAgICAgICAgR2RrUkdC
QSByZ2JhID0geyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9OworICAgICAgICAgICAgICAgIG1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuID0gYWRvcHRHUmVmKGdza19jb2xvcl9ub2RlX25l
dygmcmdiYSwgJmJvdW5kcykpOworI2Vsc2UKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JnYmEocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCi0jaWYgIVVTRShHVEs0KQogICAgIGlmICghbV9jdXJyZW50U3dpcGVTbmFwc2hv
dFBhdHRlcm4pIHsKICAgICAgICAgR2RrUkdCQSBjb2xvcjsKICAgICAgICAgYXV0byogY29udGV4
dCA9IGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQobV93ZWJQYWdlUHJveHkudmlld1dpZGdl
dCgpKTsKICAgICAgICAgaWYgKGd0a19zdHlsZV9jb250ZXh0X2xvb2t1cF9jb2xvcihjb250ZXh0
LCAidGhlbWVfYmFzZV9jb2xvciIsICZjb2xvcikpCisjaWYgVVNFKEdUSzQpCisgICAgICAgICAg
ICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihnc2tfY29sb3Jfbm9k
ZV9uZXcoJmNvbG9yLCAmYm91bmRzKSk7CisjZWxzZQogICAgICAgICAgICAgbV9jdXJyZW50U3dp
cGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2JhKGNv
bG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUsIGNvbG9yLmFscGhhKSk7CisjZW5kaWYK
ICAgICB9CiAKLSAgICBpZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKQorICAgIGlm
ICghbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4pIHsKKyNpZiBVU0UoR1RLNCkKKyAgICAg
ICAgR2RrUkdCQSBjb2xvciA9IHsgMSwgMSwgMSwgMSB9OworICAgICAgICBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihnc2tfY29sb3Jfbm9kZV9uZXcoJmNvbG9yLCAm
Ym91bmRzKSk7CisjZWxzZQogICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9
IGFkb3B0UmVmKGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JnYigxLCAxLCAxKSk7CisjZW5kaWYKKyAg
ICB9CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgYXV0byBzaXplID0gbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKS0+c2l6ZSgpOwogCiAgICAgaWYgKCFtX2Nzc1Byb3ZpZGVyKSB7CkBAIC00MDQs
MzMgKzQ0NCw3MCBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c25hcHNob3QoR3RrU25h
cHNob3QqIHNuYXBzaG90LCBHc2tSZW5kZXJOb2RlKiBwYWdlUgogICAgIGludCBoZWlnaHQgPSBz
aXplLmhlaWdodCgpOwogICAgIGRvdWJsZSBzY2FsZSA9IG1fd2ViUGFnZVByb3h5LmRldmljZVNj
YWxlRmFjdG9yKCk7CiAKLSAgICBkb3VibGUgc3dpcGluZ0xheWVyT2Zmc2V0ID0gKHN3aXBpbmdM
ZWZ0ID8gMCA6IHdpZHRoKSArIGZsb29yKHdpZHRoICogcHJvZ3Jlc3MgKiBzY2FsZSkgLyBzY2Fs
ZTsKKyAgICBmbG9hdCBzd2lwaW5nTGF5ZXJPZmZzZXQgPSAoc3dpcGluZ0xlZnQgPyAwIDogd2lk
dGgpICsgZmxvb3Iod2lkdGggKiBwcm9ncmVzcyAqIHNjYWxlKSAvIHNjYWxlOwogCi0gICAgZG91
YmxlIGRpbW1pbmdQcm9ncmVzcyA9IHN3aXBpbmdMZWZ0ID8gMSAtIHByb2dyZXNzIDogLXByb2dy
ZXNzOworICAgIGZsb2F0IGRpbW1pbmdQcm9ncmVzcyA9IHN3aXBpbmdMZWZ0ID8gMSAtIHByb2dy
ZXNzIDogLXByb2dyZXNzOwogICAgIGlmIChpc1JUTCkgewogICAgICAgICBkaW1taW5nUHJvZ3Jl
c3MgPSAxIC0gZGltbWluZ1Byb2dyZXNzOwogICAgICAgICBzd2lwaW5nTGF5ZXJPZmZzZXQgPSAt
KHdpZHRoIC0gc3dpcGluZ0xheWVyT2Zmc2V0KTsKICAgICB9CiAKKyAgICBmbG9hdCByZW1haW5p
bmdTd2lwZURpc3RhbmNlID0gZGltbWluZ1Byb2dyZXNzICogd2lkdGg7CisKKyAgICBmbG9hdCBz
aGFkb3dPcGFjaXR5ID0gMTsKKyAgICBpZiAocmVtYWluaW5nU3dpcGVEaXN0YW5jZSA8IHN3aXBl
T3ZlcmxheVNoYWRvd1dpZHRoKQorICAgICAgICBzaGFkb3dPcGFjaXR5ID0gcmVtYWluaW5nU3dp
cGVEaXN0YW5jZSAvIHN3aXBlT3ZlcmxheVNoYWRvd1dpZHRoOworCiAgICAgZ3RrX3NuYXBzaG90
X3NhdmUoc25hcHNob3QpOwogCi0gICAgZ3JhcGhlbmVfcG9pbnRfdCB0cmFuc2xhdGlvbiA9IHsg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHN3aXBpbmdMYXllck9mZnNldCksIDAgfTsKKyAgICBncmFwaGVu
ZV9yZWN0X3QgY2xpcCA9IHsgMCwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUud2lkdGgoKSks
IHN0YXRpY19jYXN0PGZsb2F0PihzaXplLmhlaWdodCgpKSB9OworICAgIGd0a19zbmFwc2hvdF9w
dXNoX2NsaXAoc25hcHNob3QsICZjbGlwKTsKKworICAgIGdyYXBoZW5lX3BvaW50X3QgdHJhbnNs
YXRpb24gPSB7IHN3aXBpbmdMYXllck9mZnNldCwgMCB9OwogICAgIGlmICghc3dpcGluZ0JhY2sp
IHsKICAgICAgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF9ub2RlKHNuYXBzaG90LCBwYWdlUmVuZGVy
Tm9kZSk7CiAgICAgICAgIGd0a19zbmFwc2hvdF90cmFuc2xhdGUoc25hcHNob3QsICZ0cmFuc2xh
dGlvbik7CiAgICAgfQogCi0gICAgZ3JhcGhlbmVfcmVjdF90IHJlY3QgPSB7IDAsIDAsIChmbG9h
dCl3aWR0aCwgKGZsb2F0KWhlaWdodCB9OwotICAgIGF1dG8qIGNyID0gZ3RrX3NuYXBzaG90X2Fw
cGVuZF9jYWlybyhzbmFwc2hvdCwgJnJlY3QpOwotICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIG1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuLmdldCgpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwotICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGd0a19z
bmFwc2hvdF9hcHBlbmRfbm9kZShzbmFwc2hvdCwgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRl
cm4uZ2V0KCkpOwogCiAgICAgaWYgKHN3aXBpbmdCYWNrKSB7CiAgICAgICAgIGd0a19zbmFwc2hv
dF90cmFuc2xhdGUoc25hcHNob3QsICZ0cmFuc2xhdGlvbik7CiAgICAgICAgIGd0a19zbmFwc2hv
dF9hcHBlbmRfbm9kZShzbmFwc2hvdCwgcGFnZVJlbmRlck5vZGUpOwogICAgIH0KIAorICAgIGlm
ICghcHJvZ3Jlc3MpIHsKKyAgICAgICAgZ3RrX3NuYXBzaG90X3BvcChzbmFwc2hvdCk7CisgICAg
ICAgIGd0a19zbmFwc2hvdF9yZXN0b3JlKHNuYXBzaG90KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChpc1JUTCkgeworICAgICAgICB0cmFuc2xhdGlvbiA9IHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHdpZHRoKSwgMCB9OworICAgICAgICBndGtfc25hcHNob3RfdHJhbnNsYXRlKHNu
YXBzaG90LCAmdHJhbnNsYXRpb24pOworICAgIH0gZWxzZQorICAgICAgICBndGtfc25hcHNob3Rf
c2NhbGUoc25hcHNob3QsIC0xLCAxKTsKKworICAgIEdka1JHQkEgZGltbWluZyA9IHsgMCwgMCwg
MCwgc3dpcGVPdmVybGF5RGltbWluZ09wYWNpdHkgKiBkaW1taW5nUHJvZ3Jlc3MgfTsKKyAgICBH
ZGtSR0JBIGJvcmRlciA9IHsgMCwgMCwgMCwgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0eSB9Owor
ICAgIEdka1JHQkEgb3V0bGluZSA9IHsgMSwgMSwgMSwgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNp
dHkgfTsKKworICAgIGdyYXBoZW5lX3JlY3RfdCBkaW1taW5nUmVjdCA9IHsgMCwgMCwgIHN0YXRp
Y19jYXN0PGZsb2F0Pih3aWR0aCksIHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAg
Z3JhcGhlbmVfcmVjdF90IGJvcmRlclJlY3QgPSB7IDAsIDAsIDEsIHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IG91dGxpbmVSZWN0ID0geyAtMSwgMCwg
MSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCkgfTsKKyAgICBncmFwaGVuZV9yZWN0X3Qgc2hh
ZG93UmVjdCA9IHsgMCwgMCwgc3dpcGVPdmVybGF5U2hhZG93V2lkdGgsIHN0YXRpY19jYXN0PGZs
b2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcG9pbnRfdCBzaGFkb3dTdGFydCA9IHsgMCwg
MCB9OworICAgIGdyYXBoZW5lX3BvaW50X3Qgc2hhZG93RW5kID0geyBzd2lwZU92ZXJsYXlTaGFk
b3dXaWR0aCwgMCB9OworCisgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF9jb2xvcihzbmFwc2hvdCwg
JmRpbW1pbmcsICZkaW1taW5nUmVjdCk7CisgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF9jb2xvcihz
bmFwc2hvdCwgJmJvcmRlciwgJmJvcmRlclJlY3QpOworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRf
Y29sb3Ioc25hcHNob3QsICZvdXRsaW5lLCAmb3V0bGluZVJlY3QpOworICAgIGd0a19zbmFwc2hv
dF9wdXNoX29wYWNpdHkoc25hcHNob3QsIHNoYWRvd09wYWNpdHkpOworICAgIGd0a19zbmFwc2hv
dF9hcHBlbmRfbGluZWFyX2dyYWRpZW50KHNuYXBzaG90LCAmc2hhZG93UmVjdCwgJnNoYWRvd1N0
YXJ0LCAmc2hhZG93RW5kLAorICAgICAgICBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wcywgR19OX0VM
RU1FTlRTKHN3aXBlT3ZlcmxheVNoYWRvd1N0b3BzKSk7CisgICAgZ3RrX3NuYXBzaG90X3BvcChz
bmFwc2hvdCk7CisKKyAgICBndGtfc25hcHNob3RfcG9wKHNuYXBzaG90KTsKICAgICBndGtfc25h
cHNob3RfcmVzdG9yZShzbmFwc2hvdCk7CiB9CiAjZWxzZQpAQCAtNTM2LDEwICs2MTMsMTIgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IG51bGxwdHI7
CisjaWYgIVVTRShHVEs0KQogICAgIG1fc3dpcGVEaW1taW5nUGF0dGVybiA9IG51bGxwdHI7CiAg
ICAgbV9zd2lwZVNoYWRvd1BhdHRlcm4gPSBudWxscHRyOwogICAgIG1fc3dpcGVCb3JkZXJQYXR0
ZXJuID0gbnVsbHB0cjsKICAgICBtX3N3aXBlT3V0bGluZVBhdHRlcm4gPSBudWxscHRyOworI2Vu
ZGlmCiAKICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwCnNp
bWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9WaWV3U25hcHNob3RTdG9yZUd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azMuY3BwCmluZGV4IDZkMmJhYWQ2ODhlYS4uZDg5
MTkwMzkzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVmlld1NuYXBzaG90U3RvcmUuaCIKIAorI2lmICFVU0UoR1RLNCkKKwog
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01OCw3ICs2MCw3IEBAIHZvaWQgVmlld1NuYXBzaG90OjpjbGVhckltYWdlKCkKICAgICBt
X3N1cmZhY2UgPSBudWxscHRyOwogfQogCi1zaXplX3QgVmlld1NuYXBzaG90OjppbWFnZVNpemVJ
bkJ5dGVzKCkgY29uc3QKK3NpemVfdCBWaWV3U25hcHNob3Q6OmVzdGltYXRlZEltYWdlU2l6ZUlu
Qnl0ZXMoKSBjb25zdAogewogICAgIGlmICghbV9zdXJmYWNlKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTgzLDMgKzg1LDUgQEAgV2ViQ29yZTo6SW50U2l6ZSBWaWV3U25hcHNob3Q6OnNpemUoKSBj
b25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGQxMGUwMjgwZGU3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3Jl
R3RrNC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sZGQKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisKKyNpZiBVU0UoR1RLNCkKKwor
bmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFZpZXdT
bmFwc2hvdD4gVmlld1NuYXBzaG90OjpjcmVhdGUoR1JlZlB0cjxHZGtUZXh0dXJlPiYmIHRleHR1
cmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlld1NuYXBzaG90KFdURk1vdmUodGV4
dHVyZSkpKTsKK30KKworVmlld1NuYXBzaG90OjpWaWV3U25hcHNob3QoR1JlZlB0cjxHZGtUZXh0
dXJlPiYmIHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKK3sKKyAg
ICBpZiAoaGFzSW1hZ2UoKSkKKyAgICAgICAgVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigp
LmRpZEFkZEltYWdlVG9TbmFwc2hvdCgqdGhpcyk7Cit9CisKK2Jvb2wgVmlld1NuYXBzaG90Ojpo
YXNJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGV4dHVyZTsKK30KKwordm9pZCBWaWV3
U25hcHNob3Q6OmNsZWFySW1hZ2UoKQoreworICAgIGlmICghaGFzSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigpLndpbGxSZW1vdmVJ
bWFnZUZyb21TbmFwc2hvdCgqdGhpcyk7CisKKyAgICBtX3RleHR1cmUgPSBudWxscHRyOworfQor
CitzaXplX3QgVmlld1NuYXBzaG90Ojplc3RpbWF0ZWRJbWFnZVNpemVJbkJ5dGVzKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgd2lk
dGggPSBnZGtfdGV4dHVyZV9nZXRfd2lkdGgobV90ZXh0dXJlLmdldCgpKTsKKyAgICBpbnQgaGVp
Z2h0ID0gZ2RrX3RleHR1cmVfZ2V0X2hlaWdodChtX3RleHR1cmUuZ2V0KCkpOworCisgICAgLy8g
VW5mb3J0dW5hdGVseSB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGdldCBzaXplIG9mIGEgdGV4dHVy
ZSBpbgorICAgIC8vIGJ5dGVzLCBzbyB3ZSdsbCBoYXZlIHRvIG1ha2Ugc29tZXRoaW5nIHVwLiBM
ZXQncyBhc3N1bWUgdGhhdAorICAgIC8vIHBpeGVsID09IDQgYnl0ZXMuCisgICAgcmV0dXJuIHdp
ZHRoICogaGVpZ2h0ICogNDsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBWaWV3U25hcHNob3Q6OnNp
emUoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJlKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgaW50IHdpZHRoID0gZ2RrX3RleHR1cmVfZ2V0X3dpZHRoKG1fdGV4dHVyZS5nZXQoKSk7
CisgICAgaW50IGhlaWdodCA9IGdka190ZXh0dXJlX2dldF9oZWlnaHQobV90ZXh0dXJlLmdldCgp
KTsKKworICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgotLSAKMi4zMS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430945</attachid>
            <date>2021-06-09 00:02:00 -0700</date>
            <delta_ts>2021-06-09 05:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>25332</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA1YjVjNmM2ZmZlMWExMzNlYmZlNjljNWFmNmEzZjU2ODdkMTA3ZDI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogV2VkLCA5IEp1biAyMDIxIDEyOjAwOjUwICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
IHwgIDE0ICsrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwICAg
IHwgIDE1ICsrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaCAgICAg
IHwgICA2ICsrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
fCAgNTQgKysrKysrKysrKwogU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCAgICAgICAgICAg
ICAgICAgIHwgICAzICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwICAgfCAgMzMgKysrKystCiAuLi4vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5j
cHAgICAgICAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oICB8ICAxMiArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0
b3JlLmNwcCB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3Rv
cmUuaCAgIHwgIDIyICsrKy0KIC4uLi9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCAg
ICAgICAgICB8IDEwMSArKysrKysrKysrKysrKysrLS0KIC4uLlN0b3JlR3RrLmNwcCA9PiBWaWV3
U25hcHNob3RTdG9yZUd0azMuY3BwfSB8ICAgNiArLQogLi4uL1VJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGs0LmNwcCAgIHwgIDg4ICsrKysrKysrKysrKysrKwogMTMgZmlsZXMgY2hh
bmdlZCwgMzM5IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogcmVuYW1lIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay97Vmlld1NuYXBzaG90U3RvcmVHdGsuY3BwID0+IFZpZXdTbmFw
c2hvdFN0b3JlR3RrMy5jcHB9ICg5NyUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTI0ZGVmMTQzMWNlLi5mMzA1ZDFlYjVmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgorCisg
ICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBHc2tSZW5k
ZXJOb2RlIGZvciBHUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsu
Y3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oOgorCiAyMDIxLTA1LTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxl
eGJveF0gU2FuaXRpemUgdGhlIGFzcGVjdCByYXRpbyBoYW5kbGluZyBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKaW5kZXggMTIwYzYyMmJlZDA5Li45NDYw
YjMzMzM4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRy
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAK
QEAgLTc2LDQgKzc2LDE5IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEd0a1dpZGdldFBh
dGgqIHB0cikKIH0KICNlbmRpZgogCisjaWYgVVNFKEdUSzQpCit0ZW1wbGF0ZSA8PiBHc2tSZW5k
ZXJOb2RlKiByZWZHUHRyKEdza1JlbmRlck5vZGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAg
ICAgICBnc2tfcmVuZGVyX25vZGVfcmVmKHB0cik7CisgICAgcmV0dXJuIHB0cjsKK30KKwordGVt
cGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR3NrUmVuZGVyTm9kZSogcHRyKQoreworICAgIGlmIChw
dHIpCisgICAgICAgIGdza19yZW5kZXJfbm9kZV91bnJlZihwdHIpOworfQorI2VuZGlmCisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oCmluZGV4IGRjYzNiNmEzZTg1
MC4uOTQ1MzJhMzhhM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R1JlZlB0ckd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3Rr
LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldFBhdGggR3Rr
V2lkZ2V0UGF0aDsKIHR5cGVkZWYgc3RydWN0IF9TZWNyZXRWYWx1ZSBTZWNyZXRWYWx1ZTsKK3R5
cGVkZWYgc3RydWN0IF9Hc2tSZW5kZXJOb2RlIEdza1JlbmRlck5vZGU7CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC00Miw1ICs0MywxMCBAQCB0ZW1wbGF0ZSA8PiBHdGtXaWRnZXRQYXRoKiByZWZH
UHRyKEd0a1dpZGdldFBhdGgqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHdGtX
aWRnZXRQYXRoKiBwdHIpOwogI2VuZGlmCiAKKyNpZiBVU0UoR1RLNCkKK3RlbXBsYXRlIDw+IEdz
a1JlbmRlck5vZGUqIHJlZkdQdHIoR3NrUmVuZGVyTm9kZSogcHRyKTsKK3RlbXBsYXRlIDw+IHZv
aWQgZGVyZWZHUHRyKEdza1JlbmRlck5vZGUqIHB0cik7CisjZW5kaWYKKwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGEzMzM2NjRiNjI3OC4uMDJkMjFlODI1ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBA
CisyMDIxLTA1LTI0ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisK
KyAgICAgICAgW0dUSzRdIEFkZCBzdXBwb3J0IGZvciBuYXZpZ2F0aW9uIGdlc3R1cmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFZpZXdTbmFw
c2hvdFN0b3JlIHN0b3JlIEdka1RleHR1cmUgaW5zdGVhZCBvZiBDYWlybyBzdXJmYWNlcworICAg
ICAgICBmb3IgR1RLNC4gU3BsaXQgVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwIGludG8gR1RLMyBh
bmQgR1RLNCB2ZXJzaW9ucworICAgICAgICBzaW5jZSB0aGV5IGRvbid0IGhhdmUgbXVjaCBpbiBj
b21tb24uCisKKyAgICAgICAgV2hlbiB0YWtpbmcgYSB2aWV3IHNuYXBzaG90LCByZW5kZXIgdGhl
IHdlYiB2aWV3IGludG8gYSB0ZXh0dXJlLgorCisgICAgICAgIFdoZW4gc3RhcnRpbmcgYSBuYXZp
Z2F0aW9uIGdlc3R1cmUsIGNyZWF0ZSBhIHJlbmRlciBub2RlIGZyb20KKyAgICAgICAgZWl0aGVy
IHRoZSB0ZXh0dXJlLCBvciBhIGZhbGxiYWNrIGNvbG9yLCB0aGVuIHJlbmRlciB0aGF0IGluc3Rl
YWQKKyAgICAgICAgb2YgdXNpbmcgQ2Fpcm8uCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBzYW1l
IGRpbW1pbmcrc2hhZG93IGFzIGluIEdUSzMuIFRoaXMgdGltZSBkb24ndCBib3RoZXIKKyAgICAg
ICAgd2l0aCBDU1MsIHRoZSBhcHByb2FjaCB3ZSB1c2VkIGluIEdUSzMgZG9lc24ndCB3b3JrIGFu
eW1vcmUsIGFuZCBzaW5jZQorICAgICAgICBlbGVtZW50cyBsaWtlIHNjcm9sbGJhcnMgYXJlbid0
IHRoZW1lYWJsZSBhbnl3YXkgaXQncyBub3QgdmVyeSBpbXBvcnRhbnQKKyAgICAgICAgdG8gcHJl
c2VydmUgdGhhdC4KKworICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlVGFrZVZpZXdTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
Y2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBz
aG90U3RvcmU6OmRpZEFkZEltYWdlVG9TbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdT
bmFwc2hvdFN0b3JlOjp3aWxsUmVtb3ZlSW1hZ2VGcm9tU25hcHNob3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNo
b3Q6OmVzdGltYXRlZEltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWV3U25hcHNob3Q6OnRleHR1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNo
b3Q6OmltYWdlU2l6ZUluQnl0ZXMgY29uc3QpOiBSZW5hbWVkIHRvIGVzdGltYXRlZEltYWdlU2l6
ZUluQnl0ZXMoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5T
d2lwZUdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNu
YXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVT
d2lwZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3Jl
R3RrMy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25h
cHNob3RTdG9yZUd0ay5jcHAuCisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpWaWV3U25hcHNob3QpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6Omhhc0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6Vmlld1NuYXBzaG90OjpjbGVhckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBz
aG90Ojplc3RpbWF0ZWRJbWFnZVNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
Vmlld1NuYXBzaG90OjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdT
bmFwc2hvdFN0b3JlR3RrNC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25h
cHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmlld1NuYXBz
aG90KToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6ZXN0aW1hdGVkSW1hZ2VTaXplSW5CeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6c2l6ZSBjb25zdCk6CisKIDIwMjEtMDYtMDMgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXZWJJREJTZXJ2
ZXIgdXNlIFdvcmtRdWV1ZSBpbnN0ZWFkIG9mIFRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXgg
ODk0ZTVkNGQzMjVlLi5hNDM5MWJlN2I2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjU5LDcg
KzI1OSw4IEBAIFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlclgxMS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9ndGsvVmlld1Nu
YXBzaG90U3RvcmVHdGsuY3BwCitVSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrMy5j
cHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKIFVJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9X
ZWJDb2xvclBpY2tlckd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYmY0YTIxMzhhZDUxLi4zYTNmM2Uy
NWRkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yNTI4LDYgKzI1MjgsNyBAQCBSZWZQdHI8V2ViS2l0OjpW
aWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChXZWJLaXRXZWJW
aWV3QmFzZQogICAgIGZsb2F0IGRldmljZVNjYWxlID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlKTsKIAorI2lmICFVU0UoR1RLNCkKICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX1JHQjI0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpKTsKICAgICBjYWlyb19zdXJmYWNlX3NldF9kZXZpY2Vfc2NhbGUoc3VyZmFjZS5nZXQoKSwg
ZGV2aWNlU2NhbGUsIGRldmljZVNjYWxlKTsKIApAQCAtMjUzNywxMSArMjUzOCwzOSBAQCBSZWZQ
dHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hv
dChXZWJLaXRXZWJWaWV3QmFzZQogICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IuZ2V0KCksIGNs
aXBSZWN0LT54KCksIGNsaXBSZWN0LT55KCksIGNsaXBSZWN0LT53aWR0aCgpLCBjbGlwUmVjdC0+
aGVpZ2h0KCkpOwogICAgICAgICBjYWlyb19jbGlwKGNyLmdldCgpKTsKICAgICB9Ci0jaWYgIVVT
RShHVEs0KQogICAgIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHVEtfV0lER0VUKHdlYmtpdFdlYlZp
ZXdCYXNlKSwgY3IuZ2V0KCkpOwotI2VuZGlmCiAKICAgICByZXR1cm4gVmlld1NuYXBzaG90Ojpj
cmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CisjZWxzZQorICAgIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OworICAgIGF1dG8qIHJlbmRlcmVy
ID0gZ3RrX25hdGl2ZV9nZXRfcmVuZGVyZXIoR1RLX05BVElWRShwcml2LT50b3BsZXZlbE9uU2Ny
ZWVuV2luZG93KSk7CisKKyAgICBHUmVmUHRyPEd0a1NuYXBzaG90PiBzbmFwc2hvdCA9IGFkb3B0
R1JlZihndGtfc25hcHNob3RfbmV3KCkpOworCisgICAgaWYgKGNsaXBSZWN0KSB7CisgICAgICAg
IGdyYXBoZW5lX3BvaW50X3QgcG9pbnQgPSB7IC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3Qt
PngoKSksIC1zdGF0aWNfY2FzdDxmbG9hdD4oY2xpcFJlY3QtPnkoKSkgfTsKKyAgICAgICAgZ3Jh
cGhlbmVfcmVjdF90IHJlY3QgPSB7CisgICAgICAgICAgICB7IHN0YXRpY19jYXN0PGZsb2F0Pihj
bGlwUmVjdC0+eCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNsaXBSZWN0LT55KCkpIH0sCisgICAg
ICAgICAgICB7IHN0YXRpY19jYXN0PGZsb2F0PihjbGlwUmVjdC0+d2lkdGgoKSksIHN0YXRpY19j
YXN0PGZsb2F0PihjbGlwUmVjdC0+aGVpZ2h0KCkpIH0KKyAgICAgICAgfTsKKworICAgICAgICBn
dGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LmdldCgpLCAmcG9pbnQpOworICAgICAgICBn
dGtfc25hcHNob3RfcHVzaF9jbGlwKHNuYXBzaG90LmdldCgpLCAmcmVjdCk7CisgICAgfQorCisg
ICAgZ3RrX3NuYXBzaG90X3NjYWxlKHNuYXBzaG90LmdldCgpLCBkZXZpY2VTY2FsZSwgZGV2aWNl
U2NhbGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU25hcHNob3QoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSksIHNuYXBzaG90LmdldCgpKTsKKworICAgIGlmIChjbGlwUmVjdCkKKyAgICAg
ICAgZ3RrX3NuYXBzaG90X3BvcChzbmFwc2hvdC5nZXQoKSk7CisKKyAgICBHUmVmUHRyPEdza1Jl
bmRlck5vZGU+IHJlbmRlck5vZGUgPSBhZG9wdEdSZWYoZ3RrX3NuYXBzaG90X3RvX25vZGUoc25h
cHNob3QuZ2V0KCkpKTsKKworICAgIGdyYXBoZW5lX3JlY3RfdCB2aWV3cG9ydCA9IHsgMCwgMCwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzaXpl
LmhlaWdodCgpKSB9OworICAgIEdka1RleHR1cmUqIHRleHR1cmUgPSBnc2tfcmVuZGVyZXJfcmVu
ZGVyX3RleHR1cmUocmVuZGVyZXIsIHJlbmRlck5vZGUuZ2V0KCksICZ2aWV3cG9ydCk7CisKKyAg
ICByZXR1cm4gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSk7CisjZW5kaWYK
IH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNl
c3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJv
L1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGJjMTYxODNiODcwOC4uZjY4MTBl
NzE4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2Nh
aXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnMKIAogc3RkOjpvcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYgc25hcHNob3QpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKQor
I2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIHJldHVybiBiYXNlNjRFbmNvZGVk
UE5HRGF0YShzbmFwc2hvdC5zdXJmYWNlKCkpOwogI2Vsc2UKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aAppbmRleCBiODZlMDBiNmMyOWQuLmU1MDNhZWZlOTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTQwLDkgKzQwLDE0IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KKworI2lmIFVTRShHVEs0KQorI2luY2x1ZGUgPFdlYkNvcmUvR1JlZlB0ckd0ay5oPgorI2Vs
c2UKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CisjZW5kaWYKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00MzYsMTUgKzQ0MSwyMCBAQCBwcml2YXRlOgogCiAg
ICAgU3dpcGVQcm9ncmVzc1RyYWNrZXIgbV9zd2lwZVByb2dyZXNzVHJhY2tlcjsKIAorI2lmIFVT
RShHVEs0KQorICAgIEdSZWZQdHI8R3NrUmVuZGVyTm9kZT4gbV9jdXJyZW50U3dpcGVTbmFwc2hv
dFBhdHRlcm47CisjZWxzZQogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fY3VycmVudFN3
aXBlU25hcHNob3RQYXR0ZXJuOwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IG1fc3dpcGVE
aW1taW5nUGF0dGVybjsKICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBtX3N3aXBlU2hhZG93
UGF0dGVybjsKICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBtX3N3aXBlQm9yZGVyUGF0dGVy
bjsKICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBtX3N3aXBlT3V0bGluZVBhdHRlcm47CisK
ICAgICBpbnQgbV9zd2lwZVNoYWRvd1NpemU7CiAgICAgaW50IG1fc3dpcGVCb3JkZXJTaXplOwog
ICAgIGludCBtX3N3aXBlT3V0bGluZVNpemU7CiAgICAgR1JlZlB0cjxHdGtDc3NQcm92aWRlcj4g
bV9jc3NQcm92aWRlcjsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2lzU2ltdWxhdGVkU3dpcGUgeyBm
YWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3
U25hcHNob3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RT
dG9yZS5jcHAKaW5kZXggNjI3YWZmNjY5YmM4Li5kY2Q3ZjVhZGYyNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKQEAgLTU4LDE0ICs1OCwxNCBA
QCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpkaWRBZGRJbWFnZVRvU25hcHNob3QoVmlld1NuYXBz
aG90JiBzbmFwc2hvdCkKIHsKICAgICBib29sIGlzTmV3RW50cnkgPSBtX3NuYXBzaG90c1dpdGhJ
bWFnZXMuYWRkKCZzbmFwc2hvdCkuaXNOZXdFbnRyeTsKICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3
RW50cnksIGlzTmV3RW50cnkpOwotICAgIG1fc25hcHNob3RDYWNoZVNpemUgKz0gc25hcHNob3Qu
aW1hZ2VTaXplSW5CeXRlcygpOworICAgIG1fc25hcHNob3RDYWNoZVNpemUgKz0gc25hcHNob3Qu
ZXN0aW1hdGVkSW1hZ2VTaXplSW5CeXRlcygpOwogfQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3Jl
Ojp3aWxsUmVtb3ZlSW1hZ2VGcm9tU25hcHNob3QoVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsK
ICAgICBib29sIHJlbW92ZWQgPSBtX3NuYXBzaG90c1dpdGhJbWFnZXMucmVtb3ZlKCZzbmFwc2hv
dCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKLSAgICBtX3NuYXBzaG90
Q2FjaGVTaXplIC09IHNuYXBzaG90LmltYWdlU2l6ZUluQnl0ZXMoKTsKKyAgICBtX3NuYXBzaG90
Q2FjaGVTaXplIC09IHNuYXBzaG90LmVzdGltYXRlZEltYWdlU2l6ZUluQnl0ZXMoKTsKIH0KIAog
dm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cHJ1bmVTbmFwc2hvdHMoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNo
b3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuaApp
bmRleCBkMjgwZGFlZTk4ZDcuLjJkNWNkNTA0MzIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCkBAIC0zNiw4ICszNiwxMiBAQAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2Vs
c2UKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjZW5kaWYKKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTAsNyArNTQsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Vmlld1NuYXBzaG90PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQorI2lmIFVTRShHVEs0KQorICAgIHN0
YXRpYyBSZWY8Vmlld1NuYXBzaG90PiBjcmVhdGUoR1JlZlB0cjxHZGtUZXh0dXJlPiYmKTsKKyNl
bHNlCiAgICAgc3RhdGljIFJlZjxWaWV3U25hcHNob3Q+IGNyZWF0ZShSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB+Vmlld1NuYXBzaG90KCk7CkBAIC03
OCw3ICs4Niw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBXZWJDb3JlOjpJ
T1N1cmZhY2UqIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KIAot
ICAgIHNpemVfdCBpbWFnZVNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlID8g
bV9zdXJmYWNlLT50b3RhbEJ5dGVzKCkgOiAwOyB9CisgICAgc2l6ZV90IGVzdGltYXRlZEltYWdl
U2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UgPyBtX3N1cmZhY2UtPnRvdGFs
Qnl0ZXMoKSA6IDA7IH0KICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3N1cmZhY2UgPyBtX3N1cmZhY2UtPnNpemUoKSA6IFdlYkNvcmU6OkludFNpemUoKTsgfQog
CiAgICAgdm9pZCBzZXRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KTsKQEAgLTg3LDkgKzk1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RL
KQorI2lmIFVTRShHVEs0KQorICAgIEdka1RleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmUuZ2V0KCk7IH0KKyNlbHNlCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CisjZW5kaWYKIAotICAgIHNpemVf
dCBpbWFnZVNpemVJbkJ5dGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IGVzdGltYXRlZEltYWdlU2l6
ZUluQnl0ZXMoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKICNl
bmRpZgogCkBAIC0xMDEsOSArMTEzLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKKyNpZiBVU0UoR1RLNCkKKyAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoR1JlZlB0
cjxHZGtUZXh0dXJlPiYmKTsKKworICAgIEdSZWZQdHI8R2RrVGV4dHVyZT4gbV90ZXh0dXJlOwor
I2Vsc2UKICAgICBleHBsaWNpdCBWaWV3U25hcHNob3QoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4m
Jik7CiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CisjZW5kaWYKICNl
bmRpZgogCiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKaW5k
ZXggZDRjY2NkM2JjMmNkLi5hN2Y2ZmM2MzllZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCkBAIC00OCw2
ICs0OCwyMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlQW5pbWF0aW9uRHVyYXRpb25NdWx0
aXBsaWVyID0gMzsKIHN0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVDYW5jZWxBcmVhID0gMC41Owog
c3RhdGljIGNvbnN0IGRvdWJsZSBzd2lwZUNhbmNlbFZlbG9jaXR5VGhyZXNob2xkID0gMC40Owog
CisjaWYgVVNFKEdUSzQpCitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5U2hhZG93T3Bh
Y2l0eSA9IDAuMDY7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5Qm9yZGVyT3BhY2l0
eSA9IDAuMDU7CitzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVPdmVybGF5T3V0bGluZU9wYWNpdHkg
PSAwLjA1Oworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ID0g
MC4xMjsKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aCA9IDU3Owor
c3RhdGljIGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlTaGFkb3dTdG9wc1tdID0gewor
ICAgIHsgMCwgICAgIHsgMCwgMCwgMCwgMC4wOCAgfSB9LAorICAgIHsgMC4xMjUsIHsgMCwgMCwg
MCwgMC4wNTMgfSB9LAorICAgIHsgMC40MjgsIHsgMCwgMCwgMCwgMC4wMjYgfSB9LAorICAgIHsg
MC43MTQsIHsgMCwgMCwgMCwgMC4wMSAgfSB9LAorICAgIHsgMSwgICAgIHsgMCwgMCwgMCwgMCAg
ICAgfSB9Cit9OworI2VuZGlmCisKIHN0YXRpYyBib29sIGlzRXZlbnRTdG9wKFBsYXRmb3JtR3Rr
U2Nyb2xsRGF0YSogZXZlbnQpCiB7CiAgICAgcmV0dXJuIGV2ZW50LT5pc0VuZDsKQEAgLTMwOSw2
ICszMjQsNyBAQCBzdGF0aWMgaW50IGVsZW1lbnRXaWR0aChHdGtTdHlsZUNvbnRleHQqIGNvbnRl
eHQpCiAKICAgICByZXR1cm4gd2lkdGg7CiB9CisKICNlbmRpZgogCiB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFy
Z2V0SXRlbSwgU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMzE5LDM0ICszMzUsNTggQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgIHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1
cmVUeXBlOjpTd2lwZSk7CiAKKyAgICBGbG9hdFNpemUgdmlld1NpemUobV93ZWJQYWdlUHJveHku
dmlld1NpemUoKSk7CisKKyNpZiBVU0UoR1RLNCkKKyAgICBncmFwaGVuZV9yZWN0X3QgYm91bmRz
ID0geyAwLCAwLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSB9OworI2VuZGlm
CisKICAgICBpZiAoYXV0byogc25hcHNob3QgPSB0YXJnZXRJdGVtLT5zbmFwc2hvdCgpKSB7CiAg
ICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBzbmFwc2hvdDsKIAotICAgICAgICBGbG9h
dFNpemUgdmlld1NpemUobV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CiAgICAgICAgIGlmIChz
bmFwc2hvdC0+aGFzSW1hZ2UoKSAmJiBzaG91bGRVc2VTbmFwc2hvdEZvclNpemUoKnNuYXBzaG90
LCB2aWV3U2l6ZSwgMCkpCisjaWYgVVNFKEdUSzQpCisgICAgICAgICAgICBtX2N1cnJlbnRTd2lw
ZVNuYXBzaG90UGF0dGVybiA9IGdza190ZXh0dXJlX25vZGVfbmV3KHNuYXBzaG90LT50ZXh0dXJl
KCksICZib3VuZHMpOworI2Vsc2UKICAgICAgICAgICAgIG1fY3VycmVudFN3aXBlU25hcHNob3RQ
YXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc25hcHNo
b3QtPnN1cmZhY2UoKSkpOworI2VuZGlmCiAKICAgICAgICAgQ29sb3IgY29sb3IgPSBzbmFwc2hv
dC0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90ID0gY29sb3I7CiAg
ICAgICAgICAgICBpZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byBbcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGFdID0gY29sb3IudG9TUkdCQUxv
c3N5PGZsb2F0PigpOworI2lmIFVTRShHVEs0KQorICAgICAgICAgICAgICAgIEdka1JHQkEgcmdi
YSA9IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfTsKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnRTd2lwZVNuYXBzaG90UGF0dGVybiA9IGFkb3B0R1JlZihnc2tfY29sb3Jfbm9kZV9uZXcoJnJn
YmEsICZib3VuZHMpKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFw
c2hvdFBhdHRlcm4gPSBhZG9wdFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2JhKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKSk7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIAotI2lmICFVU0UoR1RLNCkKICAgICBpZiAoIW1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0
ZXJuKSB7CiAgICAgICAgIEdka1JHQkEgY29sb3I7CiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBn
dGtfd2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0KG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7
CiAgICAgICAgIGlmIChndGtfc3R5bGVfY29udGV4dF9sb29rdXBfY29sb3IoY29udGV4dCwgInRo
ZW1lX2Jhc2VfY29sb3IiLCAmY29sb3IpKQorI2lmIFVTRShHVEs0KQorICAgICAgICAgICAgbV9j
dXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3
KCZjb2xvciwgJmJvdW5kcykpOworI2Vsc2UKICAgICAgICAgICAgIG1fY3VycmVudFN3aXBlU25h
cHNob3RQYXR0ZXJuID0gYWRvcHRSZWYoY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiYShjb2xvci5y
ZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlLCBjb2xvci5hbHBoYSkpOworI2VuZGlmCiAgICAg
fQogCi0gICAgaWYgKCFtX2N1cnJlbnRTd2lwZVNuYXBzaG90UGF0dGVybikKKyAgICBpZiAoIW1f
Y3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuKSB7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIEdk
a1JHQkEgY29sb3IgPSB7IDEsIDEsIDEsIDEgfTsKKyAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFw
c2hvdFBhdHRlcm4gPSBhZG9wdEdSZWYoZ3NrX2NvbG9yX25vZGVfbmV3KCZjb2xvciwgJmJvdW5k
cykpOworI2Vsc2UKICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBhZG9w
dFJlZihjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2IoMSwgMSwgMSkpOworI2VuZGlmCisgICAgfQog
CisjaWYgIVVTRShHVEs0KQogICAgIGF1dG8gc2l6ZSA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdB
cmVhKCktPnNpemUoKTsKIAogICAgIGlmICghbV9jc3NQcm92aWRlcikgewpAQCAtNDA0LDMzICs0
NDQsNzAgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNuYXBzaG90KEd0a1NuYXBzaG90
KiBzbmFwc2hvdCwgR3NrUmVuZGVyTm9kZSogcGFnZVIKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5o
ZWlnaHQoKTsKICAgICBkb3VibGUgc2NhbGUgPSBtX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogCi0gICAgZG91YmxlIHN3aXBpbmdMYXllck9mZnNldCA9IChzd2lwaW5nTGVmdCA/
IDAgOiB3aWR0aCkgKyBmbG9vcih3aWR0aCAqIHByb2dyZXNzICogc2NhbGUpIC8gc2NhbGU7Cisg
ICAgZmxvYXQgc3dpcGluZ0xheWVyT2Zmc2V0ID0gKHN3aXBpbmdMZWZ0ID8gMCA6IHdpZHRoKSAr
IGZsb29yKHdpZHRoICogcHJvZ3Jlc3MgKiBzY2FsZSkgLyBzY2FsZTsKIAotICAgIGRvdWJsZSBk
aW1taW5nUHJvZ3Jlc3MgPSBzd2lwaW5nTGVmdCA/IDEgLSBwcm9ncmVzcyA6IC1wcm9ncmVzczsK
KyAgICBmbG9hdCBkaW1taW5nUHJvZ3Jlc3MgPSBzd2lwaW5nTGVmdCA/IDEgLSBwcm9ncmVzcyA6
IC1wcm9ncmVzczsKICAgICBpZiAoaXNSVEwpIHsKICAgICAgICAgZGltbWluZ1Byb2dyZXNzID0g
MSAtIGRpbW1pbmdQcm9ncmVzczsKICAgICAgICAgc3dpcGluZ0xheWVyT2Zmc2V0ID0gLSh3aWR0
aCAtIHN3aXBpbmdMYXllck9mZnNldCk7CiAgICAgfQogCisgICAgZmxvYXQgcmVtYWluaW5nU3dp
cGVEaXN0YW5jZSA9IGRpbW1pbmdQcm9ncmVzcyAqIHdpZHRoOworCisgICAgZmxvYXQgc2hhZG93
T3BhY2l0eSA9IDE7CisgICAgaWYgKHJlbWFpbmluZ1N3aXBlRGlzdGFuY2UgPCBzd2lwZU92ZXJs
YXlTaGFkb3dXaWR0aCkKKyAgICAgICAgc2hhZG93T3BhY2l0eSA9IHJlbWFpbmluZ1N3aXBlRGlz
dGFuY2UgLyBzd2lwZU92ZXJsYXlTaGFkb3dXaWR0aDsKKwogICAgIGd0a19zbmFwc2hvdF9zYXZl
KHNuYXBzaG90KTsKIAotICAgIGdyYXBoZW5lX3BvaW50X3QgdHJhbnNsYXRpb24gPSB7IHN0YXRp
Y19jYXN0PGZsb2F0Pihzd2lwaW5nTGF5ZXJPZmZzZXQpLCAwIH07CisgICAgZ3JhcGhlbmVfcmVj
dF90IGNsaXAgPSB7IDAsIDAsIHN0YXRpY19jYXN0PGZsb2F0PihzaXplLndpZHRoKCkpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBndGtfc25hcHNob3RfcHVzaF9j
bGlwKHNuYXBzaG90LCAmY2xpcCk7CisKKyAgICBncmFwaGVuZV9wb2ludF90IHRyYW5zbGF0aW9u
ID0geyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAgfTsKICAgICBpZiAoIXN3aXBpbmdCYWNrKSB7CiAg
ICAgICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfbm9kZShzbmFwc2hvdCwgcGFnZVJlbmRlck5vZGUp
OwogICAgICAgICBndGtfc25hcHNob3RfdHJhbnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24p
OwogICAgIH0KIAotICAgIGdyYXBoZW5lX3JlY3RfdCByZWN0ID0geyAwLCAwLCAoZmxvYXQpd2lk
dGgsIChmbG9hdCloZWlnaHQgfTsKLSAgICBhdXRvKiBjciA9IGd0a19zbmFwc2hvdF9hcHBlbmRf
Y2Fpcm8oc25hcHNob3QsICZyZWN0KTsKLSAgICBjYWlyb19zZXRfc291cmNlKGNyLCBtX2N1cnJl
bnRTd2lwZVNuYXBzaG90UGF0dGVybi5nZXQoKSk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAw
LCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBjYWlyb19maWxsKGNyKTsKKyAgICBndGtfc25hcHNo
b3RfYXBwZW5kX25vZGUoc25hcHNob3QsIG1fY3VycmVudFN3aXBlU25hcHNob3RQYXR0ZXJuLmdl
dCgpKTsKIAogICAgIGlmIChzd2lwaW5nQmFjaykgewogICAgICAgICBndGtfc25hcHNob3RfdHJh
bnNsYXRlKHNuYXBzaG90LCAmdHJhbnNsYXRpb24pOwogICAgICAgICBndGtfc25hcHNob3RfYXBw
ZW5kX25vZGUoc25hcHNob3QsIHBhZ2VSZW5kZXJOb2RlKTsKICAgICB9CiAKKyAgICBpZiAoIXBy
b2dyZXNzKSB7CisgICAgICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNob3QpOworICAgICAgICBn
dGtfc25hcHNob3RfcmVzdG9yZShzbmFwc2hvdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoaXNSVEwpIHsKKyAgICAgICAgdHJhbnNsYXRpb24gPSB7IHN0YXRpY19jYXN0PGZs
b2F0Pih3aWR0aCksIDAgfTsKKyAgICAgICAgZ3RrX3NuYXBzaG90X3RyYW5zbGF0ZShzbmFwc2hv
dCwgJnRyYW5zbGF0aW9uKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZ3RrX3NuYXBzaG90X3NjYWxl
KHNuYXBzaG90LCAtMSwgMSk7CisKKyAgICBHZGtSR0JBIGRpbW1pbmcgPSB7IDAsIDAsIDAsIHN3
aXBlT3ZlcmxheURpbW1pbmdPcGFjaXR5ICogZGltbWluZ1Byb2dyZXNzIH07CisgICAgR2RrUkdC
QSBib3JkZXIgPSB7IDAsIDAsIDAsIHN3aXBlT3ZlcmxheUJvcmRlck9wYWNpdHkgfTsKKyAgICBH
ZGtSR0JBIG91dGxpbmUgPSB7IDEsIDEsIDEsIHN3aXBlT3ZlcmxheU91dGxpbmVPcGFjaXR5IH07
CisKKyAgICBncmFwaGVuZV9yZWN0X3QgZGltbWluZ1JlY3QgPSB7IDAsIDAsICBzdGF0aWNfY2Fz
dDxmbG9hdD4od2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0KSB9OworICAgIGdyYXBo
ZW5lX3JlY3RfdCBib3JkZXJSZWN0ID0geyAwLCAwLCAxLCBzdGF0aWNfY2FzdDxmbG9hdD4oaGVp
Z2h0KSB9OworICAgIGdyYXBoZW5lX3JlY3RfdCBvdXRsaW5lUmVjdCA9IHsgLTEsIDAsIDEsIHN0
YXRpY19jYXN0PGZsb2F0PihoZWlnaHQpIH07CisgICAgZ3JhcGhlbmVfcmVjdF90IHNoYWRvd1Jl
Y3QgPSB7IDAsIDAsIHN3aXBlT3ZlcmxheVNoYWRvd1dpZHRoLCBzdGF0aWNfY2FzdDxmbG9hdD4o
aGVpZ2h0KSB9OworICAgIGdyYXBoZW5lX3BvaW50X3Qgc2hhZG93U3RhcnQgPSB7IDAsIDAgfTsK
KyAgICBncmFwaGVuZV9wb2ludF90IHNoYWRvd0VuZCA9IHsgc3dpcGVPdmVybGF5U2hhZG93V2lk
dGgsIDAgfTsKKworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfY29sb3Ioc25hcHNob3QsICZkaW1t
aW5nLCAmZGltbWluZ1JlY3QpOworICAgIGd0a19zbmFwc2hvdF9hcHBlbmRfY29sb3Ioc25hcHNo
b3QsICZib3JkZXIsICZib3JkZXJSZWN0KTsKKyAgICBndGtfc25hcHNob3RfYXBwZW5kX2NvbG9y
KHNuYXBzaG90LCAmb3V0bGluZSwgJm91dGxpbmVSZWN0KTsKKyAgICBndGtfc25hcHNob3RfcHVz
aF9vcGFjaXR5KHNuYXBzaG90LCBzaGFkb3dPcGFjaXR5KTsKKyAgICBndGtfc25hcHNob3RfYXBw
ZW5kX2xpbmVhcl9ncmFkaWVudChzbmFwc2hvdCwgJnNoYWRvd1JlY3QsICZzaGFkb3dTdGFydCwg
JnNoYWRvd0VuZCwKKyAgICAgICAgc3dpcGVPdmVybGF5U2hhZG93U3RvcHMsIEdfTl9FTEVNRU5U
Uyhzd2lwZU92ZXJsYXlTaGFkb3dTdG9wcykpOworICAgIGd0a19zbmFwc2hvdF9wb3Aoc25hcHNo
b3QpOworCisgICAgZ3RrX3NuYXBzaG90X3BvcChzbmFwc2hvdCk7CiAgICAgZ3RrX3NuYXBzaG90
X3Jlc3RvcmUoc25hcHNob3QpOwogfQogI2Vsc2UKQEAgLTUzNiwxMCArNjEzLDEyIEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFBhdHRlcm4gPSBudWxscHRyOworI2lm
ICFVU0UoR1RLNCkKICAgICBtX3N3aXBlRGltbWluZ1BhdHRlcm4gPSBudWxscHRyOwogICAgIG1f
c3dpcGVTaGFkb3dQYXR0ZXJuID0gbnVsbHB0cjsKICAgICBtX3N3aXBlQm9yZGVyUGF0dGVybiA9
IG51bGxwdHI7CiAgICAgbV9zd2lwZU91dGxpbmVQYXR0ZXJuID0gbnVsbHB0cjsKKyNlbmRpZgog
CiAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdCA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGszLmNwcApzaW1pbGFy
aXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmll
d1NuYXBzaG90U3RvcmVHdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvVmlld1NuYXBzaG90U3RvcmVHdGszLmNwcAppbmRleCA2ZDJiYWFkNjg4ZWEuLmZmMGMyMjcz
NzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hv
dFN0b3JlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBz
aG90U3RvcmVHdGszLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAKKyNpZiAhVVNFKEdUSzQpCisKICNpbmNs
dWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTgsNyArNjAsNyBAQCB2b2lkIFZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSgpCiAgICAgbV9zdXJm
YWNlID0gbnVsbHB0cjsKIH0KIAotc2l6ZV90IFZpZXdTbmFwc2hvdDo6aW1hZ2VTaXplSW5CeXRl
cygpIGNvbnN0CitzaXplX3QgVmlld1NuYXBzaG90Ojplc3RpbWF0ZWRJbWFnZVNpemVJbkJ5dGVz
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04
MywzICs4NSw1IEBAIFdlYkNvcmU6OkludFNpemUgVmlld1NuYXBzaG90OjpzaXplKCkgY29uc3QK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdTbmFwc2hvdFN0b3JlR3RrNC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld1NuYXBzaG90U3RvcmVHdGs0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQzMWJjMGNhODlhNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3U25hcHNob3RTdG9yZUd0azQu
Y3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLGRkCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorCisjaWYgVVNFKEdUSzQpCisKK25hbWVz
cGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxWaWV3U25hcHNo
b3Q+IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKEdSZWZQdHI8R2RrVGV4dHVyZT4mJiB0ZXh0dXJlKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZXdTbmFwc2hvdChXVEZNb3ZlKHRleHR1cmUp
KSk7Cit9CisKK1ZpZXdTbmFwc2hvdDo6Vmlld1NuYXBzaG90KEdSZWZQdHI8R2RrVGV4dHVyZT4m
JiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCit7CisgICAgaWYg
KGhhc0ltYWdlKCkpCisgICAgICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5kaWRB
ZGRJbWFnZVRvU25hcHNob3QoKnRoaXMpOworfQorCitib29sIFZpZXdTbmFwc2hvdDo6aGFzSW1h
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisKK3ZvaWQgVmlld1NuYXBz
aG90OjpjbGVhckltYWdlKCkKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS53aWxsUmVtb3ZlSW1hZ2VG
cm9tU25hcHNob3QoKnRoaXMpOworCisgICAgbV90ZXh0dXJlID0gbnVsbHB0cjsKK30KKworc2l6
ZV90IFZpZXdTbmFwc2hvdDo6ZXN0aW1hdGVkSW1hZ2VTaXplSW5CeXRlcygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3RleHR1cmUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IHdpZHRoID0g
Z2RrX3RleHR1cmVfZ2V0X3dpZHRoKG1fdGV4dHVyZS5nZXQoKSk7CisgICAgaW50IGhlaWdodCA9
IGdka190ZXh0dXJlX2dldF9oZWlnaHQobV90ZXh0dXJlLmdldCgpKTsKKworICAgIC8vIFVuZm9y
dHVuYXRlbHkgd2UgZG9uJ3QgaGF2ZSBhIHdheSB0byBnZXQgc2l6ZSBvZiBhIHRleHR1cmUgaW4K
KyAgICAvLyBieXRlcywgc28gd2UnbGwgaGF2ZSB0byBtYWtlIHNvbWV0aGluZyB1cC4gTGV0J3Mg
YXNzdW1lIHRoYXQKKyAgICAvLyBwaXhlbCA9PSA0IGJ5dGVzLgorICAgIHJldHVybiB3aWR0aCAq
IGhlaWdodCAqIDQ7Cit9CisKK1dlYkNvcmU6OkludFNpemUgVmlld1NuYXBzaG90OjpzaXplKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGludCB3aWR0aCA9IGdka190ZXh0dXJlX2dldF93aWR0aChtX3RleHR1cmUuZ2V0KCkpOworICAg
IGludCBoZWlnaHQgPSBnZGtfdGV4dHVyZV9nZXRfaGVpZ2h0KG1fdGV4dHVyZS5nZXQoKSk7CisK
KyAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKLS0gCjIuMzEuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>