<?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>236842</bug_id>
          
          <creation_ts>2022-02-18 09:23:18 -0800</creation_ts>
          <short_desc>[Live Text] Add a mechanism to inject images into image overlays</short_desc>
          <delta_ts>2022-02-18 15:52:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236845</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843450</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 09:23:18 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843471</commentid>
    <comment_count>1</comment_count>
      <attachid>452534</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 10:06:54 -0800</bug_when>
    <thetext>Created attachment 452534
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843474</commentid>
    <comment_count>2</comment_count>
      <attachid>452535</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 10:11:47 -0800</bug_when>
    <thetext>Created attachment 452535
Fix watchOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843477</commentid>
    <comment_count>3</comment_count>
      <attachid>452536</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 10:18:48 -0800</bug_when>
    <thetext>Created attachment 452536
Fix Big Sur build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843485</commentid>
    <comment_count>4</comment_count>
      <attachid>452540</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 10:35:04 -0800</bug_when>
    <thetext>Created attachment 452540
Fix non-internal iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843502</commentid>
    <comment_count>5</comment_count>
      <attachid>452545</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 10:51:18 -0800</bug_when>
    <thetext>Created attachment 452545
Fix watchOS build (again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843548</commentid>
    <comment_count>6</comment_count>
      <attachid>452545</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-18 12:18:01 -0800</bug_when>
    <thetext>Comment on attachment 452545
Fix watchOS build (again)

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

&gt; Source/WebCore/dom/ImageOverlay.cpp:227
&gt; +static void installStyleSheet(ShadowRoot&amp; shadowRoot)

Consider renaming to `installImageOverlayStyleSheet`.

&gt; Source/WebCore/dom/ImageOverlay.cpp:679
&gt; +    RefPtr imageOverlayRoot = dynamicDowncast&lt;HTMLDivElement&gt;(static_cast&lt;TreeScope&amp;&gt;(shadowRoot.get()).getElementById(imageOverlayElementIdentifier()));

Is the static cast to `TreeScope` necessary?

&gt; Source/WebCore/dom/ImageOverlay.h:28
&gt; +#include &quot;FloatRect.h&quot;

Can this be forward declared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843578</commentid>
    <comment_count>7</comment_count>
      <attachid>452545</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 12:47:48 -0800</bug_when>
    <thetext>Comment on attachment 452545
Fix watchOS build (again)

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

Thanks for the review!

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:227
&gt;&gt; +static void installStyleSheet(ShadowRoot&amp; shadowRoot)
&gt; 
&gt; Consider renaming to `installImageOverlayStyleSheet`.

Makes sense! Renamed.

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:679
&gt;&gt; +    RefPtr imageOverlayRoot = dynamicDowncast&lt;HTMLDivElement&gt;(static_cast&lt;TreeScope&amp;&gt;(shadowRoot.get()).getElementById(imageOverlayElementIdentifier()));
&gt; 
&gt; Is the static cast to `TreeScope` necessary?

That&apos;s a good question…the issue is that `getElementById(const AtomString&amp;)` exists on both TreeScope and DocumentFragment, so the compiler doesn&apos;t know which one to pick :/

I tried to work around this by initializing a String and using the `const String&amp;` version, but that didn&apos;t seem to alleviate the issue from above. I think I&apos;ll keep it as is (though, maybe there&apos;s a cleaner way to avoid this?)

&gt;&gt; Source/WebCore/dom/ImageOverlay.h:28
&gt;&gt; +#include &quot;FloatRect.h&quot;
&gt; 
&gt; Can this be forward declared?

Good catch — fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843587</commentid>
    <comment_count>8</comment_count>
      <attachid>452567</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 13:00:43 -0800</bug_when>
    <thetext>Created attachment 452567
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843606</commentid>
    <comment_count>9</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-18 13:19:56 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 452545 [details]
&gt; Fix watchOS build (again)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452545&amp;action=review
&gt; 
&gt; Thanks for the review!
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:227
&gt; &gt;&gt; +static void installStyleSheet(ShadowRoot&amp; shadowRoot)
&gt; &gt; 
&gt; &gt; Consider renaming to `installImageOverlayStyleSheet`.
&gt; 
&gt; Makes sense! Renamed.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:679
&gt; &gt;&gt; +    RefPtr imageOverlayRoot = dynamicDowncast&lt;HTMLDivElement&gt;(static_cast&lt;TreeScope&amp;&gt;(shadowRoot.get()).getElementById(imageOverlayElementIdentifier()));
&gt; &gt; 
&gt; &gt; Is the static cast to `TreeScope` necessary?
&gt; 
&gt; That&apos;s a good question…the issue is that `getElementById(const AtomString&amp;)`
&gt; exists on both TreeScope and DocumentFragment, so the compiler doesn&apos;t know
&gt; which one to pick :/
&gt; 
&gt; I tried to work around this by initializing a String and using the `const
&gt; String&amp;` version, but that didn&apos;t seem to alleviate the issue from above. I
&gt; think I&apos;ll keep it as is (though, maybe there&apos;s a cleaner way to avoid this?)

I think we can solve this by adding `using TreeScope::getElementById;` in `ShadowRoot.h`.

Note that the `DocumentFragment` implementation already calls into the `TreeScope` implementation for shadow roots.
 
&gt; &gt;&gt; Source/WebCore/dom/ImageOverlay.h:28
&gt; &gt;&gt; +#include &quot;FloatRect.h&quot;
&gt; &gt; 
&gt; &gt; Can this be forward declared?
&gt; 
&gt; Good catch — fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843625</commentid>
    <comment_count>10</comment_count>
      <attachid>452545</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 13:39:16 -0800</bug_when>
    <thetext>Comment on attachment 452545
Fix watchOS build (again)

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:227
&gt;&gt;&gt;&gt; +static void installStyleSheet(ShadowRoot&amp; shadowRoot)
&gt;&gt;&gt; 
&gt;&gt;&gt; Consider renaming to `installImageOverlayStyleSheet`.
&gt;&gt; 
&gt;&gt; Makes sense! Renamed.
&gt; 
&gt; I think we can solve this by adding `using TreeScope::getElementById;` in `ShadowRoot.h`.
&gt; 
&gt; Note that the `DocumentFragment` implementation already calls into the `TreeScope` implementation for shadow roots.

Thanks! That works — and it also looks like we do something similar already for `rootNode()` on ShadowRoot, so there&apos;s precedent.

I&apos;ll add that, and replace all the static_casts to TreeScope here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843631</commentid>
    <comment_count>11</comment_count>
      <attachid>452577</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-18 13:44:41 -0800</bug_when>
    <thetext>Created attachment 452577
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843676</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 15:51:49 -0800</bug_when>
    <thetext>Committed r290178 (247508@main): &lt;https://commits.webkit.org/247508@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452577.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843678</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-18 15:52:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/89169696&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452534</attachid>
            <date>2022-02-18 10:06:54 -0800</date>
            <delta_ts>2022-02-18 10:25:42 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-236842-20220218100652.patch</filename>
            <type>text/plain</type>
            <size>25290</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMWUzYzYzNDJkMzVkYjNlNzhhYzE1ZWZkNGVhMjQw
Zjk5ZjEyMjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsU3R5bGVTaGVldCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhlIFVBIHN0eWxlIHNo
ZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwgc28gdGhhdCB3ZSBj
YW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2FzZXMgd2hlcmUgdGhl
IGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBUZXh0IGlzIGluamVj
dGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRy
ZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBjb21wbGV0ZWx5IHJl
bW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVnZW5lcmF0ZWQ7IHRo
aXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRoZSBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBMaXZlIFRleHQgZWxl
bWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRv
IGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2ZW4gaG9zdCBlbGVt
ZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAgICAgdGhlIGdpdmVu
IGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5zZXJ0IGFuIGltYWdl
IGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAgICAgY29udGFpbmVy
IHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4gY3JvcCByZWN0IChu
b3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAgVGhpcyBpbnNlcnRl
ZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxlbWVudCB0aGF0IGZh
ZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAgICAgY2FsbGVkLiBG
aW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBhIFJBSUkgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQorICAgICAgICBiYWNr
ZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2JqZWN0IGltbWVkaWF0
ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1hZ2UKKyAgICAgICAg
ZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBjcmVhdGVkIGR1cmlu
ZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OkNy
b3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICogZG9tL0ltYWdlT3Zl
cmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAg
IChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92
ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBj
cm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBh
biBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRo
ZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwog
MjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJk
MWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uYTQ4NGQzMjhmNTg0NjkzNjZkNDE4YjZiNmQzN2FkODk5MTY2
Nzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDggKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAKKyNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKKyNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtOTQsNiArOTgsMTggQEAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheUJsb2NrQ2xhc3MoKQogICAgIHJldHVy
biBjbGFzc05hbWU7CiB9CiAKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlD
cm9wcGVkSW1hZ2VJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImltYWdlLW92ZXJsYXktY3JvcHBl
ZC1pbWFnZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4g
aWRlbnRpZmllcjsKK30KKworc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheUNy
b3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpZGVudGlmaWVyKCJpbWFnZS1vdmVybGF5
LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAKIGJvb2wgaGFzT3ZlcmxheShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkK
QEAgLTIyMiw2ICsyMzgsMTQgQEAgSW50UmVjdCBjb250YWluZXJSZWN0KEhUTUxFbGVtZW50JiBl
bGVtZW50KQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRvd25jYXN0PFJlbmRlckltYWdl
PigqcmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3QoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGlu
c3RhbGxTdHlsZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0lt
cGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQs
IHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOworICAgIGF1dG8gc3R5
bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgc2hhZG93
Um9vdC5kb2N1bWVudCgpLCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRv
d1N0eWxlKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKK30K
Kwogc3RydWN0IExpbmVFbGVtZW50cyB7CiAgICAgUmVmPEhUTUxEaXZFbGVtZW50PiBsaW5lOwog
ICAgIFZlY3RvcjxSZWY8SFRNTEVsZW1lbnQ+PiBjaGlsZHJlbjsKQEAgLTI4MCw2ICszMDQsNyBA
QCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBj
YW5Vc2VFeGlzdGluZ0VsZW1lbnRzID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnRzLnJvb3QpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBjaGlsZEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2
RWxlbWVudD4oKmVsZW1lbnRzLnJvb3QpKSB7CiAgICAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVu
dC5oYXNDbGFzcygpKQpAQCAtMzAzLDcgKzMyOCw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVT
dWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQm
CiAgICAgICAgICAgICBlbGVtZW50cy5saW5lcy5hcHBlbmQoeyBjaGlsZEVsZW1lbnQsIFdURk1v
dmUobGluZUNoaWxkcmVuKSwgY2hpbGRyZW5PZlR5cGU8SFRNTEJSRWxlbWVudD4oY2hpbGRFbGVt
ZW50KS5maXJzdCgpIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGlu
Z0VsZW1lbnRzID0gKFsmXSB7CisgICAgICAgIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSAoWyZd
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZGF0YURldGVjdG9ycy5zaXplKCkgIT0gZWxlbWVu
dHMuZGF0YURldGVjdG9ycy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0zNDAsOCArMzY1LDggQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgfSko
KTsKIAogICAgICAgICBpZiAoIWNhblVzZUV4aXN0aW5nRWxlbWVudHMpIHsKLSAgICAgICAgICAg
IGVsZW1lbnRzLnJvb3QtPnJlbW92ZSgpOwotICAgICAgICAgICAgZWxlbWVudHMgPSB7IH07Cisg
ICAgICAgICAgICBlbGVtZW50cy5yb290LT5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAg
ZWxlbWVudHMgPSB7IGVsZW1lbnRzLnJvb3QgfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzUw
LDIzICszNzUsMjUgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKIAogICAgIFJlZiBkb2N1bWVu
dCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKICAgICBSZWYgc2hhZG93Um9vdCA9IGVsZW1lbnQuZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIGlmICghZWxlbWVudHMucm9vdCkgewotICAg
ICAgICBhdXRvIHJvb3RDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
LmdldCgpKTsKLSAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVy
bGF5RWxlbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIHJvb3RDb250YWluZXItPnNldFRyYW5z
bGF0ZShmYWxzZSk7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpCi0g
ICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVUZXh0KTsKKyAgICBpZiAoIWNhblVzZUV4aXN0
aW5nRWxlbWVudHMpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50cy5yb290KSB7CisgICAgICAgICAg
ICBhdXRvIHJvb3RDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXItPnNldElkQXR0cmlidXRlKGltYWdlT3Zl
cmxheUVsZW1lbnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0
VHJhbnNsYXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURvY3Vt
ZW50KCkpCisgICAgICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlVGV4dCk7CiAKLSAgICAg
ICAgaWYgKG1lZGlhQ29udHJvbHNDb250YWluZXIpCi0gICAgICAgICAgICBtZWRpYUNvbnRyb2xz
Q29udGFpbmVyLT5hcHBlbmRDaGlsZChyb290Q29udGFpbmVyKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7Ci0gICAgICAg
IGVsZW1lbnRzLnJvb3QgPSByb290Q29udGFpbmVyLmNvcHlSZWYoKTsKKyAgICAgICAgICAgIGlm
IChtZWRpYUNvbnRyb2xzQ29udGFpbmVyKQorICAgICAgICAgICAgICAgIG1lZGlhQ29udHJvbHND
b250YWluZXItPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIpOwor
ICAgICAgICAgICAgZWxlbWVudHMucm9vdCA9IHJvb3RDb250YWluZXIuY29weVJlZigpOworICAg
ICAgICB9CiAgICAgICAgIGVsZW1lbnRzLmxpbmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVz
dWx0LmxpbmVzLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgbGluZSA6IHJlc3VsdC5saW5l
cykgewogICAgICAgICAgICAgYXV0byBsaW5lQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgICAgICAgICBsaW5lQ29udGFpbmVyLT5jbGFzc0xp
c3QoKS5hZGQoaW1hZ2VPdmVybGF5TGluZUNsYXNzKCkpOwotICAgICAgICAgICAgcm9vdENvbnRh
aW5lci0+YXBwZW5kQ2hpbGQobGluZUNvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5y
b290LT5hcHBlbmRDaGlsZChsaW5lQ29udGFpbmVyKTsKICAgICAgICAgICAgIExpbmVFbGVtZW50
cyBsaW5lRWxlbWVudHMgeyBsaW5lQ29udGFpbmVyLCB7IH0sIHsgfSB9OwogICAgICAgICAgICAg
bGluZUVsZW1lbnRzLmNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZS5jaGlsZHJl
bi5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9IDA7IGNoaWxk
SW5kZXggPCBsaW5lLmNoaWxkcmVuLnNpemUoKTsgKytjaGlsZEluZGV4KSB7CkBAIC0zOTEsNyAr
NDE4LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgZm9yIChhdXRvJiBkYXRh
RGV0ZWN0b3IgOiByZXN1bHQuZGF0YURldGVjdG9ycykgewogICAgICAgICAgICAgYXV0byBkYXRh
RGV0ZWN0b3JDb250YWluZXIgPSBEYXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VP
dmVybGF5KGRvY3VtZW50LmdldCgpLCBkYXRhRGV0ZWN0b3IpOwogICAgICAgICAgICAgZGF0YURl
dGVjdG9yQ29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5RGF0YURldGVjdG9y
Q2xhc3MoKSk7Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChkYXRhRGV0
ZWN0b3JDb250YWluZXIpOworICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+YXBwZW5kQ2hpbGQo
ZGF0YURldGVjdG9yQ29udGFpbmVyKTsKICAgICAgICAgICAgIGVsZW1lbnRzLmRhdGFEZXRlY3Rv
cnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZGF0YURldGVjdG9yQ29udGFpbmVyKSk7CiAgICAg
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC00MDAsNyArNDI3LDcg
QEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgZm9yIChhdXRvJiBibG9jayA6IHJl
c3VsdC5ibG9ja3MpIHsKICAgICAgICAgICAgIGF1dG8gYmxvY2tDb250YWluZXIgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICAgICAgICAgIGJsb2NrQ29udGFp
bmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpKTsKLSAgICAgICAg
ICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGJsb2NrQ29udGFpbmVyKTsKKyAgICAgICAg
ICAgIGVsZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxkKGJsb2NrQ29udGFpbmVyKTsKICAgICAgICAg
ICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0
KCksIG1ha2VTdHJpbmcoJ1xuJywgYmxvY2sudGV4dCkpKTsKICAgICAgICAgICAgIGVsZW1lbnRz
LmJsb2Nrcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShibG9ja0NvbnRhaW5lcikpOwogICAgICAg
ICB9CkBAIC00MTEsMTIgKzQzOCw4IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAoIWhhZEV4aXN0aW5nRWxlbWVudHMpIHsKLSAgICAgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0
cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxl
U2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwotICAgICAg
ICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVU
YWcsIGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVu
dChzaGFkb3dTdHlsZSk7Ci0gICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKFdURk1vdmUo
c3R5bGUpKTsKLSAgICB9CisgICAgaWYgKCFoYWRFeGlzdGluZ0VsZW1lbnRzKQorICAgICAgICBp
bnN0YWxsU3R5bGVTaGVldChzaGFkb3dSb290LmdldCgpKTsKIAogICAgIHJldHVybiBlbGVtZW50
czsKIH0KQEAgLTY0OSw1ICs2NzIsODggQEAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9u
UmVzdWx0KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb24KIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RkOjp1bmlxdWVfcHRyPENyb3BwZWRJ
bWFnZT4gQ3JvcHBlZEltYWdlOjppbnN0YWxsKEhUTUxFbGVtZW50JiBob3N0LCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGltYWdlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgRmxvYXRSZWN0IG5v
cm1hbGl6ZWRSZWN0KQoreworICAgIFJlZiBkb2N1bWVudCA9IGhvc3QuZG9jdW1lbnQoKTsKKyAg
ICBSZWYgc2hhZG93Um9vdCA9IGhvc3QuZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAg
IFJlZlB0ciBpbWFnZU92ZXJsYXlSb290ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxEaXZFbGVtZW50
PihzdGF0aWNfY2FzdDxUcmVlU2NvcGUmPihzaGFkb3dSb290LmdldCgpKS5nZXRFbGVtZW50QnlJ
ZChpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKSk7CisgICAgaWYgKCFpbWFnZU92ZXJs
YXlSb290KSB7CisgICAgICAgIGltYWdlT3ZlcmxheVJvb3QgPSBIVE1MRGl2RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50LmdldCgpKTsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdC0+c2V0SWRBdHRy
aWJ1dGUoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgIGltYWdlT3Zl
cmxheVJvb3QtPnNldFRyYW5zbGF0ZShmYWxzZSk7CisgICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVu
ZENoaWxkKCppbWFnZU92ZXJsYXlSb290KTsKKyAgICAgICAgaW5zdGFsbFN0eWxlU2hlZXQoc2hh
ZG93Um9vdC5nZXQoKSk7CisgICAgfQorCisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZHluYW1p
Y0Rvd25jYXN0PFJlbmRlckltYWdlPihob3N0LnJlbmRlcmVyKCkpKQorICAgICAgICByZW5kZXJl
ci0+c2V0SGFzSW1hZ2VPdmVybGF5KCk7CisKKyAgICBhdXRvIGNvbnRhaW5lclJlY3QgPSBJbWFn
ZU92ZXJsYXk6OmNvbnRhaW5lclJlY3QoaG9zdCk7CisgICAgYXV0byBjcm9wUmVjdCA9IG5vcm1h
bGl6ZWRSZWN0OworICAgIGNyb3BSZWN0LnNjYWxlKGNvbnRhaW5lclJlY3Qud2lkdGgoKSwgY29u
dGFpbmVyUmVjdC5oZWlnaHQoKSk7CisgICAgY3JvcFJlY3QubW92ZShjb250YWluZXJSZWN0Lngo
KSwgY29udGFpbmVyUmVjdC55KCkpOworCisgICAgYXV0byBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgIGNyb3BwZWRJbWFn
ZUJhY2tkcm9wLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJv
cElkZW50aWZpZXIoKSk7CisgICAgaW1hZ2VPdmVybGF5Um9vdC0+YXBwZW5kQ2hpbGQoY3JvcHBl
ZEltYWdlQmFja2Ryb3AuZ2V0KCkpOworCisgICAgYXV0byBjcm9wcGVkSW1hZ2UgPSBIVE1MSW1h
Z2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgIGF1dG8gY3JvcHBlZEltYWdl
VVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQuZ2V0KCksIEJsb2I6OmNyZWF0
ZShkb2N1bWVudC5wdHIoKSwgaW1hZ2VEYXRhLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkpOwor
ICAgIGNyb3BwZWRJbWFnZS0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdl
SWRlbnRpZmllcigpKTsKKyAgICBjcm9wcGVkSW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBjcm9wcGVkSW1hZ2VVUkwpOworICAgIGNy
b3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGNyb3BS
ZWN0LngoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBjcm9wUmVjdC55KCksIENTU1VuaXRUeXBl
OjpDU1NfUFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoLCBjcm9wUmVjdC53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAg
ICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQs
IGNyb3BSZWN0LmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBpbWFnZU92ZXJs
YXlSb290LT5hcHBlbmRDaGlsZChjcm9wcGVkSW1hZ2UuZ2V0KCkpOworCisgICAgZG9jdW1lbnQt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIGNyb3BwZWRJbWFn
ZUJhY2tkcm9wLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSwgMC41
LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcm9w
cGVkSW1hZ2U+KGRvY3VtZW50LmdldCgpLCBob3N0LCBjcm9wcGVkSW1hZ2VCYWNrZHJvcC5nZXQo
KSwgY3JvcHBlZEltYWdlVVJMKTsKK30KKworQ3JvcHBlZEltYWdlOjpDcm9wcGVkSW1hZ2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBIVE1MRWxlbWVudCYgaG9zdCwgSFRNTEVsZW1lbnQmIGNyb3BwZWRJ
bWFnZUJhY2tkcm9wLCBjb25zdCBTdHJpbmcmIGltYWdlVVJMKQorICAgIDogbV9kb2N1bWVudChk
b2N1bWVudCkKKyAgICAsIG1faG9zdChob3N0KQorICAgICwgbV9jcm9wcGVkSW1hZ2VCYWNrZHJv
cChjcm9wcGVkSW1hZ2VCYWNrZHJvcCkKKyAgICAsIG1faW1hZ2VVUkwoaW1hZ2VVUkwpCit7Cisg
ICAgc2V0VmlzaWJpbGl0eSh0cnVlKTsKK30KKworQ3JvcHBlZEltYWdlOjp+Q3JvcHBlZEltYWdl
KCkKK3sKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9kb2N1bWVudC5nZXQoKSkKKyAgICAg
ICAgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoKmRvY3VtZW50LCBtX2ltYWdlVVJMKTsKKworICAg
IFJlZlB0ciBob3N0ID0gbV9ob3N0LmdldCgpOworICAgIGlmICghaG9zdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUmVmUHRyIHNoYWRvd1Jvb3QgPSBob3N0LT5zaGFkb3dSb290KCk7CisgICAg
aWYgKCFzaGFkb3dSb290IHx8IHNoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6
VXNlckFnZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiB0cmVlU2NvcGUgPSBzdGF0
aWNfY2FzdDxUcmVlU2NvcGUmPigqc2hhZG93Um9vdCk7CisgICAgaWYgKFJlZlB0ciBjcm9wcGVk
SW1hZ2UgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdl
SWRlbnRpZmllcigpKSkKKyAgICAgICAgY3JvcHBlZEltYWdlLT5yZW1vdmUoKTsKKworICAgIGlm
IChSZWZQdHIgY3JvcHBlZEltYWdlQmFja2Ryb3AgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQo
aW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkpKQorICAgICAgICBj
cm9wcGVkSW1hZ2VCYWNrZHJvcC0+cmVtb3ZlKCk7Cit9CisKK3ZvaWQgQ3JvcHBlZEltYWdlOjpz
ZXRWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKK3sKKyAgICBSZWZQdHIgY3JvcHBlZEltYWdlQmFj
a2Ryb3AgPSBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wLmdldCgpOworICAgIGlmICghY3JvcHBlZElt
YWdlQmFja2Ryb3ApCisgICAgICAgIHJldHVybjsKKworICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9w
LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
IGNyb3BwZWRJbWFnZUJhY2tkcm9wLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
T3BhY2l0eSwgdmlzaWJsZSA/IDAuNSA6IDAsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSW1hZ2VPdmVybGF5CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vSW1hZ2VPdmVybGF5LmgKaW5kZXggMmY4MTU0YmEzODViYzA1MjMxOWIzYWI3MjY1
MDQwYWJiMDY0ODliNi4uMzRkNWJiOTY1NjdiODg2NTNlNDMzZTM5ODRhYzU1MmZhNmQzNTNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaApAQCAtMjUsMTIgKzI1LDE2IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIE5vZGU7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2hh
cmFjdGVyUmFuZ2U7CkBAIC01NSw2ICs1OSwyNCBAQCBlbnVtIGNsYXNzIENhY2hlVGV4dFJlY29n
bml0aW9uUmVzdWx0cyA6IGJvb2wgeyBObywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmLCBjb25zdCBUZXh0UmVj
b2duaXRpb25SZXN1bHQmLCBDYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMgPSBDYWNoZVRleHRS
ZWNvZ25pdGlvblJlc3VsdHM6Olllcyk7CiAjZW5kaWYKIAorY2xhc3MgQ3JvcHBlZEltYWdlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
cm9wcGVkSW1hZ2UpOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q3JvcHBlZEltYWdlPiBpbnN0YWxsKEhUTUxFbGVtZW50JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0KTsKKworICAgIENyb3BwZWRJbWFnZShE
b2N1bWVudCYsIEhUTUxFbGVtZW50JiwgSFRNTEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGltYWdl
VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q3JvcHBlZEltYWdlKCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpc2liaWxpdHkoYm9vbCk7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0
cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBtX2hvc3Q7
CisgICAgV2Vha1B0cjxIVE1MRWxlbWVudD4gbV9jcm9wcGVkSW1hZ2VCYWNrZHJvcDsKKyAgICBT
dHJpbmcgbV9pbWFnZVVSTDsKK307CisKIH0gLy8gbmFtZXNwYWNlIEltYWdlT3ZlcmxheQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9pbWFnZU92ZXJsYXkuY3NzIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VP
dmVybGF5LmNzcwppbmRleCBkMjk2NGMxNzE0NDU5NTE1YmMxYWQ0ODQ2ODMyM2I0NDk5ZWI2ZDA3
Li4yZTc2ZDZjMmRkMmU5NTJmNTg5MjBhMzFmYTdhZTgwMTkxZDllZmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTcxLDMgKzcxLDE4IEBAIGRp
di5pbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0IHsKICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKIH0KKworaW1nI2ltYWdlLW92
ZXJsYXktY3JvcHBlZC1pbWFnZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHBvaW50
ZXItZXZlbnRzOiBub25lOworfQorCitkaXYjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWJh
Y2tkcm9wIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIHRyYW5zaXRpb246IG9w
YWNpdHkgMC41cyBlYXNlLWluLW91dDsKKyAgICBvcGFjaXR5OiAwOworICAgIHBvaW50ZXItZXZl
bnRzOiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDIyZWEz
MzIzOTBjNWM4MjJhZDM0MjU5MGE0YTFlMGJmMGM1MTlkMDguLmQ1MmY3OWJmMjdkY2M4NmIzYTU4
ZjQwNzkzMDllMTBiNjZlODlmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTUxMzQsNyArNTEzNCwxMiBAQCBib29sIEludGVybmFsczo6cHJpdmF0ZVBsYXllck11dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKQogfQogI2VuZGlmCiAKLSNlbmRpZgorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW50ZXJuYWxzOjpwbmdEYXRhRm9yVGVzdGluZygpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKICNpZiBFTkFCTEUo
VklERU8pCiBib29sIEludGVybmFsczo6aXNNZWRpYUVsZW1lbnRIaWRkZW4oY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgbWVkaWEpCkBAIC01ODc5LDYgKzU4ODQsMjkgQEAgdm9pZCBJbnRlcm5hbHM6
Omluc3RhbGxJbWFnZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPEltYWdlT3Zlcmxh
eUxpbmU+JiYKICNlbmRpZgogfQogCit2b2lkIEludGVybmFsczo6aW5zdGFsbENyb3BwZWRJbWFn
ZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgUmVmPERPTVJlY3RSZWFkT25seT4mJiBub3JtYWxp
emVkQ3JvcFJlY3QpCit7CisgICAgUmVmUHRyIGh0bWxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxFbGVtZW50PihlbGVtZW50KTsKKyAgICBpZiAoIWh0bWxFbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGltYWdlRGF0YSA9IHBuZ0RhdGFGb3JUZXN0aW5nKCk7CisgICAg
aWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3JvcHBlZEltYWdlT3Zl
cmxheSA9IEltYWdlT3ZlcmxheTo6Q3JvcHBlZEltYWdlOjppbnN0YWxsKCpodG1sRWxlbWVudCwg
aW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS9wbmciX3MsIHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eCgpKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eSgpKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+d2lkdGgoKSksCisgICAgICAgIHN0YXRpY19j
YXN0PGZsb2F0Pihub3JtYWxpemVkQ3JvcFJlY3QtPmhlaWdodCgpKQorICAgIH0pOworfQorCit2
b2lkIEludGVybmFsczo6dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpCit7CisgICAgbV9j
cm9wcGVkSW1hZ2VPdmVybGF5ID0gbnVsbHB0cjsKK30KKwogYm9vbCBJbnRlcm5hbHM6Omhhc0Fj
dGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERBVEFfREVU
RUNUSU9OKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA2NmZmZWI5MzViY2YyZjYxNDY2ZjliY2Y1ZDcwOGJjZDUxZGQzNGMwLi40MGEz
N2QxZmNkMmNhMjMwOTI4N2VmMDgzOWVjNmNmZjE2ZTc4ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFy
a2VyOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU291cmNl
QnVmZmVyOwogY2xhc3MgU3RyaW5nQ2FsbGJhY2s7CiBjbGFzcyBTdHlsZVNoZWV0OwpAQCAtMTUx
LDYgKzE1MiwxMCBAQCBjbGFzcyBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I7CiAjZW5kaWYK
ICNlbmRpZgogCituYW1lc3BhY2UgSW1hZ2VPdmVybGF5IHsKK2NsYXNzIENyb3BwZWRJbWFnZTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKQEAgLTk1MCw2
ICs5NTUsOCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZvaWQgaW5zdGFsbEltYWdlT3Zlcmxh
eShFbGVtZW50JiwgVmVjdG9yPEltYWdlT3ZlcmxheUxpbmU+JiYsIFZlY3RvcjxJbWFnZU92ZXJs
YXlCbG9jaz4mJiA9IHsgfSwgVmVjdG9yPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4mJiA9IHsg
fSk7CisgICAgdm9pZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50JiwgUmVmPERP
TVJlY3RSZWFkT25seT4mJik7CisgICAgdm9pZCB1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5
KCk7CiAgICAgYm9vbCBoYXNBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQoKSBjb25zdDsKIAog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKQEAgLTEyNzUsNiArMTI4Miw4IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIEREU2Nhbm5lclJlc3VsdCAqZmFrZURhdGFEZXRlY3RvclJlc3VsdEZvclRl
c3RpbmcoKTsKICNlbmRpZgogCisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBuZ0Rh
dGFGb3JUZXN0aW5nKCk7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKQEAgLTEzMDgsNiAr
MTMxNyw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbj4gbV90ZXN0aW5nTW9kZVRv
a2VuOwogI2VuZGlmCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U+IG1fY3JvcHBlZEltYWdlT3ZlcmxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZjEyMjIxNjAyMmIzM2Fj
MDdhOTEzZjg3YWMwMjcyOWU2Mzc4ZTM3Li45NjUzNDNkODQ2ZDA1Zjg5ZmFhYzM5MDJiMTA1MWZj
MjY1MDA3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05NzgsNiAr
OTc4LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2Jq
ZWN0OwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQ/IHRleHRSZWNvZ25pdGlvbkNhbmRpZGF0ZTsKICAgICBbQ29uZGl0aW9uYWw9SU1B
R0VfQU5BTFlTSVNdIHVuZGVmaW5lZCByZXF1ZXN0VGV4dFJlY29nbml0aW9uKEVsZW1lbnQgZWxl
bWVudCwgVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgaW5zdGFsbEltYWdl
T3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUxpbmU+IGxpbmVz
LCBvcHRpb25hbCBzZXF1ZW5jZTxJbWFnZU92ZXJsYXlCbG9jaz4gYmxvY2tzID0gW10sIG9wdGlv
bmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4gZGF0YURldGVjdG9ycyA9IFtd
KTsKKyAgICB1bmRlZmluZWQgaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoRWxlbWVudCBlbGVt
ZW50LCBET01SZWN0UmVhZE9ubHkgbm9ybWFsaXplZENyb3BSZWN0KTsKKyAgICB1bmRlZmluZWQg
dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGhhc0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodDsKIAogICAgIGJvb2xlYW4gdXNp
bmdBcHBsZUludGVybmFsU0RLKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4
IDQ5MmYxNmY1YjNiZDE0ZmUxZDAwNmVlNTEyYTg1NTRhZDI2MGUwNjQuLmYzZDA4ZmQwNzA2YzA1
MmRhYzcwY2I3MjI5OWMyNDZhN2E3Njk1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0
ICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbXBvcnQgIlJhbmdlLmgiCisjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgpAQCAtMTk3LDQgKzE5OCwx
MCBAQCBERFNjYW5uZXJSZXN1bHQgKkludGVybmFsczo6ZmFrZURhdGFEZXRlY3RvclJlc3VsdEZv
clRlc3RpbmcoKQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAgICBOU0J1
bmRsZSAqd2ViQ29yZUJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJv
bVN0cmluZyhAIldlYkNvcmVCdW5kbGVGaW5kZXIiKV07CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFt3ZWJDb3JlQnVuZGxlIHBhdGhGb3JSZXNvdXJj
ZTpAIm1pc3NpbmdJbWFnZSIgb2ZUeXBlOkAicG5nIl0pOwogfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNGI4OGE0NWYyM2NkMGY0YzMxYWNlOWI1NTIxNmM0MmIxMzI4N2NkNi4u
NDljNzNkZmIwZTc3ODU4NzgxZGI0MThlY2IzMzNkMWI1MzhmY2Q3YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtMaXZlIFRleHRdIEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2Vz
IGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjg0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSBuZXcgY3Jv
cHBlZCBpbWFnZSBvdmVybGF5IGNvZGUuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJl
Y29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAyLTE2ICBaaXJhbiBTdW4gIDx6c3Vu
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gUmVtb3ZlIGV4dHJhIGZvcm0g
ZGF0YSBtYWRlIGJ5IGltYWdlIHN1Ym1pdCBidXR0b24gd2hlbiAidmFsdWUiIGF0dHJpYnV0ZSBp
cyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNv
Z25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQt
aW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MWJlN2NlNTYxYmZiNjI5NGRkMDRkZjU3
MzJlOWUyODFjYjljMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorCitQQVNTIGNyb3BwZWRJbWFnZSBpcyBub24tbnVsbC4KK1BB
U1MgY3JvcHBlZEltYWdlQmFja2Ryb3AgaXMgbm9uLW51bGwuCitQQVNTIGNyb3BwZWRJbWFnZVJl
Y3QueCBpcyAxMDAKK1BBU1MgY3JvcHBlZEltYWdlUmVjdC55IGlzIDEwMAorUEFTUyBjcm9wcGVk
SW1hZ2VSZWN0LndpZHRoIGlzIDIwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0LmhlaWdodCBpcyAy
MDAKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG51bGwKK1BBU1MgY3JvcHBlZEltYWdlQmFja2Ryb3Ag
aXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24v
aW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MGI2NWMwMGE0MWU3YjM3ZTVjMmMxNzk5Nzg4YzA1ZDNjZWJjNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdl
LW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2dy
ZWVuLTQwMHg0MDAucG5nIj48L2ltZz4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlw
dD4KK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7CisgICAgY29uc3QgaW1hZ2UgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKworICAgIGludGVybmFscy5pbnN0YWxsQ3Jv
cHBlZEltYWdlT3ZlcmxheShpbWFnZSwgbmV3IERPTVJlY3RSZWFkT25seSgwLjI1LCAwLjI1LCAw
LjUsIDAuNSkpOworCisgICAgY3JvcHBlZEltYWdlID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1h
Z2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UiKTsKKyAgICBj
cm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5zaGFkb3dSb290KGltYWdlKS5nZXRFbGVt
ZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWJhY2tkcm9wIik7CisgICAgc2hv
dWxkQmVOb25OdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNyb3Bw
ZWRJbWFnZUJhY2tkcm9wIik7CisKKyAgICBjcm9wcGVkSW1hZ2VSZWN0ID0gY3JvcHBlZEltYWdl
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0
LngiLCAiMTAwIik7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueSIsICIxMDAiKTsK
KyAgICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC53aWR0aCIsICIyMDAiKTsKKyAgICBzaG91
bGRCZSgiY3JvcHBlZEltYWdlUmVjdC5oZWlnaHQiLCAiMjAwIik7CisKKyAgICBpbnRlcm5hbHMu
dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOworCisgICAgY3JvcHBlZEltYWdlID0gaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNy
b3BwZWQtaW1hZ2UiKTsKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5zaGFk
b3dSb290KGltYWdlKS5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdl
LWJhY2tkcm9wIik7CisgICAgc2hvdWxkQmVOdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBzaG91
bGRCZU51bGwoImNyb3BwZWRJbWFnZUJhY2tkcm9wIik7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="479609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452535</attachid>
            <date>2022-02-18 10:11:47 -0800</date>
            <delta_ts>2022-02-18 10:31:51 -0800</delta_ts>
            <desc>Fix watchOS build</desc>
            <filename>bug-236842-20220218101147.patch</filename>
            <type>text/plain</type>
            <size>25313</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMWUzYzYzNDJkMzVkYjNlNzhhYzE1ZWZkNGVhMjQw
Zjk5ZjEyMjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsU3R5bGVTaGVldCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhlIFVBIHN0eWxlIHNo
ZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwgc28gdGhhdCB3ZSBj
YW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2FzZXMgd2hlcmUgdGhl
IGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBUZXh0IGlzIGluamVj
dGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRy
ZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBjb21wbGV0ZWx5IHJl
bW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVnZW5lcmF0ZWQ7IHRo
aXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRoZSBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBMaXZlIFRleHQgZWxl
bWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRv
IGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2ZW4gaG9zdCBlbGVt
ZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAgICAgdGhlIGdpdmVu
IGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5zZXJ0IGFuIGltYWdl
IGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAgICAgY29udGFpbmVy
IHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4gY3JvcCByZWN0IChu
b3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAgVGhpcyBpbnNlcnRl
ZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxlbWVudCB0aGF0IGZh
ZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAgICAgY2FsbGVkLiBG
aW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBhIFJBSUkgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQorICAgICAgICBiYWNr
ZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2JqZWN0IGltbWVkaWF0
ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1hZ2UKKyAgICAgICAg
ZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBjcmVhdGVkIGR1cmlu
ZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OkNy
b3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICogZG9tL0ltYWdlT3Zl
cmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAg
IChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92
ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBj
cm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBh
biBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRo
ZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwog
MjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJk
MWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uYjJhZjliMzNiMmQ4MzQyNTVmNGUxZWM5Y2M5NDRkMjU1NDE0
YjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDggKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAKKyNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKKyNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtOTYsNiArMTAwLDE4IEBAIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkKIAogI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGlt
YWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRlbnRpZmllcigiaW1hZ2Utb3Zl
cmxheS1jcm9wcGVkLWltYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1h
Z2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImlt
YWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1iYWNrZHJvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogYm9vbCBoYXNPdmVy
bGF5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8gc2hhZG93Um9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpOwpAQCAtMjIyLDYgKzIzOCwxNCBAQCBJbnRSZWN0IGNvbnRh
aW5lclJlY3QoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3QoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikucmVwbGFjZWRDb250ZW50UmVjdCgp
KTsKIH0KIAorc3RhdGljIHZvaWQgaW5zdGFsbFN0eWxlU2hlZXQoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VPdmVy
bGF5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxl
U2hlZXQpKSk7CisgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1M
TmFtZXM6OnN0eWxlVGFnLCBzaGFkb3dSb290LmRvY3VtZW50KCksIGZhbHNlKTsKKyAgICBzdHls
ZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoV1RGTW92ZShzdHlsZSkpOworfQorCiBzdHJ1Y3QgTGluZUVsZW1lbnRzIHsKICAgICBSZWY8
SFRNTERpdkVsZW1lbnQ+IGxpbmU7CiAgICAgVmVjdG9yPFJlZjxIVE1MRWxlbWVudD4+IGNoaWxk
cmVuOwpAQCAtMjgwLDYgKzMwNCw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSBmYWxzZTsKICAg
ICBpZiAoZWxlbWVudHMucm9vdCkgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkRWxlbWVudCA6
IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50PigqZWxlbWVudHMucm9vdCkpIHsKICAgICAg
ICAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0NsYXNzKCkpCkBAIC0zMDMsNyArMzI4LDcgQEAg
c3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgICAgIGVsZW1lbnRzLmxpbmVzLmFwcGVu
ZCh7IGNoaWxkRWxlbWVudCwgV1RGTW92ZShsaW5lQ2hpbGRyZW4pLCBjaGlsZHJlbk9mVHlwZTxI
VE1MQlJFbGVtZW50PihjaGlsZEVsZW1lbnQpLmZpcnN0KCkgfSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSAoWyZdIHsKKyAgICAgICAgY2FuVXNl
RXhpc3RpbmdFbGVtZW50cyA9IChbJl0gewogICAgICAgICAgICAgaWYgKHJlc3VsdC5kYXRhRGV0
ZWN0b3JzLnNpemUoKSAhPSBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLnNpemUoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0MCw4ICszNjUsOCBAQCBzdGF0aWMgRWxlbWVu
dHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0
aW9uUmVzdWx0JgogICAgICAgICB9KSgpOwogCiAgICAgICAgIGlmICghY2FuVXNlRXhpc3RpbmdF
bGVtZW50cykgewotICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+cmVtb3ZlKCk7Ci0gICAgICAg
ICAgICBlbGVtZW50cyA9IHsgfTsKKyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QtPnJlbW92ZUNo
aWxkcmVuKCk7CisgICAgICAgICAgICBlbGVtZW50cyA9IHsgZWxlbWVudHMucm9vdCB9OwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0zNTAsMjMgKzM3NSwyNSBAQCBzdGF0aWMgRWxlbWVudHMgdXBk
YXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVz
dWx0JgogCiAgICAgUmVmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwogICAgIFJlZiBz
aGFkb3dSb290ID0gZWxlbWVudC5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgaWYg
KCFlbGVtZW50cy5yb290KSB7Ci0gICAgICAgIGF1dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwotICAgICAgICByb290Q29udGFpbmVyLT5z
ZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAg
cm9vdENvbnRhaW5lci0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKLSAgICAgICAgaWYgKGRvY3VtZW50
LT5pc0ltYWdlRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJvb3RDb250YWluZXItPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZVRleHQp
OworICAgIGlmICghY2FuVXNlRXhpc3RpbmdFbGVtZW50cykgeworICAgICAgICBpZiAoIWVsZW1l
bnRzLnJvb3QpIHsKKyAgICAgICAgICAgIGF1dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+
c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSk7CisgICAgICAg
ICAgICByb290Q29udGFpbmVyLT5zZXRUcmFuc2xhdGUoZmFsc2UpOworICAgICAgICAgICAgaWYg
KGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICByb290Q29udGFp
bmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwg
Q1NTVmFsdWVUZXh0KTsKIAotICAgICAgICBpZiAobWVkaWFDb250cm9sc0NvbnRhaW5lcikKLSAg
ICAgICAgICAgIG1lZGlhQ29udHJvbHNDb250YWluZXItPmFwcGVuZENoaWxkKHJvb3RDb250YWlu
ZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChy
b290Q29udGFpbmVyKTsKLSAgICAgICAgZWxlbWVudHMucm9vdCA9IHJvb3RDb250YWluZXIuY29w
eVJlZigpOworICAgICAgICAgICAgaWYgKG1lZGlhQ29udHJvbHNDb250YWluZXIpCisgICAgICAg
ICAgICAgICAgbWVkaWFDb250cm9sc0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5l
cik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5k
Q2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5yb290ID0gcm9vdENv
bnRhaW5lci5jb3B5UmVmKCk7CisgICAgICAgIH0KICAgICAgICAgZWxlbWVudHMubGluZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHQubGluZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChh
dXRvJiBsaW5lIDogcmVzdWx0LmxpbmVzKSB7CiAgICAgICAgICAgICBhdXRvIGxpbmVDb250YWlu
ZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICAgICAgICAg
IGxpbmVDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoKSk7
Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChsaW5lQ29udGFpbmVyKTsK
KyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxkKGxpbmVDb250YWluZXIpOwog
ICAgICAgICAgICAgTGluZUVsZW1lbnRzIGxpbmVFbGVtZW50cyB7IGxpbmVDb250YWluZXIsIHsg
fSwgeyB9IH07CiAgICAgICAgICAgICBsaW5lRWxlbWVudHMuY2hpbGRyZW4ucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShsaW5lLmNoaWxkcmVuLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8IGxpbmUuY2hpbGRyZW4uc2l6ZSgpOyArK2No
aWxkSW5kZXgpIHsKQEAgLTM5MSw3ICs0MTgsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3Vi
dHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Jgog
ICAgICAgICBmb3IgKGF1dG8mIGRhdGFEZXRlY3RvciA6IHJlc3VsdC5kYXRhRGV0ZWN0b3JzKSB7
CiAgICAgICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRhaW5lciA9IERhdGFEZXRlY3Rpb246
OmNyZWF0ZUVsZW1lbnRGb3JJbWFnZU92ZXJsYXkoZG9jdW1lbnQuZ2V0KCksIGRhdGFEZXRlY3Rv
cik7CiAgICAgICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChp
bWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcygpKTsKLSAgICAgICAgICAgIHJvb3RDb250YWlu
ZXItPmFwcGVuZENoaWxkKGRhdGFEZXRlY3RvckNvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVt
ZW50cy5yb290LT5hcHBlbmRDaGlsZChkYXRhRGV0ZWN0b3JDb250YWluZXIpOwogICAgICAgICAg
ICAgZWxlbWVudHMuZGF0YURldGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShkYXRhRGV0
ZWN0b3JDb250YWluZXIpKTsKICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVD
VElPTikKQEAgLTQwMCw3ICs0MjcsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShI
VE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAg
ICBmb3IgKGF1dG8mIGJsb2NrIDogcmVzdWx0LmJsb2NrcykgewogICAgICAgICAgICAgYXV0byBi
bG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwog
ICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlC
bG9ja0NsYXNzKCkpOwotICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYmxv
Y2tDb250YWluZXIpOworICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+YXBwZW5kQ2hpbGQoYmxv
Y2tDb250YWluZXIpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgbWFrZVN0cmluZygnXG4nLCBibG9jay50ZXh0KSkp
OwogICAgICAgICAgICAgZWxlbWVudHMuYmxvY2tzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGJs
b2NrQ29udGFpbmVyKSk7CiAgICAgICAgIH0KQEAgLTQxMSwxMiArNDM4LDggQEAgc3RhdGljIEVs
ZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNv
Z25pdGlvblJlc3VsdCYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghaGFkRXhpc3RpbmdF
bGVtZW50cykgewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1h
Z2VPdmVybGF5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2Vu
dFN0eWxlU2hlZXQpKSk7Ci0gICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZG9jdW1lbnQuZ2V0KCksIGZhbHNlKTsKLSAgICAg
ICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKLSAgICAgICAgc2hhZG93Um9v
dC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOwotICAgIH0KKyAgICBpZiAoIWhhZEV4aXN0
aW5nRWxlbWVudHMpCisgICAgICAgIGluc3RhbGxTdHlsZVNoZWV0KHNoYWRvd1Jvb3QuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIGVsZW1lbnRzOwogfQpAQCAtNjQ5LDUgKzY3Miw4OCBAQCB2b2lkIHVw
ZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFRleHRSZWNvZ25pdGlvbgogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCitz
dGQ6OnVuaXF1ZV9wdHI8Q3JvcHBlZEltYWdlPiBDcm9wcGVkSW1hZ2U6Omluc3RhbGwoSFRNTEVs
ZW1lbnQmIGhvc3QsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VEYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBGbG9hdFJlY3Qgbm9ybWFsaXplZFJlY3QpCit7CisgICAgUmVmIGRvY3VtZW50
ID0gaG9zdC5kb2N1bWVudCgpOworICAgIFJlZiBzaGFkb3dSb290ID0gaG9zdC5lbnN1cmVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7CisgICAgUmVmUHRyIGltYWdlT3ZlcmxheVJvb3QgPSBkeW5hbWlj
RG93bmNhc3Q8SFRNTERpdkVsZW1lbnQ+KHN0YXRpY19jYXN0PFRyZWVTY29wZSY+KHNoYWRvd1Jv
b3QuZ2V0KCkpLmdldEVsZW1lbnRCeUlkKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkp
KTsKKyAgICBpZiAoIWltYWdlT3ZlcmxheVJvb3QpIHsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9v
dCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBpbWFn
ZU92ZXJsYXlSb290LT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmll
cigpKTsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdC0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKKyAg
ICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoKmltYWdlT3ZlcmxheVJvb3QpOworICAgICAg
ICBpbnN0YWxsU3R5bGVTaGVldChzaGFkb3dSb290LmdldCgpKTsKKyAgICB9CisKKyAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGhvc3QucmVuZGVy
ZXIoKSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXRIYXNJbWFnZU92ZXJsYXkoKTsKKworICAgIGF1
dG8gY29udGFpbmVyUmVjdCA9IEltYWdlT3ZlcmxheTo6Y29udGFpbmVyUmVjdChob3N0KTsKKyAg
ICBhdXRvIGNyb3BSZWN0ID0gbm9ybWFsaXplZFJlY3Q7CisgICAgY3JvcFJlY3Quc2NhbGUoY29u
dGFpbmVyUmVjdC53aWR0aCgpLCBjb250YWluZXJSZWN0LmhlaWdodCgpKTsKKyAgICBjcm9wUmVj
dC5tb3ZlKGNvbnRhaW5lclJlY3QueCgpLCBjb250YWluZXJSZWN0LnkoKSk7CisKKyAgICBhdXRv
IGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5n
ZXQoKSk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElkQXR0cmlidXRlKGltYWdlT3Zl
cmxheUNyb3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRpZmllcigpKTsKKyAgICBpbWFnZU92ZXJsYXlS
b290LT5hcHBlbmRDaGlsZChjcm9wcGVkSW1hZ2VCYWNrZHJvcC5nZXQoKSk7CisKKyAgICBhdXRv
IGNyb3BwZWRJbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7
CisgICAgYXV0byBjcm9wcGVkSW1hZ2VVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1
bWVudC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBpbWFnZURhdGEtPmV4dHJh
Y3REYXRhKCksIG1pbWVUeXBlKSk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJZEF0dHJpYnV0ZShp
bWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGNyb3BwZWRJbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIGNy
b3BwZWRJbWFnZVVSTCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5TGVmdCwgY3JvcFJlY3QueCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAg
ICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGNy
b3BSZWN0LnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGNyb3BSZWN0LndpZHRoKCksIENT
U1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgY3JvcFJlY3QuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpD
U1NfUFgpOworICAgIGltYWdlT3ZlcmxheVJvb3QtPmFwcGVuZENoaWxkKGNyb3BwZWRJbWFnZS5n
ZXQoKSk7CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlPcGFjaXR5LCAwLjUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKworICAg
IHJldHVybiBtYWtlVW5pcXVlPENyb3BwZWRJbWFnZT4oZG9jdW1lbnQuZ2V0KCksIGhvc3QsIGNy
b3BwZWRJbWFnZUJhY2tkcm9wLmdldCgpLCBjcm9wcGVkSW1hZ2VVUkwpOworfQorCitDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxFbGVtZW50JiBob3N0
LCBIVE1MRWxlbWVudCYgY3JvcHBlZEltYWdlQmFja2Ryb3AsIGNvbnN0IFN0cmluZyYgaW1hZ2VV
UkwpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ob3N0KGhvc3QpCisgICAg
LCBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wKGNyb3BwZWRJbWFnZUJhY2tkcm9wKQorICAgICwgbV9p
bWFnZVVSTChpbWFnZVVSTCkKK3sKKyAgICBzZXRWaXNpYmlsaXR5KHRydWUpOworfQorCitDcm9w
cGVkSW1hZ2U6On5Dcm9wcGVkSW1hZ2UoKQoreworICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBt
X2RvY3VtZW50LmdldCgpKQorICAgICAgICBET01VUkw6OnJldm9rZU9iamVjdFVSTCgqZG9jdW1l
bnQsIG1faW1hZ2VVUkwpOworCisgICAgUmVmUHRyIGhvc3QgPSBtX2hvc3QuZ2V0KCk7CisgICAg
aWYgKCFob3N0KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgc2hhZG93Um9vdCA9IGhv
c3QtPnNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QgfHwgc2hhZG93Um9vdC0+bW9k
ZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIHRyZWVTY29wZSA9IHN0YXRpY19jYXN0PFRyZWVTY29wZSY+KCpzaGFkb3dSb290KTsK
KyAgICBpZiAoUmVmUHRyIGNyb3BwZWRJbWFnZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChp
bWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlmaWVyKCkpKQorICAgICAgICBjcm9wcGVkSW1h
Z2UtPnJlbW92ZSgpOworCisgICAgaWYgKFJlZlB0ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IHRy
ZWVTY29wZS5nZXRFbGVtZW50QnlJZChpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElk
ZW50aWZpZXIoKSkpCisgICAgICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wLT5yZW1vdmUoKTsKK30K
Kwordm9pZCBDcm9wcGVkSW1hZ2U6OnNldFZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQoreworICAg
IFJlZlB0ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IG1fY3JvcHBlZEltYWdlQmFja2Ryb3AuZ2V0
KCk7CisgICAgaWYgKCFjcm9wcGVkSW1hZ2VCYWNrZHJvcCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCB2aXNpYmxlID8gMC41IDogMCwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbWFnZU92ZXJsYXkKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFn
ZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaAppbmRleCAyZjgx
NTRiYTM4NWJjMDUyMzE5YjNhYjcyNjUwNDBhYmIwNjQ4OWI2Li4zNGQ1YmI5NjU2N2I4ODY1M2U0
MzNlMzk4NGFjNTUyZmE2ZDM1M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1h
Z2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCkBAIC0y
NSwxMiArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxF
bGVtZW50OwogY2xhc3MgTm9kZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CiAKIHN0cnVjdCBDaGFyYWN0ZXJSYW5nZTsKQEAgLTU1LDYgKzU5LDI0IEBAIGVu
dW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1M
RWxlbWVudCYsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYsIENhY2hlVGV4dFJlY29nbml0
aW9uUmVzdWx0cyA9IENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0czo6WWVzKTsKICNlbmRpZgog
CitjbGFzcyBDcm9wcGVkSW1hZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3BwZWRJbWFnZSk7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcm9wcGVkSW1hZ2U+IGluc3RhbGwoSFRN
TEVsZW1lbnQmLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBGbG9hdFJlY3Qp
OworCisgICAgQ3JvcHBlZEltYWdlKERvY3VtZW50JiwgSFRNTEVsZW1lbnQmLCBIVE1MRWxlbWVu
dCYsIGNvbnN0IFN0cmluZyYgaW1hZ2VVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Dcm9wcGVk
SW1hZ2UoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlzaWJpbGl0eShib29sKTsK
KworcHJpdmF0ZToKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFdlYWtQ
dHI8SFRNTEVsZW1lbnQ+IG1faG9zdDsKKyAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBtX2Nyb3Bw
ZWRJbWFnZUJhY2tkcm9wOworICAgIFN0cmluZyBtX2ltYWdlVVJMOworfTsKKwogfSAvLyBuYW1l
c3BhY2UgSW1hZ2VPdmVybGF5CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCmluZGV4IGQyOTY0YzE3MTQ0NTk1MTVi
YzFhZDQ4NDY4MzIzYjQ0OTllYjZkMDcuLjJlNzZkNmMyZGQyZTk1MmY1ODkyMGEzMWZhN2FlODAx
OTFkOWVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3Zl
cmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNz
cwpAQCAtNzEsMyArNzEsMTggQEAgZGl2LmltYWdlLW92ZXJsYXktZGF0YS1kZXRlY3Rvci1yZXN1
bHQgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBu
b25lOwogfQorCitpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlIHsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKK2RpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEw
MCU7CisgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0OworICAgIG9wYWNp
dHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggMjJlYTMzMjM5MGM1YzgyMmFkMzQyNTkwYTRhMWUwYmYwYzUxOWQw
OC4uZDUyZjc5YmYyN2RjYzg2YjNhNThmNDA3OTMwOWUxMGI2NmU4OWZhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTEzNCw3ICs1MTM0LDEyIEBAIGJvb2wgSW50ZXJu
YWxzOjpwcml2YXRlUGxheWVyTXV0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpCiB9CiAjZW5k
aWYKIAotI2VuZGlmCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JU
ZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworI2VuZGlmIC8vICFQTEFURk9S
TShDT0NPQSkKIAogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxl
bWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYSkKQEAgLTU4NzksNiArNTg4
NCwyOSBAQCB2b2lkIEludGVybmFsczo6aW5zdGFsbEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJgogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJu
YWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVtZW50LCBSZWY8RE9N
UmVjdFJlYWRPbmx5PiYmIG5vcm1hbGl6ZWRDcm9wUmVjdCkKK3sKKyAgICBSZWZQdHIgaHRtbEVs
ZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpOworICAgIGlmICgh
aHRtbEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2VEYXRhID0gcG5n
RGF0YUZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jcm9wcGVkSW1hZ2VPdmVybGF5ID0gSW1hZ2VPdmVybGF5OjpDcm9wcGVkSW1hZ2U6
Omluc3RhbGwoKmh0bWxFbGVtZW50LCBpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgImltYWdl
L3BuZyJfcywgeworICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0
LT54KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT55
KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT53aWR0
aCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+aGVp
Z2h0KCkpCisgICAgfSk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp1bmluc3RhbGxDcm9wcGVkSW1h
Z2VPdmVybGF5KCkKK3sKKyAgICBtX2Nyb3BwZWRJbWFnZU92ZXJsYXkgPSBudWxscHRyOworfQor
CiBib29sIEludGVybmFsczo6aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgY29uc3QK
IHsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY2ZmZlYjkzNWJjZjJmNjE0NjZmOWJj
ZjVkNzA4YmNkNTFkZDM0YzAuLjQwYTM3ZDFmY2QyY2EyMzA5Mjg3ZWYwODM5ZWM2Y2ZmMTZlNzhk
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNs
YXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3Mg
U2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBTdHJpbmdDYWxsYmFjazsKIGNs
YXNzIFN0eWxlU2hlZXQ7CkBAIC0xNTEsNiArMTUyLDEwIEBAIGNsYXNzIE1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcjsKICNlbmRpZgogI2VuZGlmCiAKK25hbWVzcGFjZSBJbWFnZU92ZXJsYXkg
eworY2xhc3MgQ3JvcHBlZEltYWdlOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBj
bGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOwpAQCAtOTUwLDYgKzk1NSw4IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dm9pZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQmLCBWZWN0b3I8SW1hZ2VPdmVybGF5TGlu
ZT4mJiwgVmVjdG9yPEltYWdlT3ZlcmxheUJsb2NrPiYmID0geyB9LCBWZWN0b3I8SW1hZ2VPdmVy
bGF5RGF0YURldGVjdG9yPiYmID0geyB9KTsKKyAgICB2b2lkIGluc3RhbGxDcm9wcGVkSW1hZ2VP
dmVybGF5KEVsZW1lbnQmLCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYmKTsKKyAgICB2b2lkIHVuaW5z
dGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoKTsKICAgICBib29sIGhhc0FjdGl2ZURhdGFEZXRlY3Rv
ckhpZ2hsaWdodCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpAQCAtMTI3
NSw2ICsxMjgyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRERTY2FubmVyUmVzdWx0ICpmYWtl
RGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YUZvclRlc3RpbmcoKTsKKwogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCiAgICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvU2FtcGxlTWV0YWRh
dGEpIGZpbmFsOwpAQCAtMTMwOCw2ICsxMzE3LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9k
ZVRva2VuPiBtX3Rlc3RpbmdNb2RlVG9rZW47CiAjZW5kaWYKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZU92ZXJsYXk6OkNyb3BwZWRJbWFnZT4gbV9jcm9wcGVkSW1hZ2VPdmVybGF5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IGJmMTIyMjE2MDIyYjMzYWMwN2E5MTNmODdhYzAyNzI5ZTYzNzhlMzcuLjk2NTM0M2Q4
NDZkMDVmODlmYWFjMzkwMmIxMDUxZmMyNjUwMDc5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTk3OCw2ICs5NzgsOCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3Ig
RmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgW0NvbmRpdGlvbmFsPUlNQUdFX0FOQUxZ
U0lTXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGV4dFJlY29nbml0aW9uQ2FuZGlkYXRl
OwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gdW5kZWZpbmVkIHJlcXVlc3RUZXh0
UmVjb2duaXRpb24oRWxlbWVudCBlbGVtZW50LCBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAg
IHVuZGVmaW5lZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQgZWxlbWVudCwgc2VxdWVuY2U8
SW1hZ2VPdmVybGF5TGluZT4gbGluZXMsIG9wdGlvbmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUJs
b2NrPiBibG9ja3MgPSBbXSwgb3B0aW9uYWwgc2VxdWVuY2U8SW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yPiBkYXRhRGV0ZWN0b3JzID0gW10pOworICAgIHVuZGVmaW5lZCBpbnN0YWxsQ3JvcHBlZElt
YWdlT3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIERPTVJlY3RSZWFkT25seSBub3JtYWxpemVkQ3Jv
cFJlY3QpOworICAgIHVuZGVmaW5lZCB1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxp
Z2h0OwogCiAgICAgYm9vbGVhbiB1c2luZ0FwcGxlSW50ZXJuYWxTREsoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMubW0KaW5kZXggNDkyZjE2ZjViM2JkMTRmZTFkMDA2ZWU1MTJhODU1NGFk
MjYwZTA2NC4uZjNkMDhmZDA3MDZjMDUyZGFjNzBjYjcyMjk5YzI0NmE3YTc2OTU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UmFuZ2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU2ltcGxlUmFuZ2Uu
aCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxh
eWVyLmg+CkBAIC0xOTcsNCArMTk4LDEwIEBAIEREU2Nhbm5lclJlc3VsdCAqSW50ZXJuYWxzOjpm
YWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpCiAKICNlbmRpZiAvLyBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCiAKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEludGVybmFsczo6cG5nRGF0YUZv
clRlc3RpbmcoKQoreworICAgIE5TQnVuZGxlICp3ZWJDb3JlQnVuZGxlID0gW05TQnVuZGxlIGJ1
bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV2ViQ29yZUJ1bmRsZUZpbmRlciIpXTsK
KyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoW3dlYkNv
cmVCdW5kbGUgcGF0aEZvclJlc291cmNlOkAibWlzc2luZ0ltYWdlIiBvZlR5cGU6QCJwbmciXSk7
CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Yjg4YTQ1ZjIzY2QwZjRjMzFh
Y2U5YjU1MjE2YzQyYjEzMjg3Y2Q2Li40OWM3M2RmYjBlNzc4NTg3ODFkYjQxOGVjYjMzM2QxYjUz
OGZjZDdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTggIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0xpdmUgVGV4dF0gQWRkIGEgbWVj
aGFuaXNtIHRvIGluamVjdCBpbWFnZXMgaW50byBpbWFnZSBvdmVybGF5cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhh
dCBleGVyY2lzZXMgdGhlIG5ldyBjcm9wcGVkIGltYWdlIG92ZXJsYXkgY29kZS4KKworICAgICAg
ICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWlt
YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvdGV4dC1yZWNv
Z25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMjIt
MDItMTYgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSW5wdXRFbGVt
ZW50XSBSZW1vdmUgZXh0cmEgZm9ybSBkYXRhIG1hZGUgYnkgaW1hZ2Ugc3VibWl0IGJ1dHRvbiB3
aGVuICJ2YWx1ZSIgYXR0cmlidXRlIGlzIHByZXNlbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFn
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9u
L2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYx
YmU3Y2U1NjFiZmI2Mjk0ZGQwNGRmNTczMmU5ZTI4MWNiOWMzMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgY3JvcHBl
ZEltYWdlIGlzIG5vbi1udWxsLgorUEFTUyBjcm9wcGVkSW1hZ2VCYWNrZHJvcCBpcyBub24tbnVs
bC4KK1BBU1MgY3JvcHBlZEltYWdlUmVjdC54IGlzIDEwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0
LnkgaXMgMTAwCitQQVNTIGNyb3BwZWRJbWFnZVJlY3Qud2lkdGggaXMgMjAwCitQQVNTIGNyb3Bw
ZWRJbWFnZVJlY3QuaGVpZ2h0IGlzIDIwMAorUEFTUyBjcm9wcGVkSW1hZ2UgaXMgbnVsbAorUEFT
UyBjcm9wcGVkSW1hZ2VCYWNrZHJvcCBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwYjY1YzAwYTQxZTdiMzdlNWMyYzE3OTk3
ODhjMDVkM2NlYmM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwKQEAgLTAs
MCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHks
IGh0bWwgeworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxp
bWcgc3JjPSIuLi9yZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciPjwvaW1nPgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+
IHsKKyAgICBjb25zdCBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworCisg
ICAgaW50ZXJuYWxzLmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KGltYWdlLCBuZXcgRE9NUmVj
dFJlYWRPbmx5KDAuMjUsIDAuMjUsIDAuNSwgMC41KSk7CisKKyAgICBjcm9wcGVkSW1hZ2UgPSBp
bnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLW92ZXJsYXkt
Y3JvcHBlZC1pbWFnZSIpOworICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1h
Z2UtYmFja2Ryb3AiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNyb3BwZWRJbWFnZSIpOworICAg
IHNob3VsZEJlTm9uTnVsbCgiY3JvcHBlZEltYWdlQmFja2Ryb3AiKTsKKworICAgIGNyb3BwZWRJ
bWFnZVJlY3QgPSBjcm9wcGVkSW1hZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hv
dWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueCIsICIxMDAiKTsKKyAgICBzaG91bGRCZSgiY3JvcHBl
ZEltYWdlUmVjdC55IiwgIjEwMCIpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0Lndp
ZHRoIiwgIjIwMCIpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0LmhlaWdodCIsICIy
MDAiKTsKKworICAgIGludGVybmFscy51bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CisK
KyAgICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkuZ2V0RWxlbWVu
dEJ5SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIpOworICAgIGNyb3BwZWRJbWFnZUJh
Y2tkcm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFn
ZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiKTsKKyAgICBzaG91bGRCZU51bGwoImNy
b3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTnVsbCgiY3JvcHBlZEltYWdlQmFja2Ryb3AiKTsK
K30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>
<flag name="commit-queue"
          id="479610"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452536</attachid>
            <date>2022-02-18 10:18:48 -0800</date>
            <delta_ts>2022-02-18 10:44:29 -0800</delta_ts>
            <desc>Fix Big Sur build</desc>
            <filename>bug-236842-20220218101847.patch</filename>
            <type>text/plain</type>
            <size>25226</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMWUzYzYzNDJkMzVkYjNlNzhhYzE1ZWZkNGVhMjQw
Zjk5ZjEyMjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsU3R5bGVTaGVldCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhlIFVBIHN0eWxlIHNo
ZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwgc28gdGhhdCB3ZSBj
YW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2FzZXMgd2hlcmUgdGhl
IGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBUZXh0IGlzIGluamVj
dGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRy
ZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBjb21wbGV0ZWx5IHJl
bW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVnZW5lcmF0ZWQ7IHRo
aXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRoZSBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBMaXZlIFRleHQgZWxl
bWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRv
IGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2ZW4gaG9zdCBlbGVt
ZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAgICAgdGhlIGdpdmVu
IGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5zZXJ0IGFuIGltYWdl
IGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAgICAgY29udGFpbmVy
IHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4gY3JvcCByZWN0IChu
b3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAgVGhpcyBpbnNlcnRl
ZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxlbWVudCB0aGF0IGZh
ZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAgICAgY2FsbGVkLiBG
aW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBhIFJBSUkgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQorICAgICAgICBiYWNr
ZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2JqZWN0IGltbWVkaWF0
ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1hZ2UKKyAgICAgICAg
ZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBjcmVhdGVkIGR1cmlu
ZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OkNy
b3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICogZG9tL0ltYWdlT3Zl
cmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAg
IChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92
ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBj
cm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBh
biBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRo
ZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwog
MjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJk
MWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uMDA0ZWRkY2E3Zjk2MmI3ODExZGJkYjc5Y2EwMmRjZjMwN2Qw
NThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDggKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAKKyNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKKyNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtOTYsNiArMTAwLDE4IEBAIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkKIAogI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGlt
YWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRlbnRpZmllcigiaW1hZ2Utb3Zl
cmxheS1jcm9wcGVkLWltYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1h
Z2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImlt
YWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1iYWNrZHJvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogYm9vbCBoYXNPdmVy
bGF5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8gc2hhZG93Um9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpOwpAQCAtMjA4LDYgKzIyNCwxNCBAQCB2b2lkIHJlbW92ZU92
ZXJsYXlTb29uSWZOZWVkZWQoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfSk7CiB9CiAKK3N0
YXRpYyB2b2lkIGluc3RhbGxTdHlsZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0
eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwor
ICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHls
ZVRhZywgc2hhZG93Um9vdC5kb2N1bWVudCgpLCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFRleHRD
b250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKFdURk1vdmUo
c3R5bGUpKTsKK30KKwogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAogSW50UmVjdCBjb250
YWluZXJSZWN0KEhUTUxFbGVtZW50JiBlbGVtZW50KQpAQCAtMjgwLDYgKzMwNCw3IEBAIHN0YXRp
YyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0
UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGNhblVzZUV4
aXN0aW5nRWxlbWVudHMgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudHMucm9vdCkgewogICAgICAg
ICBmb3IgKGF1dG8mIGNoaWxkRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50
PigqZWxlbWVudHMucm9vdCkpIHsKICAgICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0Ns
YXNzKCkpCkBAIC0zMDMsNyArMzI4LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUo
SFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAg
ICAgICAgIGVsZW1lbnRzLmxpbmVzLmFwcGVuZCh7IGNoaWxkRWxlbWVudCwgV1RGTW92ZShsaW5l
Q2hpbGRyZW4pLCBjaGlsZHJlbk9mVHlwZTxIVE1MQlJFbGVtZW50PihjaGlsZEVsZW1lbnQpLmZp
cnN0KCkgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVu
dHMgPSAoWyZdIHsKKyAgICAgICAgY2FuVXNlRXhpc3RpbmdFbGVtZW50cyA9IChbJl0gewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5kYXRhRGV0ZWN0b3JzLnNpemUoKSAhPSBlbGVtZW50cy5kYXRh
RGV0ZWN0b3JzLnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0
MCw4ICszNjUsOCBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICB9KSgpOwogCiAg
ICAgICAgIGlmICghY2FuVXNlRXhpc3RpbmdFbGVtZW50cykgewotICAgICAgICAgICAgZWxlbWVu
dHMucm9vdC0+cmVtb3ZlKCk7Ci0gICAgICAgICAgICBlbGVtZW50cyA9IHsgfTsKKyAgICAgICAg
ICAgIGVsZW1lbnRzLnJvb3QtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICBlbGVtZW50
cyA9IHsgZWxlbWVudHMucm9vdCB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNTAsMjMgKzM3
NSwyNSBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogCiAgICAgUmVmIGRvY3VtZW50ID0gZWxl
bWVudC5kb2N1bWVudCgpOwogICAgIFJlZiBzaGFkb3dSb290ID0gZWxlbWVudC5lbnN1cmVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7Ci0gICAgaWYgKCFlbGVtZW50cy5yb290KSB7Ci0gICAgICAgIGF1
dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkp
OwotICAgICAgICByb290Q29udGFpbmVyLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVt
ZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0VHJhbnNsYXRlKGZh
bHNlKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIHJvb3RDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRVc2VyU2VsZWN0LCBDU1NWYWx1ZVRleHQpOworICAgIGlmICghY2FuVXNlRXhpc3RpbmdFbGVt
ZW50cykgeworICAgICAgICBpZiAoIWVsZW1lbnRzLnJvb3QpIHsKKyAgICAgICAgICAgIGF1dG8g
cm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwor
ICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5RWxl
bWVudElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRUcmFuc2xh
dGUoZmFsc2UpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkK
KyAgICAgICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVUZXh0KTsKIAotICAgICAgICBpZiAo
bWVkaWFDb250cm9sc0NvbnRhaW5lcikKLSAgICAgICAgICAgIG1lZGlhQ29udHJvbHNDb250YWlu
ZXItPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChyb290Q29udGFpbmVyKTsKLSAgICAgICAgZWxlbWVu
dHMucm9vdCA9IHJvb3RDb250YWluZXIuY29weVJlZigpOworICAgICAgICAgICAgaWYgKG1lZGlh
Q29udHJvbHNDb250YWluZXIpCisgICAgICAgICAgICAgICAgbWVkaWFDb250cm9sc0NvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAg
ICAgICBlbGVtZW50cy5yb290ID0gcm9vdENvbnRhaW5lci5jb3B5UmVmKCk7CisgICAgICAgIH0K
ICAgICAgICAgZWxlbWVudHMubGluZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHQubGlu
ZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogcmVzdWx0LmxpbmVzKSB7CiAg
ICAgICAgICAgICBhdXRvIGxpbmVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LmdldCgpKTsKICAgICAgICAgICAgIGxpbmVDb250YWluZXItPmNsYXNzTGlzdCgpLmFk
ZChpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoKSk7Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5h
cHBlbmRDaGlsZChsaW5lQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QtPmFw
cGVuZENoaWxkKGxpbmVDb250YWluZXIpOwogICAgICAgICAgICAgTGluZUVsZW1lbnRzIGxpbmVF
bGVtZW50cyB7IGxpbmVDb250YWluZXIsIHsgfSwgeyB9IH07CiAgICAgICAgICAgICBsaW5lRWxl
bWVudHMuY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5lLmNoaWxkcmVuLnNpemUo
KSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8
IGxpbmUuY2hpbGRyZW4uc2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsKQEAgLTM5MSw3ICs0MTgsNyBA
QCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1dG8mIGRhdGFEZXRlY3Rv
ciA6IHJlc3VsdC5kYXRhRGV0ZWN0b3JzKSB7CiAgICAgICAgICAgICBhdXRvIGRhdGFEZXRlY3Rv
ckNvbnRhaW5lciA9IERhdGFEZXRlY3Rpb246OmNyZWF0ZUVsZW1lbnRGb3JJbWFnZU92ZXJsYXko
ZG9jdW1lbnQuZ2V0KCksIGRhdGFEZXRlY3Rvcik7CiAgICAgICAgICAgICBkYXRhRGV0ZWN0b3JD
b250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcygp
KTsKLSAgICAgICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGRhdGFEZXRlY3RvckNv
bnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5yb290LT5hcHBlbmRDaGlsZChkYXRhRGV0
ZWN0b3JDb250YWluZXIpOwogICAgICAgICAgICAgZWxlbWVudHMuZGF0YURldGVjdG9ycy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShkYXRhRGV0ZWN0b3JDb250YWluZXIpKTsKICAgICAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTQwMCw3ICs0MjcsNyBAQCBzdGF0
aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4
dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDogcmVzdWx0LmJs
b2NrcykgewogICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNs
YXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwotICAgICAgICAgICAgcm9v
dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOworICAgICAgICAgICAgZWxl
bWVudHMucm9vdC0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOwogICAgICAgICAgICAgYmxv
Y2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgbWFr
ZVN0cmluZygnXG4nLCBibG9jay50ZXh0KSkpOwogICAgICAgICAgICAgZWxlbWVudHMuYmxvY2tz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGJsb2NrQ29udGFpbmVyKSk7CiAgICAgICAgIH0KQEAg
LTQxMSwxMiArNDM4LDggQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmICghaGFkRXhpc3RpbmdFbGVtZW50cykgewotICAgICAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1w
bDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVTaGVldCwg
c2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKSk7Ci0gICAgICAgIGF1dG8g
c3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZG9j
dW1lbnQuZ2V0KCksIGZhbHNlKTsKLSAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRv
d1N0eWxlKTsKLSAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkp
OwotICAgIH0KKyAgICBpZiAoIWhhZEV4aXN0aW5nRWxlbWVudHMpCisgICAgICAgIGluc3RhbGxT
dHlsZVNoZWV0KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgcmV0dXJuIGVsZW1lbnRzOwogfQpA
QCAtNjQ5LDUgKzY3Miw4OCBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQo
SFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvbgogCiAjZW5kaWYgLy8g
RU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCitzdGQ6OnVuaXF1ZV9wdHI8Q3JvcHBlZEltYWdlPiBD
cm9wcGVkSW1hZ2U6Omluc3RhbGwoSFRNTEVsZW1lbnQmIGhvc3QsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBGbG9hdFJlY3Qgbm9ybWFsaXpl
ZFJlY3QpCit7CisgICAgUmVmIGRvY3VtZW50ID0gaG9zdC5kb2N1bWVudCgpOworICAgIFJlZiBz
aGFkb3dSb290ID0gaG9zdC5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgUmVmUHRy
IGltYWdlT3ZlcmxheVJvb3QgPSBkeW5hbWljRG93bmNhc3Q8SFRNTERpdkVsZW1lbnQ+KHN0YXRp
Y19jYXN0PFRyZWVTY29wZSY+KHNoYWRvd1Jvb3QuZ2V0KCkpLmdldEVsZW1lbnRCeUlkKGltYWdl
T3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpKTsKKyAgICBpZiAoIWltYWdlT3ZlcmxheVJvb3Qp
IHsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCkpOworICAgICAgICBpbWFnZU92ZXJsYXlSb290LT5zZXRJZEF0dHJpYnV0ZShp
bWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9v
dC0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKKyAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQo
KmltYWdlT3ZlcmxheVJvb3QpOworICAgICAgICBpbnN0YWxsU3R5bGVTaGVldChzaGFkb3dSb290
LmdldCgpKTsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVySW1hZ2U+KGhvc3QucmVuZGVyZXIoKSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXRI
YXNJbWFnZU92ZXJsYXkoKTsKKworICAgIGF1dG8gY29udGFpbmVyUmVjdCA9IEltYWdlT3Zlcmxh
eTo6Y29udGFpbmVyUmVjdChob3N0KTsKKyAgICBhdXRvIGNyb3BSZWN0ID0gbm9ybWFsaXplZFJl
Y3Q7CisgICAgY3JvcFJlY3Quc2NhbGUoY29udGFpbmVyUmVjdC53aWR0aCgpLCBjb250YWluZXJS
ZWN0LmhlaWdodCgpKTsKKyAgICBjcm9wUmVjdC5tb3ZlKGNvbnRhaW5lclJlY3QueCgpLCBjb250
YWluZXJSZWN0LnkoKSk7CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ry
b3AtPnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRp
ZmllcigpKTsKKyAgICBpbWFnZU92ZXJsYXlSb290LT5hcHBlbmRDaGlsZChjcm9wcGVkSW1hZ2VC
YWNrZHJvcC5nZXQoKSk7CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZSA9IEhUTUxJbWFnZUVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgYXV0byBjcm9wcGVkSW1hZ2VVUkwgPSBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGRvY3Vt
ZW50LnB0cigpLCBpbWFnZURhdGEtPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSk7CisgICAgY3Jv
cHBlZEltYWdlLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlm
aWVyKCkpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIGNyb3BwZWRJbWFnZVVSTCk7CisgICAgY3JvcHBlZElt
YWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgY3JvcFJlY3QueCgp
LCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGNyb3BSZWN0LnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgsIGNyb3BSZWN0LndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNyb3Bw
ZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgY3JvcFJl
Y3QuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGltYWdlT3ZlcmxheVJvb3Qt
PmFwcGVuZENoaWxkKGNyb3BwZWRJbWFnZS5nZXQoKSk7CisKKyAgICBkb2N1bWVudC0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ry
b3AtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCAwLjUsIENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSKTsKKworICAgIHJldHVybiBtYWtlVW5pcXVlPENyb3BwZWRJbWFn
ZT4oZG9jdW1lbnQuZ2V0KCksIGhvc3QsIGNyb3BwZWRJbWFnZUJhY2tkcm9wLmdldCgpLCBjcm9w
cGVkSW1hZ2VVUkwpOworfQorCitDcm9wcGVkSW1hZ2U6OkNyb3BwZWRJbWFnZShEb2N1bWVudCYg
ZG9jdW1lbnQsIEhUTUxFbGVtZW50JiBob3N0LCBIVE1MRWxlbWVudCYgY3JvcHBlZEltYWdlQmFj
a2Ryb3AsIGNvbnN0IFN0cmluZyYgaW1hZ2VVUkwpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQorICAgICwgbV9ob3N0KGhvc3QpCisgICAgLCBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wKGNyb3Bw
ZWRJbWFnZUJhY2tkcm9wKQorICAgICwgbV9pbWFnZVVSTChpbWFnZVVSTCkKK3sKKyAgICBzZXRW
aXNpYmlsaXR5KHRydWUpOworfQorCitDcm9wcGVkSW1hZ2U6On5Dcm9wcGVkSW1hZ2UoKQorewor
ICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpKQorICAgICAgICBET01V
Ukw6OnJldm9rZU9iamVjdFVSTCgqZG9jdW1lbnQsIG1faW1hZ2VVUkwpOworCisgICAgUmVmUHRy
IGhvc3QgPSBtX2hvc3QuZ2V0KCk7CisgICAgaWYgKCFob3N0KQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHIgc2hhZG93Um9vdCA9IGhvc3QtPnNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXNo
YWRvd1Jvb3QgfHwgc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdl
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHRyZWVTY29wZSA9IHN0YXRpY19jYXN0
PFRyZWVTY29wZSY+KCpzaGFkb3dSb290KTsKKyAgICBpZiAoUmVmUHRyIGNyb3BwZWRJbWFnZSA9
IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlm
aWVyKCkpKQorICAgICAgICBjcm9wcGVkSW1hZ2UtPnJlbW92ZSgpOworCisgICAgaWYgKFJlZlB0
ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpbWFnZU92
ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZpZXIoKSkpCisgICAgICAgIGNyb3BwZWRJ
bWFnZUJhY2tkcm9wLT5yZW1vdmUoKTsKK30KKwordm9pZCBDcm9wcGVkSW1hZ2U6OnNldFZpc2li
aWxpdHkoYm9vbCB2aXNpYmxlKQoreworICAgIFJlZlB0ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9
IG1fY3JvcHBlZEltYWdlQmFja2Ryb3AuZ2V0KCk7CisgICAgaWYgKCFjcm9wcGVkSW1hZ2VCYWNr
ZHJvcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPmRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3JvcHBl
ZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5
LCB2aXNpYmxlID8gMC41IDogMCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBJbWFnZU92ZXJsYXkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbWFnZU92ZXJsYXkuaAppbmRleCAyZjgxNTRiYTM4NWJjMDUyMzE5YjNhYjcyNjUwNDBhYmIw
NjQ4OWI2Li4zNGQ1YmI5NjU2N2I4ODY1M2U0MzNlMzk4NGFjNTUyZmE2ZDM1M2I0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0ltYWdlT3ZlcmxheS5oCkBAIC0yNSwxMiArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgTm9kZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIHN0cnVjdCBDaGFyYWN0ZXJS
YW5nZTsKQEAgLTU1LDYgKzU5LDI0IEBAIGVudW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25S
ZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0
aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYsIGNvbnN0IFRleHRSZWNvZ25pdGlv
blJlc3VsdCYsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA9IENhY2hlVGV4dFJlY29nbml0
aW9uUmVzdWx0czo6WWVzKTsKICNlbmRpZgogCitjbGFzcyBDcm9wcGVkSW1hZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3BwZWRJ
bWFnZSk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDcm9wcGVkSW1hZ2U+IGluc3RhbGwoSFRNTEVsZW1lbnQmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmLCBGbG9hdFJlY3QpOworCisgICAgQ3JvcHBlZEltYWdlKERvY3VtZW50
JiwgSFRNTEVsZW1lbnQmLCBIVE1MRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgaW1hZ2VVUkwpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIH5Dcm9wcGVkSW1hZ2UoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VmlzaWJpbGl0eShib29sKTsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OworICAgIFdlYWtQdHI8SFRNTEVsZW1lbnQ+IG1faG9zdDsKKyAgICBX
ZWFrUHRyPEhUTUxFbGVtZW50PiBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wOworICAgIFN0cmluZyBt
X2ltYWdlVVJMOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSW1hZ2VPdmVybGF5CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2lt
YWdlT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXku
Y3NzCmluZGV4IGQyOTY0YzE3MTQ0NTk1MTViYzFhZDQ4NDY4MzIzYjQ0OTllYjZkMDcuLjJlNzZk
NmMyZGQyZTk1MmY1ODkyMGEzMWZhN2FlODAxOTFkOWVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtNzEsMyArNzEsMTggQEAgZGl2LmltYWdl
LW92ZXJsYXktZGF0YS1kZXRlY3Rvci1yZXN1bHQgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
ICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogfQorCitpbWcjaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9pbnRlci1ldmVu
dHM6IG5vbmU7Cit9CisKK2RpdiNpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3Ag
eworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICB3
aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAw
LjVzIGVhc2UtaW4tb3V0OworICAgIG9wYWNpdHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5v
bmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMjJlYTMzMjM5MGM1
YzgyMmFkMzQyNTkwYTRhMWUwYmYwYzUxOWQwOC4uZDUyZjc5YmYyN2RjYzg2YjNhNThmNDA3OTMw
OWUxMGI2NmU4OWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTEz
NCw3ICs1MTM0LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpwcml2YXRlUGxheWVyTXV0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpCiB9CiAjZW5kaWYKIAotI2VuZGlmCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogI2lmIEVOQUJMRShWSURFTykK
IGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxlbWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYSkKQEAgLTU4NzksNiArNTg4NCwyOSBAQCB2b2lkIEludGVybmFsczo6aW5zdGFs
bEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4m
JgogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eShFbGVtZW50JiBlbGVtZW50LCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYmIG5vcm1hbGl6ZWRDcm9w
UmVjdCkKK3sKKyAgICBSZWZQdHIgaHRtbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KGVsZW1lbnQpOworICAgIGlmICghaHRtbEVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gaW1hZ2VEYXRhID0gcG5nRGF0YUZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWlt
YWdlRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jcm9wcGVkSW1hZ2VPdmVybGF5ID0g
SW1hZ2VPdmVybGF5OjpDcm9wcGVkSW1hZ2U6Omluc3RhbGwoKmh0bWxFbGVtZW50LCBpbWFnZURh
dGEucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL3BuZyJfcywgeworICAgICAgICBzdGF0aWNfY2Fz
dDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT54KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxm
bG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT55KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9h
dD4obm9ybWFsaXplZENyb3BSZWN0LT53aWR0aCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+aGVpZ2h0KCkpCisgICAgfSk7Cit9CisKK3ZvaWQgSW50
ZXJuYWxzOjp1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCkKK3sKKyAgICBtX2Nyb3BwZWRJ
bWFnZU92ZXJsYXkgPSBudWxscHRyOworfQorCiBib29sIEludGVybmFsczo6aGFzQWN0aXZlRGF0
YURldGVjdG9ySGlnaGxpZ2h0KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04p
ICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IDY2ZmZlYjkzNWJjZjJmNjE0NjZmOWJjZjVkNzA4YmNkNTFkZDM0YzAuLjQwYTM3ZDFmY2Qy
Y2EyMzA5Mjg3ZWYwODM5ZWM2Y2ZmMTZlNzhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiBj
bGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb3VyY2VCdWZmZXI7
CiBjbGFzcyBTdHJpbmdDYWxsYmFjazsKIGNsYXNzIFN0eWxlU2hlZXQ7CkBAIC0xNTEsNiArMTUy
LDEwIEBAIGNsYXNzIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjsKICNlbmRpZgogI2VuZGlm
CiAKK25hbWVzcGFjZSBJbWFnZU92ZXJsYXkgeworY2xhc3MgQ3JvcHBlZEltYWdlOworfQorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKIHN0
cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwpAQCAtOTUwLDYgKzk1NSw4
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1l
bnQmLCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJiwgVmVjdG9yPEltYWdlT3ZlcmxheUJsb2Nr
PiYmID0geyB9LCBWZWN0b3I8SW1hZ2VPdmVybGF5RGF0YURldGVjdG9yPiYmID0geyB9KTsKKyAg
ICB2b2lkIGluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KEVsZW1lbnQmLCBSZWY8RE9NUmVjdFJl
YWRPbmx5PiYmKTsKKyAgICB2b2lkIHVuaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoKTsKICAg
ICBib29sIGhhc0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNvbnN0OwogCiAjaWYgRU5B
QkxFKElNQUdFX0FOQUxZU0lTKQpAQCAtMTI3NSw2ICsxMjgyLDggQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgRERTY2FubmVyUmVzdWx0ICpmYWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygp
OwogI2VuZGlmCiAKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YUZvclRl
c3RpbmcoKTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwpAQCAtMTMwOCw2ICsxMzE3LDgg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBtX3Rlc3RpbmdNb2RlVG9rZW47CiAj
ZW5kaWYKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZU92ZXJsYXk6OkNyb3BwZWRJbWFnZT4g
bV9jcm9wcGVkSW1hZ2VPdmVybGF5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJmMTIyMjE2MDIyYjMzYWMwN2E5MTNm
ODdhYzAyNzI5ZTYzNzhlMzcuLjk2NTM0M2Q4NDZkMDVmODlmYWFjMzkwMmIxMDUxZmMyNjUwMDc5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTk3OCw2ICs5NzgsOCBA
QCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAg
ICAgW0NvbmRpdGlvbmFsPUlNQUdFX0FOQUxZU0lTXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dD8gdGV4dFJlY29nbml0aW9uQ2FuZGlkYXRlOwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFM
WVNJU10gdW5kZWZpbmVkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oRWxlbWVudCBlbGVtZW50LCBW
b2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHVuZGVmaW5lZCBpbnN0YWxsSW1hZ2VPdmVybGF5
KEVsZW1lbnQgZWxlbWVudCwgc2VxdWVuY2U8SW1hZ2VPdmVybGF5TGluZT4gbGluZXMsIG9wdGlv
bmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUJsb2NrPiBibG9ja3MgPSBbXSwgb3B0aW9uYWwgc2Vx
dWVuY2U8SW1hZ2VPdmVybGF5RGF0YURldGVjdG9yPiBkYXRhRGV0ZWN0b3JzID0gW10pOworICAg
IHVuZGVmaW5lZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIERP
TVJlY3RSZWFkT25seSBub3JtYWxpemVkQ3JvcFJlY3QpOworICAgIHVuZGVmaW5lZCB1bmluc3Rh
bGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0OwogCiAgICAgYm9vbGVhbiB1c2luZ0FwcGxl
SW50ZXJuYWxTREsoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNDkyZjE2
ZjViM2JkMTRmZTFkMDA2ZWU1MTJhODU1NGFkMjYwZTA2NC4uZjNkMDhmZDA3MDZjMDUyZGFjNzBj
YjcyMjk5YzI0NmE3YTc2OTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIk1lZGlh
UGxheWVyUHJpdmF0ZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZl
ci5oIgogI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CkBAIC0xOTcsNCArMTk4LDEwIEBAIERE
U2Nhbm5lclJlc3VsdCAqSW50ZXJuYWxzOjpmYWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGlu
ZygpCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEludGVybmFsczo6cG5nRGF0YUZvclRlc3RpbmcoKQoreworICAgIE5TQnVuZGxlICp3
ZWJDb3JlQnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5n
KEAiV2ViQ29yZUJ1bmRsZUZpbmRlciIpXTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoW3dlYkNvcmVCdW5kbGUgcGF0aEZvclJlc291cmNlOkAibWlz
c2luZ0ltYWdlIiBvZlR5cGU6QCJwbmciXSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0Yjg4YTQ1ZjIzY2QwZjRjMzFhY2U5YjU1MjE2YzQyYjEzMjg3Y2Q2Li40OWM3M2Rm
YjBlNzc4NTg3ODFkYjQxOGVjYjMzM2QxYjUzOGZjZDdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjItMDItMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0xpdmUgVGV4dF0gQWRkIGEgbWVjaGFuaXNtIHRvIGluamVjdCBpbWFnZXMgaW50byBp
bWFnZSBvdmVybGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2ODQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhhdCBleGVyY2lzZXMgdGhlIG5ldyBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgY29kZS4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRp
b24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQt
aW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMjItMDItMTYgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbSW5wdXRFbGVtZW50XSBSZW1vdmUgZXh0cmEgZm9ybSBkYXRhIG1h
ZGUgYnkgaW1hZ2Ugc3VibWl0IGJ1dHRvbiB3aGVuICJ2YWx1ZSIgYXR0cmlidXRlIGlzIHByZXNl
bnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9u
L2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxYmU3Y2U1NjFiZmI2Mjk0ZGQwNGRmNTczMmU5ZTI4
MWNiOWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQt
cmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACisKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG5vbi1udWxsLgorUEFTUyBjcm9w
cGVkSW1hZ2VCYWNrZHJvcCBpcyBub24tbnVsbC4KK1BBU1MgY3JvcHBlZEltYWdlUmVjdC54IGlz
IDEwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0LnkgaXMgMTAwCitQQVNTIGNyb3BwZWRJbWFnZVJl
Y3Qud2lkdGggaXMgMjAwCitQQVNTIGNyb3BwZWRJbWFnZVJlY3QuaGVpZ2h0IGlzIDIwMAorUEFT
UyBjcm9wcGVkSW1hZ2UgaXMgbnVsbAorUEFTUyBjcm9wcGVkSW1hZ2VCYWNrZHJvcCBpcyBudWxs
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQt
cmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjUwYjY1YzAwYTQxZTdiMzdlNWMyYzE3OTk3ODhjMDVkM2NlYmM0NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3Zlcmxh
eS1jcm9wcGVkLWltYWdlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIG1hcmdpbjogMDsKK30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvZ3JlZW4tNDAw
eDQwMC5wbmciPjwvaW1nPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsKKyAgICBjb25zdCBpbWFnZSA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworCisgICAgaW50ZXJuYWxzLmluc3RhbGxDcm9wcGVkSW1h
Z2VPdmVybGF5KGltYWdlLCBuZXcgRE9NUmVjdFJlYWRPbmx5KDAuMjUsIDAuMjUsIDAuNSwgMC41
KSk7CisKKyAgICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkuZ2V0
RWxlbWVudEJ5SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIpOworICAgIGNyb3BwZWRJ
bWFnZUJhY2tkcm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlk
KCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiKTsKKyAgICBzaG91bGRCZU5v
bk51bGwoImNyb3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTm9uTnVsbCgiY3JvcHBlZEltYWdl
QmFja2Ryb3AiKTsKKworICAgIGNyb3BwZWRJbWFnZVJlY3QgPSBjcm9wcGVkSW1hZ2UuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueCIsICIx
MDAiKTsKKyAgICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC55IiwgIjEwMCIpOworICAgIHNo
b3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0LndpZHRoIiwgIjIwMCIpOworICAgIHNob3VsZEJlKCJj
cm9wcGVkSW1hZ2VSZWN0LmhlaWdodCIsICIyMDAiKTsKKworICAgIGludGVybmFscy51bmluc3Rh
bGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CisKKyAgICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMu
c2hhZG93Um9vdChpbWFnZSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1p
bWFnZSIpOworICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qo
aW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ry
b3AiKTsKKyAgICBzaG91bGRCZU51bGwoImNyb3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTnVs
bCgiY3JvcHBlZEltYWdlQmFja2Ryb3AiKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="479612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452540</attachid>
            <date>2022-02-18 10:35:04 -0800</date>
            <delta_ts>2022-02-18 11:13:21 -0800</delta_ts>
            <desc>Fix non-internal iOS build</desc>
            <filename>bug-236842-20220218103503.patch</filename>
            <type>text/plain</type>
            <size>25241</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMWUzYzYzNDJkMzVkYjNlNzhhYzE1ZWZkNGVhMjQw
Zjk5ZjEyMjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsU3R5bGVTaGVldCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhlIFVBIHN0eWxlIHNo
ZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwgc28gdGhhdCB3ZSBj
YW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2FzZXMgd2hlcmUgdGhl
IGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBUZXh0IGlzIGluamVj
dGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRy
ZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBjb21wbGV0ZWx5IHJl
bW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVnZW5lcmF0ZWQ7IHRo
aXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRoZSBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBMaXZlIFRleHQgZWxl
bWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRv
IGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2ZW4gaG9zdCBlbGVt
ZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAgICAgdGhlIGdpdmVu
IGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5zZXJ0IGFuIGltYWdl
IGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAgICAgY29udGFpbmVy
IHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4gY3JvcCByZWN0IChu
b3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAgVGhpcyBpbnNlcnRl
ZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxlbWVudCB0aGF0IGZh
ZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAgICAgY2FsbGVkLiBG
aW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBhIFJBSUkgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQorICAgICAgICBiYWNr
ZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2JqZWN0IGltbWVkaWF0
ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1hZ2UKKyAgICAgICAg
ZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBjcmVhdGVkIGR1cmlu
ZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OkNy
b3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICogZG9tL0ltYWdlT3Zl
cmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAg
IChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92
ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBj
cm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBh
biBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRo
ZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwog
MjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJk
MWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uN2ZlZWI3ZDdhMjNhNzZiZmRmYjU0ZmIxNDc1NDMyZTZhZTJm
ODQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDggKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAKKyNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKKyNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtOTYsNiArMTAwLDE4IEBAIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkKIAogI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGlt
YWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRlbnRpZmllcigiaW1hZ2Utb3Zl
cmxheS1jcm9wcGVkLWltYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1h
Z2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImlt
YWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1iYWNrZHJvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogYm9vbCBoYXNPdmVy
bGF5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8gc2hhZG93Um9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpOwpAQCAtMjA4LDYgKzIyNCwxNCBAQCB2b2lkIHJlbW92ZU92
ZXJsYXlTb29uSWZOZWVkZWQoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfSk7CiB9CiAKK3N0
YXRpYyB2b2lkIGluc3RhbGxTdHlsZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0
eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwor
ICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHls
ZVRhZywgc2hhZG93Um9vdC5kb2N1bWVudCgpLCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFRleHRD
b250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKFdURk1vdmUo
c3R5bGUpKTsKK30KKwogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAogSW50UmVjdCBjb250
YWluZXJSZWN0KEhUTUxFbGVtZW50JiBlbGVtZW50KQpAQCAtMjgwLDYgKzMwNCw3IEBAIHN0YXRp
YyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0
UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGNhblVzZUV4
aXN0aW5nRWxlbWVudHMgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudHMucm9vdCkgewogICAgICAg
ICBmb3IgKGF1dG8mIGNoaWxkRWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50
PigqZWxlbWVudHMucm9vdCkpIHsKICAgICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0Ns
YXNzKCkpCkBAIC0zMDMsNyArMzI4LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUo
SFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAg
ICAgICAgIGVsZW1lbnRzLmxpbmVzLmFwcGVuZCh7IGNoaWxkRWxlbWVudCwgV1RGTW92ZShsaW5l
Q2hpbGRyZW4pLCBjaGlsZHJlbk9mVHlwZTxIVE1MQlJFbGVtZW50PihjaGlsZEVsZW1lbnQpLmZp
cnN0KCkgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVu
dHMgPSAoWyZdIHsKKyAgICAgICAgY2FuVXNlRXhpc3RpbmdFbGVtZW50cyA9IChbJl0gewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5kYXRhRGV0ZWN0b3JzLnNpemUoKSAhPSBlbGVtZW50cy5kYXRh
RGV0ZWN0b3JzLnNpemUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0
MCw4ICszNjUsOCBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICB9KSgpOwogCiAg
ICAgICAgIGlmICghY2FuVXNlRXhpc3RpbmdFbGVtZW50cykgewotICAgICAgICAgICAgZWxlbWVu
dHMucm9vdC0+cmVtb3ZlKCk7Ci0gICAgICAgICAgICBlbGVtZW50cyA9IHsgfTsKKyAgICAgICAg
ICAgIGVsZW1lbnRzLnJvb3QtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICBlbGVtZW50
cyA9IHsgZWxlbWVudHMucm9vdCwgeyB9LCB7IH0sIHsgfSB9OwogICAgICAgICB9CiAgICAgfQog
CkBAIC0zNTAsMjMgKzM3NSwyNSBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1M
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogCiAgICAgUmVm
IGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwogICAgIFJlZiBzaGFkb3dSb290ID0gZWxl
bWVudC5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgaWYgKCFlbGVtZW50cy5yb290
KSB7Ci0gICAgICAgIGF1dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQuZ2V0KCkpOwotICAgICAgICByb290Q29udGFpbmVyLT5zZXRJZEF0dHJpYnV0ZShp
bWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgcm9vdENvbnRhaW5lci0+
c2V0VHJhbnNsYXRlKGZhbHNlKTsKLSAgICAgICAgaWYgKGRvY3VtZW50LT5pc0ltYWdlRG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIHJvb3RDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NWYWx1ZVRleHQpOworICAgIGlmICghY2Fu
VXNlRXhpc3RpbmdFbGVtZW50cykgeworICAgICAgICBpZiAoIWVsZW1lbnRzLnJvb3QpIHsKKyAg
ICAgICAgICAgIGF1dG8gcm9vdENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUo
aW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByb290Q29udGFp
bmVyLT5zZXRUcmFuc2xhdGUoZmFsc2UpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5pc0lt
YWdlRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVUZXh0KTsK
IAotICAgICAgICBpZiAobWVkaWFDb250cm9sc0NvbnRhaW5lcikKLSAgICAgICAgICAgIG1lZGlh
Q29udHJvbHNDb250YWluZXItPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChyb290Q29udGFpbmVyKTsK
LSAgICAgICAgZWxlbWVudHMucm9vdCA9IHJvb3RDb250YWluZXIuY29weVJlZigpOworICAgICAg
ICAgICAgaWYgKG1lZGlhQ29udHJvbHNDb250YWluZXIpCisgICAgICAgICAgICAgICAgbWVkaWFD
b250cm9sc0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQocm9vdENvbnRh
aW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5yb290ID0gcm9vdENvbnRhaW5lci5jb3B5UmVm
KCk7CisgICAgICAgIH0KICAgICAgICAgZWxlbWVudHMubGluZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShyZXN1bHQubGluZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogcmVz
dWx0LmxpbmVzKSB7CiAgICAgICAgICAgICBhdXRvIGxpbmVDb250YWluZXIgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICAgICAgICAgIGxpbmVDb250YWluZXIt
PmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoKSk7Ci0gICAgICAgICAgICBy
b290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChsaW5lQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGVs
ZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxkKGxpbmVDb250YWluZXIpOwogICAgICAgICAgICAgTGlu
ZUVsZW1lbnRzIGxpbmVFbGVtZW50cyB7IGxpbmVDb250YWluZXIsIHsgfSwgeyB9IH07CiAgICAg
ICAgICAgICBsaW5lRWxlbWVudHMuY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5l
LmNoaWxkcmVuLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBjaGlsZEluZGV4ID0g
MDsgY2hpbGRJbmRleCA8IGxpbmUuY2hpbGRyZW4uc2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsKQEAg
LTM5MSw3ICs0MTgsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1
dG8mIGRhdGFEZXRlY3RvciA6IHJlc3VsdC5kYXRhRGV0ZWN0b3JzKSB7CiAgICAgICAgICAgICBh
dXRvIGRhdGFEZXRlY3RvckNvbnRhaW5lciA9IERhdGFEZXRlY3Rpb246OmNyZWF0ZUVsZW1lbnRG
b3JJbWFnZU92ZXJsYXkoZG9jdW1lbnQuZ2V0KCksIGRhdGFEZXRlY3Rvcik7CiAgICAgICAgICAg
ICBkYXRhRGV0ZWN0b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRh
RGV0ZWN0b3JDbGFzcygpKTsKLSAgICAgICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxk
KGRhdGFEZXRlY3RvckNvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5yb290LT5hcHBl
bmRDaGlsZChkYXRhRGV0ZWN0b3JDb250YWluZXIpOwogICAgICAgICAgICAgZWxlbWVudHMuZGF0
YURldGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShkYXRhRGV0ZWN0b3JDb250YWluZXIp
KTsKICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTQwMCw3
ICs0MjcsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1dG8mIGJs
b2NrIDogcmVzdWx0LmJsb2NrcykgewogICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxv
Y2tDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwot
ICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOwor
ICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOwog
ICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1
bWVudC5nZXQoKSwgbWFrZVN0cmluZygnXG4nLCBibG9jay50ZXh0KSkpOwogICAgICAgICAgICAg
ZWxlbWVudHMuYmxvY2tzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGJsb2NrQ29udGFpbmVyKSk7
CiAgICAgICAgIH0KQEAgLTQxMSwxMiArNDM4LDggQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1
YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghaGFkRXhpc3RpbmdFbGVtZW50cykgewotICAg
ICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93
U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VPdmVybGF5VXNlckFn
ZW50U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKSk7
Ci0gICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjpzdHlsZVRhZywgZG9jdW1lbnQuZ2V0KCksIGZhbHNlKTsKLSAgICAgICAgc3R5bGUtPnNldFRl
eHRDb250ZW50KHNoYWRvd1N0eWxlKTsKLSAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShzdHlsZSkpOwotICAgIH0KKyAgICBpZiAoIWhhZEV4aXN0aW5nRWxlbWVudHMpCisg
ICAgICAgIGluc3RhbGxTdHlsZVNoZWV0KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IGVsZW1lbnRzOwogfQpAQCAtNjQ5LDUgKzY3Miw4OCBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlv
bgogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCitzdGQ6OnVuaXF1ZV9wdHI8
Q3JvcHBlZEltYWdlPiBDcm9wcGVkSW1hZ2U6Omluc3RhbGwoSFRNTEVsZW1lbnQmIGhvc3QsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBGbG9h
dFJlY3Qgbm9ybWFsaXplZFJlY3QpCit7CisgICAgUmVmIGRvY3VtZW50ID0gaG9zdC5kb2N1bWVu
dCgpOworICAgIFJlZiBzaGFkb3dSb290ID0gaG9zdC5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290
KCk7CisgICAgUmVmUHRyIGltYWdlT3ZlcmxheVJvb3QgPSBkeW5hbWljRG93bmNhc3Q8SFRNTERp
dkVsZW1lbnQ+KHN0YXRpY19jYXN0PFRyZWVTY29wZSY+KHNoYWRvd1Jvb3QuZ2V0KCkpLmdldEVs
ZW1lbnRCeUlkKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpKTsKKyAgICBpZiAoIWlt
YWdlT3ZlcmxheVJvb3QpIHsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdCA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBpbWFnZU92ZXJsYXlSb290LT5z
ZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAg
aW1hZ2VPdmVybGF5Um9vdC0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKKyAgICAgICAgc2hhZG93Um9v
dC0+YXBwZW5kQ2hpbGQoKmltYWdlT3ZlcmxheVJvb3QpOworICAgICAgICBpbnN0YWxsU3R5bGVT
aGVldChzaGFkb3dSb290LmdldCgpKTsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGhvc3QucmVuZGVyZXIoKSkpCisgICAgICAg
IHJlbmRlcmVyLT5zZXRIYXNJbWFnZU92ZXJsYXkoKTsKKworICAgIGF1dG8gY29udGFpbmVyUmVj
dCA9IEltYWdlT3ZlcmxheTo6Y29udGFpbmVyUmVjdChob3N0KTsKKyAgICBhdXRvIGNyb3BSZWN0
ID0gbm9ybWFsaXplZFJlY3Q7CisgICAgY3JvcFJlY3Quc2NhbGUoY29udGFpbmVyUmVjdC53aWR0
aCgpLCBjb250YWluZXJSZWN0LmhlaWdodCgpKTsKKyAgICBjcm9wUmVjdC5tb3ZlKGNvbnRhaW5l
clJlY3QueCgpLCBjb250YWluZXJSZWN0LnkoKSk7CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZUJh
Y2tkcm9wID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgY3Jv
cHBlZEltYWdlQmFja2Ryb3AtPnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUNyb3BwZWRJbWFn
ZUJhY2tkcm9wSWRlbnRpZmllcigpKTsKKyAgICBpbWFnZU92ZXJsYXlSb290LT5hcHBlbmRDaGls
ZChjcm9wcGVkSW1hZ2VCYWNrZHJvcC5nZXQoKSk7CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZSA9
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgYXV0byBjcm9w
cGVkSW1hZ2VVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudC5nZXQoKSwgQmxv
Yjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBpbWFnZURhdGEtPmV4dHJhY3REYXRhKCksIG1pbWVU
eXBlKSk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlDcm9w
cGVkSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIGNyb3BwZWRJbWFnZVVSTCk7
CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVm
dCwgY3JvcFJlY3QueCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBjcm9wcGVkSW1hZ2Ut
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGNyb3BSZWN0LnkoKSwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5V2lkdGgsIGNyb3BSZWN0LndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1Nf
UFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCwgY3JvcFJlY3QuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGlt
YWdlT3ZlcmxheVJvb3QtPmFwcGVuZENoaWxkKGNyb3BwZWRJbWFnZS5nZXQoKSk7CisKKyAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3Jv
cHBlZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFj
aXR5LCAwLjUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKworICAgIHJldHVybiBtYWtlVW5p
cXVlPENyb3BwZWRJbWFnZT4oZG9jdW1lbnQuZ2V0KCksIGhvc3QsIGNyb3BwZWRJbWFnZUJhY2tk
cm9wLmdldCgpLCBjcm9wcGVkSW1hZ2VVUkwpOworfQorCitDcm9wcGVkSW1hZ2U6OkNyb3BwZWRJ
bWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxFbGVtZW50JiBob3N0LCBIVE1MRWxlbWVudCYg
Y3JvcHBlZEltYWdlQmFja2Ryb3AsIGNvbnN0IFN0cmluZyYgaW1hZ2VVUkwpCisgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ob3N0KGhvc3QpCisgICAgLCBtX2Nyb3BwZWRJbWFn
ZUJhY2tkcm9wKGNyb3BwZWRJbWFnZUJhY2tkcm9wKQorICAgICwgbV9pbWFnZVVSTChpbWFnZVVS
TCkKK3sKKyAgICBzZXRWaXNpYmlsaXR5KHRydWUpOworfQorCitDcm9wcGVkSW1hZ2U6On5Dcm9w
cGVkSW1hZ2UoKQoreworICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgp
KQorICAgICAgICBET01VUkw6OnJldm9rZU9iamVjdFVSTCgqZG9jdW1lbnQsIG1faW1hZ2VVUkwp
OworCisgICAgUmVmUHRyIGhvc3QgPSBtX2hvc3QuZ2V0KCk7CisgICAgaWYgKCFob3N0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgc2hhZG93Um9vdCA9IGhvc3QtPnNoYWRvd1Jvb3Qo
KTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QgfHwgc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jv
b3RNb2RlOjpVc2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHRyZWVTY29w
ZSA9IHN0YXRpY19jYXN0PFRyZWVTY29wZSY+KCpzaGFkb3dSb290KTsKKyAgICBpZiAoUmVmUHRy
IGNyb3BwZWRJbWFnZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpbWFnZU92ZXJsYXlDcm9w
cGVkSW1hZ2VJZGVudGlmaWVyKCkpKQorICAgICAgICBjcm9wcGVkSW1hZ2UtPnJlbW92ZSgpOwor
CisgICAgaWYgKFJlZlB0ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IHRyZWVTY29wZS5nZXRFbGVt
ZW50QnlJZChpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZpZXIoKSkpCisg
ICAgICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wLT5yZW1vdmUoKTsKK30KKwordm9pZCBDcm9wcGVk
SW1hZ2U6OnNldFZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQoreworICAgIFJlZlB0ciBjcm9wcGVk
SW1hZ2VCYWNrZHJvcCA9IG1fY3JvcHBlZEltYWdlQmFja2Ryb3AuZ2V0KCk7CisgICAgaWYgKCFj
cm9wcGVkSW1hZ2VCYWNrZHJvcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY3JvcHBlZEltYWdl
QmFja2Ryb3AtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlPcGFjaXR5LCB2aXNpYmxlID8gMC41IDogMCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1C
RVIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbWFnZU92ZXJsYXkKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaAppbmRleCAyZjgxNTRiYTM4NWJjMDUyMzE5
YjNhYjcyNjUwNDBhYmIwNjQ4OWI2Li4zNGQ1YmI5NjU2N2I4ODY1M2U0MzNlMzk4NGFjNTUyZmE2
ZDM1M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCkBAIC0yNSwxMiArMjUsMTYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3Mg
Tm9kZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIHN0
cnVjdCBDaGFyYWN0ZXJSYW5nZTsKQEAgLTU1LDYgKzU5LDI0IEBAIGVudW0gY2xhc3MgQ2FjaGVU
ZXh0UmVjb2duaXRpb25SZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYsIGNvbnN0
IFRleHRSZWNvZ25pdGlvblJlc3VsdCYsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA9IENh
Y2hlVGV4dFJlY29nbml0aW9uUmVzdWx0czo6WWVzKTsKICNlbmRpZgogCitjbGFzcyBDcm9wcGVk
SW1hZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENyb3BwZWRJbWFnZSk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcm9wcGVkSW1hZ2U+IGluc3RhbGwoSFRNTEVsZW1lbnQmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBGbG9hdFJlY3QpOworCisgICAgQ3JvcHBl
ZEltYWdlKERvY3VtZW50JiwgSFRNTEVsZW1lbnQmLCBIVE1MRWxlbWVudCYsIGNvbnN0IFN0cmlu
ZyYgaW1hZ2VVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Dcm9wcGVkSW1hZ2UoKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlzaWJpbGl0eShib29sKTsKKworcHJpdmF0ZToKKyAg
ICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFdlYWtQdHI8SFRNTEVsZW1lbnQ+
IG1faG9zdDsKKyAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9w
OworICAgIFN0cmluZyBtX2ltYWdlVVJMOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSW1hZ2VPdmVy
bGF5CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9pbWFnZU92ZXJsYXkuY3NzCmluZGV4IGQyOTY0YzE3MTQ0NTk1MTViYzFhZDQ4NDY4MzIzYjQ0
OTllYjZkMDcuLjJlNzZkNmMyZGQyZTk1MmY1ODkyMGEzMWZhN2FlODAxOTFkOWVmZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtNzEsMyArNzEs
MTggQEAgZGl2LmltYWdlLW92ZXJsYXktZGF0YS1kZXRlY3Rvci1yZXN1bHQgewogICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogfQorCitpbWcj
aW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKK2RpdiNpbWFnZS1vdmVybGF5LWNyb3BwZWQt
aW1hZ2UtYmFja2Ryb3AgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5k
OiB3aGl0ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgdHJhbnNp
dGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0OworICAgIG9wYWNpdHk6IDA7CisgICAgcG9p
bnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggMjJlYTMzMjM5MGM1YzgyMmFkMzQyNTkwYTRhMWUwYmYwYzUxOWQwOC4uZDUyZjc5YmYyN2Rj
Yzg2YjNhNThmNDA3OTMwOWUxMGI2NmU4OWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNTEzNCw3ICs1MTM0LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpwcml2YXRlUGxh
eWVyTXV0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpCiB9CiAjZW5kaWYKIAotI2VuZGlmCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogI2lm
IEVOQUJMRShWSURFTykKIGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxlbWVudEhpZGRlbihjb25z
dCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYSkKQEAgLTU4NzksNiArNTg4NCwyOSBAQCB2b2lkIElu
dGVybmFsczo6aW5zdGFsbEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8SW1h
Z2VPdmVybGF5TGluZT4mJgogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjppbnN0YWxsQ3Jv
cHBlZEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVtZW50LCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYm
IG5vcm1hbGl6ZWRDcm9wUmVjdCkKK3sKKyAgICBSZWZQdHIgaHRtbEVsZW1lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpOworICAgIGlmICghaHRtbEVsZW1lbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2VEYXRhID0gcG5nRGF0YUZvclRlc3Rpbmco
KTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jcm9wcGVk
SW1hZ2VPdmVybGF5ID0gSW1hZ2VPdmVybGF5OjpDcm9wcGVkSW1hZ2U6Omluc3RhbGwoKmh0bWxF
bGVtZW50LCBpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL3BuZyJfcywgeworICAg
ICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT54KCkpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT55KCkpLAorICAgICAgICBz
dGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZENyb3BSZWN0LT53aWR0aCgpKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+aGVpZ2h0KCkpCisgICAgfSk7
Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCkKK3sK
KyAgICBtX2Nyb3BwZWRJbWFnZU92ZXJsYXkgPSBudWxscHRyOworfQorCiBib29sIEludGVybmFs
czo6aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDY2ZmZlYjkzNWJjZjJmNjE0NjZmOWJjZjVkNzA4YmNkNTFkZDM0
YzAuLjQwYTM3ZDFmY2QyY2EyMzA5Mjg3ZWYwODM5ZWM2Y2ZmMTZlNzhkNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIFJlbmRlcmVkRG9j
dW1lbnRNYXJrZXI7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBTdHJpbmdDYWxsYmFjazsKIGNsYXNzIFN0eWxlU2hlZXQ7
CkBAIC0xNTEsNiArMTUyLDEwIEBAIGNsYXNzIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjsK
ICNlbmRpZgogI2VuZGlmCiAKK25hbWVzcGFjZSBJbWFnZU92ZXJsYXkgeworY2xhc3MgQ3JvcHBl
ZEltYWdlOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7CiAKIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwpA
QCAtOTUwLDYgKzk1NSw4IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBpbnN0YWxsSW1h
Z2VPdmVybGF5KEVsZW1lbnQmLCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJiwgVmVjdG9yPElt
YWdlT3ZlcmxheUJsb2NrPiYmID0geyB9LCBWZWN0b3I8SW1hZ2VPdmVybGF5RGF0YURldGVjdG9y
PiYmID0geyB9KTsKKyAgICB2b2lkIGluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KEVsZW1lbnQm
LCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYmKTsKKyAgICB2b2lkIHVuaW5zdGFsbENyb3BwZWRJbWFn
ZU92ZXJsYXkoKTsKICAgICBib29sIGhhc0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpAQCAtMTI3NSw2ICsxMjgyLDggQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgRERTY2FubmVyUmVzdWx0ICpmYWtlRGF0YURldGVjdG9yUmVz
dWx0Rm9yVGVzdGluZygpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcG5nRGF0YUZvclRlc3RpbmcoKTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwpAQCAt
MTMwOCw2ICsxMzE3LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU8pCiAgICAgc3RkOjp1
bmlxdWVfcHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBtX3Rlc3Rp
bmdNb2RlVG9rZW47CiAjZW5kaWYKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZU92ZXJsYXk6
OkNyb3BwZWRJbWFnZT4gbV9jcm9wcGVkSW1hZ2VPdmVybGF5OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJmMTIyMjE2
MDIyYjMzYWMwN2E5MTNmODdhYzAyNzI5ZTYzNzhlMzcuLjk2NTM0M2Q4NDZkMDVmODlmYWFjMzkw
MmIxMDUxZmMyNjUwMDc5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTk3OCw2ICs5NzgsOCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkg
RmV0Y2hPYmplY3Q7CiAgICAgW0NvbmRpdGlvbmFsPUlNQUdFX0FOQUxZU0lTXSByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudD8gdGV4dFJlY29nbml0aW9uQ2FuZGlkYXRlOwogICAgIFtDb25kaXRp
b25hbD1JTUFHRV9BTkFMWVNJU10gdW5kZWZpbmVkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oRWxl
bWVudCBlbGVtZW50LCBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHVuZGVmaW5lZCBpbnN0
YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQgZWxlbWVudCwgc2VxdWVuY2U8SW1hZ2VPdmVybGF5TGlu
ZT4gbGluZXMsIG9wdGlvbmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUJsb2NrPiBibG9ja3MgPSBb
XSwgb3B0aW9uYWwgc2VxdWVuY2U8SW1hZ2VPdmVybGF5RGF0YURldGVjdG9yPiBkYXRhRGV0ZWN0
b3JzID0gW10pOworICAgIHVuZGVmaW5lZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVt
ZW50IGVsZW1lbnQsIERPTVJlY3RSZWFkT25seSBub3JtYWxpemVkQ3JvcFJlY3QpOworICAgIHVu
ZGVmaW5lZCB1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gaGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0OwogCiAgICAgYm9v
bGVhbiB1c2luZ0FwcGxlSW50ZXJuYWxTREsoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
bW0KaW5kZXggNDkyZjE2ZjViM2JkMTRmZTFkMDA2ZWU1MTJhODU1NGFkMjYwZTA2NC4uZjNkMDhm
ZDA3MDZjMDUyZGFjNzBjYjcyMjk5YzI0NmE3YTc2OTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQuaCIK
ICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBv
cnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CkBAIC0xOTcs
NCArMTk4LDEwIEBAIEREU2Nhbm5lclJlc3VsdCAqSW50ZXJuYWxzOjpmYWtlRGF0YURldGVjdG9y
UmVzdWx0Rm9yVGVzdGluZygpCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IEludGVybmFsczo6cG5nRGF0YUZvclRlc3RpbmcoKQorewor
ICAgIE5TQnVuZGxlICp3ZWJDb3JlQnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5T
Q2xhc3NGcm9tU3RyaW5nKEAiV2ViQ29yZUJ1bmRsZUZpbmRlciIpXTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoW3dlYkNvcmVCdW5kbGUgcGF0aEZv
clJlc291cmNlOkAibWlzc2luZ0ltYWdlIiBvZlR5cGU6QCJwbmciXSk7CiB9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Yjg4YTQ1ZjIzY2QwZjRjMzFhY2U5YjU1MjE2YzQyYjEz
Mjg3Y2Q2Li40OWM3M2RmYjBlNzc4NTg3ODFkYjQxOGVjYjMzM2QxYjUzOGZjZDdhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0xpdmUgVGV4dF0gQWRkIGEgbWVjaGFuaXNtIHRvIGluamVj
dCBpbWFnZXMgaW50byBpbWFnZSBvdmVybGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdGhhdCBleGVyY2lzZXMgdGhl
IG5ldyBjcm9wcGVkIGltYWdlIG92ZXJsYXkgY29kZS4KKworICAgICAgICAqIGZhc3QvaW1hZ2Vz
L3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIwMjItMDItMTYgIFppcmFuIFN1
biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSW5wdXRFbGVtZW50XSBSZW1vdmUgZXh0
cmEgZm9ybSBkYXRhIG1hZGUgYnkgaW1hZ2Ugc3VibWl0IGJ1dHRvbiB3aGVuICJ2YWx1ZSIgYXR0
cmlidXRlIGlzIHByZXNlbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90
ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXkt
Y3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxYmU3Y2U1NjFiZmI2Mjk0
ZGQwNGRmNTczMmU5ZTI4MWNiOWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG5vbi1u
dWxsLgorUEFTUyBjcm9wcGVkSW1hZ2VCYWNrZHJvcCBpcyBub24tbnVsbC4KK1BBU1MgY3JvcHBl
ZEltYWdlUmVjdC54IGlzIDEwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0LnkgaXMgMTAwCitQQVNT
IGNyb3BwZWRJbWFnZVJlY3Qud2lkdGggaXMgMjAwCitQQVNTIGNyb3BwZWRJbWFnZVJlY3QuaGVp
Z2h0IGlzIDIwMAorUEFTUyBjcm9wcGVkSW1hZ2UgaXMgbnVsbAorUEFTUyBjcm9wcGVkSW1hZ2VC
YWNrZHJvcCBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNv
Z25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjUwYjY1YzAwYTQxZTdiMzdlNWMyYzE3OTk3ODhjMDVkM2NlYmM0NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRp
b24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIG1h
cmdpbjogMDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSIuLi9yZXNv
dXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciPjwvaW1nPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8c2NyaXB0PgorYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsKKyAgICBjb25zdCBp
bWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworCisgICAgaW50ZXJuYWxzLmlu
c3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KGltYWdlLCBuZXcgRE9NUmVjdFJlYWRPbmx5KDAuMjUs
IDAuMjUsIDAuNSwgMC41KSk7CisKKyAgICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMuc2hhZG93
Um9vdChpbWFnZSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIp
OworICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2Up
LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiKTsK
KyAgICBzaG91bGRCZU5vbk51bGwoImNyb3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTm9uTnVs
bCgiY3JvcHBlZEltYWdlQmFja2Ryb3AiKTsKKworICAgIGNyb3BwZWRJbWFnZVJlY3QgPSBjcm9w
cGVkSW1hZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJ
bWFnZVJlY3QueCIsICIxMDAiKTsKKyAgICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC55Iiwg
IjEwMCIpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0LndpZHRoIiwgIjIwMCIpOwor
ICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0LmhlaWdodCIsICIyMDAiKTsKKworICAgIGlu
dGVybmFscy51bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCk7CisKKyAgICBjcm9wcGVkSW1h
Z2UgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLW92
ZXJsYXktY3JvcHBlZC1pbWFnZSIpOworICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gaW50ZXJu
YWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3Bw
ZWQtaW1hZ2UtYmFja2Ryb3AiKTsKKyAgICBzaG91bGRCZU51bGwoImNyb3BwZWRJbWFnZSIpOwor
ICAgIHNob3VsZEJlTnVsbCgiY3JvcHBlZEltYWdlQmFja2Ryb3AiKTsKK30pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="479622"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452545</attachid>
            <date>2022-02-18 10:51:18 -0800</date>
            <delta_ts>2022-02-18 13:44:36 -0800</delta_ts>
            <desc>Fix watchOS build (again)</desc>
            <filename>bug-236842-20220218105117.patch</filename>
            <type>text/plain</type>
            <size>25521</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMWUzYzYzNDJkMzVkYjNlNzhhYzE1ZWZkNGVhMjQw
Zjk5ZjEyMjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsU3R5bGVTaGVldCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhlIFVBIHN0eWxlIHNo
ZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwgc28gdGhhdCB3ZSBj
YW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2FzZXMgd2hlcmUgdGhl
IGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBUZXh0IGlzIGluamVj
dGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRy
ZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBjb21wbGV0ZWx5IHJl
bW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVnZW5lcmF0ZWQ7IHRo
aXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRoZSBjcm9wcGVkIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBMaXZlIFRleHQgZWxl
bWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRv
IGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2ZW4gaG9zdCBlbGVt
ZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAgICAgdGhlIGdpdmVu
IGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5zZXJ0IGFuIGltYWdl
IGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAgICAgY29udGFpbmVy
IHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4gY3JvcCByZWN0IChu
b3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAgVGhpcyBpbnNlcnRl
ZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxlbWVudCB0aGF0IGZh
ZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAgICAgY2FsbGVkLiBG
aW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBhIFJBSUkgb2JqZWN0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQorICAgICAgICBiYWNr
ZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2JqZWN0IGltbWVkaWF0
ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1hZ2UKKyAgICAgICAg
ZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBjcmVhdGVkIGR1cmlu
ZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6OkNy
b3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICogZG9tL0ltYWdlT3Zl
cmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAg
IChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92
ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBj
cm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBh
biBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRo
ZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwog
MjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJk
MWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uODUzZTFmYjE1NjgzNjc2MDEyNjJiZmUzNzNiOGU0MmM5MWFh
MDA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDggKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAKKyNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJET01U
b2tlbkxpc3QuaCIKKyNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgiCkBAIC00NSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtOTYsNiArMTAwLDE4IEBAIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkKIAogI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGlt
YWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRlbnRpZmllcigiaW1hZ2Utb3Zl
cmxheS1jcm9wcGVkLWltYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1h
Z2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImlt
YWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1iYWNrZHJvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKwogYm9vbCBoYXNPdmVy
bGF5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8gc2hhZG93Um9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpOwpAQCAtMjA4LDcgKzIyNCwxMyBAQCB2b2lkIHJlbW92ZU92
ZXJsYXlTb29uSWZOZWVkZWQoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfSk7CiB9CiAKLSNp
ZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCitzdGF0aWMgdm9pZCBpbnN0YWxsU3R5bGVTaGVldChT
aGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBzaGFkb3dTdHlsZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0
Q29weWluZyhpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaW1hZ2VPdmVy
bGF5VXNlckFnZW50U3R5bGVTaGVldCkpKTsKKyAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIHNoYWRvd1Jvb3QuZG9jdW1lbnQoKSwg
ZmFsc2UpOworICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChzaGFkb3dTdHlsZSk7CisgICAgc2hh
ZG93Um9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7Cit9CiAKIEludFJlY3QgY29udGFp
bmVyUmVjdChIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKQEAgLTIyMiw2ICsyNDQsOCBAQCBJbnRS
ZWN0IGNvbnRhaW5lclJlY3QoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikucmVwbGFjZWRDb250
ZW50UmVjdCgpKTsKIH0KIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKwogc3RydWN0IExp
bmVFbGVtZW50cyB7CiAgICAgUmVmPEhUTUxEaXZFbGVtZW50PiBsaW5lOwogICAgIFZlY3RvcjxS
ZWY8SFRNTEVsZW1lbnQ+PiBjaGlsZHJlbjsKQEAgLTI4MCw2ICszMDQsNyBAQCBzdGF0aWMgRWxl
bWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29n
bml0aW9uUmVzdWx0JgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBjYW5Vc2VFeGlzdGlu
Z0VsZW1lbnRzID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnRzLnJvb3QpIHsKICAgICAgICAgZm9y
IChhdXRvJiBjaGlsZEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MRGl2RWxlbWVudD4oKmVs
ZW1lbnRzLnJvb3QpKSB7CiAgICAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5oYXNDbGFzcygp
KQpAQCAtMzAzLDcgKzMyOCw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgICAg
ICBlbGVtZW50cy5saW5lcy5hcHBlbmQoeyBjaGlsZEVsZW1lbnQsIFdURk1vdmUobGluZUNoaWxk
cmVuKSwgY2hpbGRyZW5PZlR5cGU8SFRNTEJSRWxlbWVudD4oY2hpbGRFbGVtZW50KS5maXJzdCgp
IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGluZ0VsZW1lbnRzID0g
KFsmXSB7CisgICAgICAgIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSAoWyZdIHsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuZGF0YURldGVjdG9ycy5zaXplKCkgIT0gZWxlbWVudHMuZGF0YURldGVj
dG9ycy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDAsOCAr
MzY1LDggQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgfSkoKTsKIAogICAgICAg
ICBpZiAoIWNhblVzZUV4aXN0aW5nRWxlbWVudHMpIHsKLSAgICAgICAgICAgIGVsZW1lbnRzLnJv
b3QtPnJlbW92ZSgpOwotICAgICAgICAgICAgZWxlbWVudHMgPSB7IH07CisgICAgICAgICAgICBl
bGVtZW50cy5yb290LT5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgZWxlbWVudHMgPSB7
IGVsZW1lbnRzLnJvb3QsIHsgfSwgeyB9LCB7IH0gfTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzUwLDIzICszNzUsMjUgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKIAogICAgIFJlZiBkb2N1
bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKICAgICBSZWYgc2hhZG93Um9vdCA9IGVsZW1lbnQu
ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIGlmICghZWxlbWVudHMucm9vdCkgewot
ICAgICAgICBhdXRvIHJvb3RDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LmdldCgpKTsKLSAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VP
dmVybGF5RWxlbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIHJvb3RDb250YWluZXItPnNldFRy
YW5zbGF0ZShmYWxzZSk7Ci0gICAgICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkp
Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVUZXh0KTsKKyAgICBpZiAoIWNhblVzZUV4
aXN0aW5nRWxlbWVudHMpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50cy5yb290KSB7CisgICAgICAg
ICAgICBhdXRvIHJvb3RDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
LmdldCgpKTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXItPnNldElkQXR0cmlidXRlKGltYWdl
T3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+
c2V0VHJhbnNsYXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURv
Y3VtZW50KCkpCisgICAgICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlVGV4dCk7CiAKLSAg
ICAgICAgaWYgKG1lZGlhQ29udHJvbHNDb250YWluZXIpCi0gICAgICAgICAgICBtZWRpYUNvbnRy
b2xzQ29udGFpbmVyLT5hcHBlbmRDaGlsZChyb290Q29udGFpbmVyKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7Ci0gICAg
ICAgIGVsZW1lbnRzLnJvb3QgPSByb290Q29udGFpbmVyLmNvcHlSZWYoKTsKKyAgICAgICAgICAg
IGlmIChtZWRpYUNvbnRyb2xzQ29udGFpbmVyKQorICAgICAgICAgICAgICAgIG1lZGlhQ29udHJv
bHNDb250YWluZXItPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKHJvb3RDb250YWluZXIp
OworICAgICAgICAgICAgZWxlbWVudHMucm9vdCA9IHJvb3RDb250YWluZXIuY29weVJlZigpOwor
ICAgICAgICB9CiAgICAgICAgIGVsZW1lbnRzLmxpbmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cmVzdWx0LmxpbmVzLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgbGluZSA6IHJlc3VsdC5s
aW5lcykgewogICAgICAgICAgICAgYXV0byBsaW5lQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgICAgICAgICBsaW5lQ29udGFpbmVyLT5jbGFz
c0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5TGluZUNsYXNzKCkpOwotICAgICAgICAgICAgcm9vdENv
bnRhaW5lci0+YXBwZW5kQ2hpbGQobGluZUNvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50
cy5yb290LT5hcHBlbmRDaGlsZChsaW5lQ29udGFpbmVyKTsKICAgICAgICAgICAgIExpbmVFbGVt
ZW50cyBsaW5lRWxlbWVudHMgeyBsaW5lQ29udGFpbmVyLCB7IH0sIHsgfSB9OwogICAgICAgICAg
ICAgbGluZUVsZW1lbnRzLmNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZS5jaGls
ZHJlbi5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9IDA7IGNo
aWxkSW5kZXggPCBsaW5lLmNoaWxkcmVuLnNpemUoKTsgKytjaGlsZEluZGV4KSB7CkBAIC0zOTEs
NyArNDE4LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgZm9yIChhdXRvJiBk
YXRhRGV0ZWN0b3IgOiByZXN1bHQuZGF0YURldGVjdG9ycykgewogICAgICAgICAgICAgYXV0byBk
YXRhRGV0ZWN0b3JDb250YWluZXIgPSBEYXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1h
Z2VPdmVybGF5KGRvY3VtZW50LmdldCgpLCBkYXRhRGV0ZWN0b3IpOwogICAgICAgICAgICAgZGF0
YURldGVjdG9yQ29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5RGF0YURldGVj
dG9yQ2xhc3MoKSk7Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChkYXRh
RGV0ZWN0b3JDb250YWluZXIpOworICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+YXBwZW5kQ2hp
bGQoZGF0YURldGVjdG9yQ29udGFpbmVyKTsKICAgICAgICAgICAgIGVsZW1lbnRzLmRhdGFEZXRl
Y3RvcnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZGF0YURldGVjdG9yQ29udGFpbmVyKSk7CiAg
ICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC00MDAsNyArNDI3
LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgZm9yIChhdXRvJiBibG9jayA6
IHJlc3VsdC5ibG9ja3MpIHsKICAgICAgICAgICAgIGF1dG8gYmxvY2tDb250YWluZXIgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICAgICAgICAgIGJsb2NrQ29u
dGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpKTsKLSAgICAg
ICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGJsb2NrQ29udGFpbmVyKTsKKyAgICAg
ICAgICAgIGVsZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxkKGJsb2NrQ29udGFpbmVyKTsKICAgICAg
ICAgICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQu
Z2V0KCksIG1ha2VTdHJpbmcoJ1xuJywgYmxvY2sudGV4dCkpKTsKICAgICAgICAgICAgIGVsZW1l
bnRzLmJsb2Nrcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShibG9ja0NvbnRhaW5lcikpOwogICAg
ICAgICB9CkBAIC00MTEsMTIgKzQzOCw4IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVl
KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWhhZEV4aXN0aW5nRWxlbWVudHMpIHsKLSAgICAgICAg
c3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxl
KFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0
eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwotICAg
ICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5
bGVUYWcsIGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAgICAgIHN0eWxlLT5zZXRUZXh0Q29u
dGVudChzaGFkb3dTdHlsZSk7Ci0gICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKFdURk1v
dmUoc3R5bGUpKTsKLSAgICB9CisgICAgaWYgKCFoYWRFeGlzdGluZ0VsZW1lbnRzKQorICAgICAg
ICBpbnN0YWxsU3R5bGVTaGVldChzaGFkb3dSb290LmdldCgpKTsKIAogICAgIHJldHVybiBlbGVt
ZW50czsKIH0KQEAgLTY0OSw1ICs2NzIsODggQEAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb24KIAog
I2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorc3RkOjp1bmlxdWVfcHRyPENyb3Bw
ZWRJbWFnZT4gQ3JvcHBlZEltYWdlOjppbnN0YWxsKEhUTUxFbGVtZW50JiBob3N0LCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGltYWdlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgRmxvYXRSZWN0
IG5vcm1hbGl6ZWRSZWN0KQoreworICAgIFJlZiBkb2N1bWVudCA9IGhvc3QuZG9jdW1lbnQoKTsK
KyAgICBSZWYgc2hhZG93Um9vdCA9IGhvc3QuZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwor
ICAgIFJlZlB0ciBpbWFnZU92ZXJsYXlSb290ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxEaXZFbGVt
ZW50PihzdGF0aWNfY2FzdDxUcmVlU2NvcGUmPihzaGFkb3dSb290LmdldCgpKS5nZXRFbGVtZW50
QnlJZChpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKSk7CisgICAgaWYgKCFpbWFnZU92
ZXJsYXlSb290KSB7CisgICAgICAgIGltYWdlT3ZlcmxheVJvb3QgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdC0+c2V0SWRB
dHRyaWJ1dGUoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgIGltYWdl
T3ZlcmxheVJvb3QtPnNldFRyYW5zbGF0ZShmYWxzZSk7CisgICAgICAgIHNoYWRvd1Jvb3QtPmFw
cGVuZENoaWxkKCppbWFnZU92ZXJsYXlSb290KTsKKyAgICAgICAgaW5zdGFsbFN0eWxlU2hlZXQo
c2hhZG93Um9vdC5nZXQoKSk7CisgICAgfQorCisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihob3N0LnJlbmRlcmVyKCkpKQorICAgICAgICByZW5k
ZXJlci0+c2V0SGFzSW1hZ2VPdmVybGF5KCk7CisKKyAgICBhdXRvIGNvbnRhaW5lclJlY3QgPSBJ
bWFnZU92ZXJsYXk6OmNvbnRhaW5lclJlY3QoaG9zdCk7CisgICAgYXV0byBjcm9wUmVjdCA9IG5v
cm1hbGl6ZWRSZWN0OworICAgIGNyb3BSZWN0LnNjYWxlKGNvbnRhaW5lclJlY3Qud2lkdGgoKSwg
Y29udGFpbmVyUmVjdC5oZWlnaHQoKSk7CisgICAgY3JvcFJlY3QubW92ZShjb250YWluZXJSZWN0
LngoKSwgY29udGFpbmVyUmVjdC55KCkpOworCisgICAgYXV0byBjcm9wcGVkSW1hZ2VCYWNrZHJv
cCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgIGNyb3BwZWRJ
bWFnZUJhY2tkcm9wLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNr
ZHJvcElkZW50aWZpZXIoKSk7CisgICAgaW1hZ2VPdmVybGF5Um9vdC0+YXBwZW5kQ2hpbGQoY3Jv
cHBlZEltYWdlQmFja2Ryb3AuZ2V0KCkpOworCisgICAgYXV0byBjcm9wcGVkSW1hZ2UgPSBIVE1M
SW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgIGF1dG8gY3JvcHBlZElt
YWdlVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQuZ2V0KCksIEJsb2I6OmNy
ZWF0ZShkb2N1bWVudC5wdHIoKSwgaW1hZ2VEYXRhLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkp
OworICAgIGNyb3BwZWRJbWFnZS0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5Q3JvcHBlZElt
YWdlSWRlbnRpZmllcigpKTsKKyAgICBjcm9wcGVkSW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBjcm9wcGVkSW1hZ2VVUkwpOworICAg
IGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGNy
b3BSZWN0LngoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBjcm9wUmVjdC55KCksIENTU1VuaXRU
eXBlOjpDU1NfUFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdpZHRoLCBjcm9wUmVjdC53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
KyAgICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWln
aHQsIGNyb3BSZWN0LmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBpbWFnZU92
ZXJsYXlSb290LT5hcHBlbmRDaGlsZChjcm9wcGVkSW1hZ2UuZ2V0KCkpOworCisgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIGNyb3BwZWRJ
bWFnZUJhY2tkcm9wLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSwg
MC41LCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
cm9wcGVkSW1hZ2U+KGRvY3VtZW50LmdldCgpLCBob3N0LCBjcm9wcGVkSW1hZ2VCYWNrZHJvcC5n
ZXQoKSwgY3JvcHBlZEltYWdlVVJMKTsKK30KKworQ3JvcHBlZEltYWdlOjpDcm9wcGVkSW1hZ2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRWxlbWVudCYgaG9zdCwgSFRNTEVsZW1lbnQmIGNyb3Bw
ZWRJbWFnZUJhY2tkcm9wLCBjb25zdCBTdHJpbmcmIGltYWdlVVJMKQorICAgIDogbV9kb2N1bWVu
dChkb2N1bWVudCkKKyAgICAsIG1faG9zdChob3N0KQorICAgICwgbV9jcm9wcGVkSW1hZ2VCYWNr
ZHJvcChjcm9wcGVkSW1hZ2VCYWNrZHJvcCkKKyAgICAsIG1faW1hZ2VVUkwoaW1hZ2VVUkwpCit7
CisgICAgc2V0VmlzaWJpbGl0eSh0cnVlKTsKK30KKworQ3JvcHBlZEltYWdlOjp+Q3JvcHBlZElt
YWdlKCkKK3sKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9kb2N1bWVudC5nZXQoKSkKKyAg
ICAgICAgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoKmRvY3VtZW50LCBtX2ltYWdlVVJMKTsKKwor
ICAgIFJlZlB0ciBob3N0ID0gbV9ob3N0LmdldCgpOworICAgIGlmICghaG9zdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVmUHRyIHNoYWRvd1Jvb3QgPSBob3N0LT5zaGFkb3dSb290KCk7Cisg
ICAgaWYgKCFzaGFkb3dSb290IHx8IHNoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9k
ZTo6VXNlckFnZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiB0cmVlU2NvcGUgPSBz
dGF0aWNfY2FzdDxUcmVlU2NvcGUmPigqc2hhZG93Um9vdCk7CisgICAgaWYgKFJlZlB0ciBjcm9w
cGVkSW1hZ2UgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaW1hZ2VPdmVybGF5Q3JvcHBlZElt
YWdlSWRlbnRpZmllcigpKSkKKyAgICAgICAgY3JvcHBlZEltYWdlLT5yZW1vdmUoKTsKKworICAg
IGlmIChSZWZQdHIgY3JvcHBlZEltYWdlQmFja2Ryb3AgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5
SWQoaW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlmaWVyKCkpKQorICAgICAg
ICBjcm9wcGVkSW1hZ2VCYWNrZHJvcC0+cmVtb3ZlKCk7Cit9CisKK3ZvaWQgQ3JvcHBlZEltYWdl
OjpzZXRWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKK3sKKyAgICBSZWZQdHIgY3JvcHBlZEltYWdl
QmFja2Ryb3AgPSBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wLmdldCgpOworICAgIGlmICghY3JvcHBl
ZEltYWdlQmFja2Ryb3ApCisgICAgICAgIHJldHVybjsKKworICAgIGNyb3BwZWRJbWFnZUJhY2tk
cm9wLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwor
ICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5T3BhY2l0eSwgdmlzaWJsZSA/IDAuNSA6IDAsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSW1hZ2VPdmVybGF5CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmgKaW5kZXggMmY4MTU0YmEzODViYzA1MjMxOWIzYWI3
MjY1MDQwYWJiMDY0ODliNi4uMzRkNWJiOTY1NjdiODg2NTNlNDMzZTM5ODRhYzU1MmZhNmQzNTNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaApAQCAtMjUsMTIgKzI1LDE2IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIE5vZGU7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCiBzdHJ1Y3Qg
Q2hhcmFjdGVyUmFuZ2U7CkBAIC01NSw2ICs1OSwyNCBAQCBlbnVtIGNsYXNzIENhY2hlVGV4dFJl
Y29nbml0aW9uUmVzdWx0cyA6IGJvb2wgeyBObywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoSFRNTEVsZW1lbnQmLCBjb25zdCBUZXh0
UmVjb2duaXRpb25SZXN1bHQmLCBDYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMgPSBDYWNoZVRl
eHRSZWNvZ25pdGlvblJlc3VsdHM6Olllcyk7CiAjZW5kaWYKIAorY2xhc3MgQ3JvcHBlZEltYWdl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDcm9wcGVkSW1hZ2UpOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q3JvcHBlZEltYWdlPiBpbnN0YWxsKEhUTUxFbGVtZW50JiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0KTsKKworICAgIENyb3BwZWRJbWFn
ZShEb2N1bWVudCYsIEhUTUxFbGVtZW50JiwgSFRNTEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGlt
YWdlVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q3JvcHBlZEltYWdlKCk7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpc2liaWxpdHkoYm9vbCk7CisKK3ByaXZhdGU6CisgICAgV2Vh
a1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBtX2hv
c3Q7CisgICAgV2Vha1B0cjxIVE1MRWxlbWVudD4gbV9jcm9wcGVkSW1hZ2VCYWNrZHJvcDsKKyAg
ICBTdHJpbmcgbV9pbWFnZVVSTDsKK307CisKIH0gLy8gbmFtZXNwYWNlIEltYWdlT3ZlcmxheQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1h
Z2VPdmVybGF5LmNzcwppbmRleCBkMjk2NGMxNzE0NDU5NTE1YmMxYWQ0ODQ2ODMyM2I0NDk5ZWI2
ZDA3Li4yZTc2ZDZjMmRkMmU5NTJmNTg5MjBhMzFmYTdhZTgwMTkxZDllZmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTcxLDMgKzcxLDE4IEBA
IGRpdi5pbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0IHsKICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKIH0KKworaW1nI2ltYWdl
LW92ZXJsYXktY3JvcHBlZC1pbWFnZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHBv
aW50ZXItZXZlbnRzOiBub25lOworfQorCitkaXYjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdl
LWJhY2tkcm9wIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZDogd2hp
dGU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIHRyYW5zaXRpb246
IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDsKKyAgICBvcGFjaXR5OiAwOworICAgIHBvaW50ZXIt
ZXZlbnRzOiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDIy
ZWEzMzIzOTBjNWM4MjJhZDM0MjU5MGE0YTFlMGJmMGM1MTlkMDguLmQ1MmY3OWJmMjdkY2M4NmIz
YTU4ZjQwNzkzMDllMTBiNjZlODlmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTUxMzQsNyArNTEzNCwxMiBAQCBib29sIEludGVybmFsczo6cHJpdmF0ZVBsYXllck11
dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKQogfQogI2VuZGlmCiAKLSNlbmRpZgorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW50ZXJuYWxzOjpwbmdEYXRhRm9yVGVzdGluZygpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKICNpZiBFTkFC
TEUoVklERU8pCiBib29sIEludGVybmFsczo6aXNNZWRpYUVsZW1lbnRIaWRkZW4oY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgbWVkaWEpCkBAIC01ODc5LDYgKzU4ODQsMjkgQEAgdm9pZCBJbnRlcm5h
bHM6Omluc3RhbGxJbWFnZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPEltYWdlT3Zl
cmxheUxpbmU+JiYKICNlbmRpZgogfQogCit2b2lkIEludGVybmFsczo6aW5zdGFsbENyb3BwZWRJ
bWFnZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgUmVmPERPTVJlY3RSZWFkT25seT4mJiBub3Jt
YWxpemVkQ3JvcFJlY3QpCit7CisgICAgUmVmUHRyIGh0bWxFbGVtZW50ID0gZHluYW1pY0Rvd25j
YXN0PEhUTUxFbGVtZW50PihlbGVtZW50KTsKKyAgICBpZiAoIWh0bWxFbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGltYWdlRGF0YSA9IHBuZ0RhdGFGb3JUZXN0aW5nKCk7Cisg
ICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3JvcHBlZEltYWdl
T3ZlcmxheSA9IEltYWdlT3ZlcmxheTo6Q3JvcHBlZEltYWdlOjppbnN0YWxsKCpodG1sRWxlbWVu
dCwgaW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS9wbmciX3MsIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eCgpKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eSgpKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+d2lkdGgoKSksCisgICAgICAgIHN0YXRp
Y19jYXN0PGZsb2F0Pihub3JtYWxpemVkQ3JvcFJlY3QtPmhlaWdodCgpKQorICAgIH0pOworfQor
Cit2b2lkIEludGVybmFsczo6dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpCit7CisgICAg
bV9jcm9wcGVkSW1hZ2VPdmVybGF5ID0gbnVsbHB0cjsKK30KKwogYm9vbCBJbnRlcm5hbHM6Omhh
c0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERBVEFf
REVURUNUSU9OKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCA2NmZmZWI5MzViY2YyZjYxNDY2ZjliY2Y1ZDcwOGJjZDUxZGQzNGMwLi40
MGEzN2QxZmNkMmNhMjMwOTI4N2VmMDgzOWVjNmNmZjE2ZTc4ZDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBjbGFzcyBSZW5kZXJlZERvY3VtZW50
TWFya2VyOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU291
cmNlQnVmZmVyOwogY2xhc3MgU3RyaW5nQ2FsbGJhY2s7CiBjbGFzcyBTdHlsZVNoZWV0OwpAQCAt
MTUxLDYgKzE1MiwxMCBAQCBjbGFzcyBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I7CiAjZW5k
aWYKICNlbmRpZgogCituYW1lc3BhY2UgSW1hZ2VPdmVybGF5IHsKK2NsYXNzIENyb3BwZWRJbWFn
ZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKQEAgLTk1
MCw2ICs5NTUsOCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZvaWQgaW5zdGFsbEltYWdlT3Zl
cmxheShFbGVtZW50JiwgVmVjdG9yPEltYWdlT3ZlcmxheUxpbmU+JiYsIFZlY3RvcjxJbWFnZU92
ZXJsYXlCbG9jaz4mJiA9IHsgfSwgVmVjdG9yPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4mJiA9
IHsgfSk7CisgICAgdm9pZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50JiwgUmVm
PERPTVJlY3RSZWFkT25seT4mJik7CisgICAgdm9pZCB1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVy
bGF5KCk7CiAgICAgYm9vbCBoYXNBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQoKSBjb25zdDsK
IAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKQEAgLTEyNzUsNiArMTI4Miw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIEREU2Nhbm5lclJlc3VsdCAqZmFrZURhdGFEZXRlY3RvclJlc3VsdEZv
clRlc3RpbmcoKTsKICNlbmRpZgogCisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBu
Z0RhdGFGb3JUZXN0aW5nKCk7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIC8vIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFp
bGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKQEAgLTEzMDgs
NiArMTMxNyw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbj4gbV90ZXN0aW5nTW9k
ZVRva2VuOwogI2VuZGlmCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VPdmVybGF5OjpDcm9w
cGVkSW1hZ2U+IG1fY3JvcHBlZEltYWdlT3ZlcmxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZjEyMjIxNjAyMmIz
M2FjMDdhOTEzZjg3YWMwMjcyOWU2Mzc4ZTM3Li45NjUzNDNkODQ2ZDA1Zjg5ZmFhYzM5MDJiMTA1
MWZjMjY1MDA3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05Nzgs
NiArOTc4LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNo
T2JqZWN0OwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQ/IHRleHRSZWNvZ25pdGlvbkNhbmRpZGF0ZTsKICAgICBbQ29uZGl0aW9uYWw9
SU1BR0VfQU5BTFlTSVNdIHVuZGVmaW5lZCByZXF1ZXN0VGV4dFJlY29nbml0aW9uKEVsZW1lbnQg
ZWxlbWVudCwgVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgaW5zdGFsbElt
YWdlT3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUxpbmU+IGxp
bmVzLCBvcHRpb25hbCBzZXF1ZW5jZTxJbWFnZU92ZXJsYXlCbG9jaz4gYmxvY2tzID0gW10sIG9w
dGlvbmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4gZGF0YURldGVjdG9ycyA9
IFtdKTsKKyAgICB1bmRlZmluZWQgaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoRWxlbWVudCBl
bGVtZW50LCBET01SZWN0UmVhZE9ubHkgbm9ybWFsaXplZENyb3BSZWN0KTsKKyAgICB1bmRlZmlu
ZWQgdW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGhhc0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodDsKIAogICAgIGJvb2xlYW4g
dXNpbmdBcHBsZUludGVybmFsU0RLKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmlu
ZGV4IDQ5MmYxNmY1YjNiZDE0ZmUxZDAwNmVlNTEyYTg1NTRhZDI2MGUwNjQuLmYzZDA4ZmQwNzA2
YzA1MmRhYzcwY2I3MjI5OWMyNDZhN2E3Njk1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1w
b3J0ICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbXBvcnQgIlJhbmdlLmgiCisjaW1wb3J0ICJT
aGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgpAQCAtMTk3LDQgKzE5
OCwxMCBAQCBERFNjYW5uZXJSZXN1bHQgKkludGVybmFsczo6ZmFrZURhdGFEZXRlY3RvclJlc3Vs
dEZvclRlc3RpbmcoKQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAgICBO
U0J1bmRsZSAqd2ViQ29yZUJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNz
RnJvbVN0cmluZyhAIldlYkNvcmVCdW5kbGVGaW5kZXIiKV07CisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFt3ZWJDb3JlQnVuZGxlIHBhdGhGb3JSZXNv
dXJjZTpAIm1pc3NpbmdJbWFnZSIgb2ZUeXBlOkAicG5nIl0pOwogfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNGI4OGE0NWYyM2NkMGY0YzMxYWNlOWI1NTIxNmM0MmIxMzI4N2Nk
Ni4uNDljNzNkZmIwZTc3ODU4NzgxZGI0MThlY2IzMzNkMWI1MzhmY2Q3YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIyLTAyLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtMaXZlIFRleHRdIEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1h
Z2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSBuZXcg
Y3JvcHBlZCBpbWFnZSBvdmVybGF5IGNvZGUuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0
LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3Zlcmxh
eS1jcm9wcGVkLWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAyLTE2ICBaaXJhbiBTdW4gIDx6
c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gUmVtb3ZlIGV4dHJhIGZv
cm0gZGF0YSBtYWRlIGJ5IGltYWdlIHN1Ym1pdCBidXR0b24gd2hlbiAidmFsdWUiIGF0dHJpYnV0
ZSBpcyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1y
ZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3Bw
ZWQtaW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MWJlN2NlNTYxYmZiNjI5NGRkMDRk
ZjU3MzJlOWUyODFjYjljMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitQQVNTIGNyb3BwZWRJbWFnZSBpcyBub24tbnVsbC4K
K1BBU1MgY3JvcHBlZEltYWdlQmFja2Ryb3AgaXMgbm9uLW51bGwuCitQQVNTIGNyb3BwZWRJbWFn
ZVJlY3QueCBpcyAxMDAKK1BBU1MgY3JvcHBlZEltYWdlUmVjdC55IGlzIDEwMAorUEFTUyBjcm9w
cGVkSW1hZ2VSZWN0LndpZHRoIGlzIDIwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0LmhlaWdodCBp
cyAyMDAKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG51bGwKK1BBU1MgY3JvcHBlZEltYWdlQmFja2Ry
b3AgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRp
b24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY1MGI2NWMwMGE0MWU3YjM3ZTVjMmMxNzk5Nzg4YzA1ZDNjZWJjNDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2lt
YWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46
IDA7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2Vz
L2dyZWVuLTQwMHg0MDAucG5nIj48L2ltZz4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNj
cmlwdD4KK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7CisgICAgY29uc3QgaW1hZ2Ug
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKworICAgIGludGVybmFscy5pbnN0YWxs
Q3JvcHBlZEltYWdlT3ZlcmxheShpbWFnZSwgbmV3IERPTVJlY3RSZWFkT25seSgwLjI1LCAwLjI1
LCAwLjUsIDAuNSkpOworCisgICAgY3JvcHBlZEltYWdlID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qo
aW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UiKTsKKyAg
ICBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5zaGFkb3dSb290KGltYWdlKS5nZXRF
bGVtZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWJhY2tkcm9wIik7CisgICAg
c2hvdWxkQmVOb25OdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNy
b3BwZWRJbWFnZUJhY2tkcm9wIik7CisKKyAgICBjcm9wcGVkSW1hZ2VSZWN0ID0gY3JvcHBlZElt
YWdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VS
ZWN0LngiLCAiMTAwIik7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueSIsICIxMDAi
KTsKKyAgICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC53aWR0aCIsICIyMDAiKTsKKyAgICBz
aG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC5oZWlnaHQiLCAiMjAwIik7CisKKyAgICBpbnRlcm5h
bHMudW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOworCisgICAgY3JvcHBlZEltYWdlID0g
aW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5
LWNyb3BwZWQtaW1hZ2UiKTsKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5z
aGFkb3dSb290KGltYWdlKS5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWlt
YWdlLWJhY2tkcm9wIik7CisgICAgc2hvdWxkQmVOdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBz
aG91bGRCZU51bGwoImNyb3BwZWRJbWFnZUJhY2tkcm9wIik7Cit9KTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452567</attachid>
            <date>2022-02-18 13:00:43 -0800</date>
            <delta_ts>2022-02-18 13:44:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236842-20220218130042.patch</filename>
            <type>text/plain</type>
            <size>25616</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uMzRmNWMwOTFjN2VlMDA0MmNjYjMwZjY0MWVmYmM3
NjgwOWUzYmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5OjppbnN0YWxsSW1hZ2VPdmVybGF5
U3R5bGVTaGVldCk6CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgZm9yIGluc3RhbGxpbmcgdGhl
IFVBIHN0eWxlIHNoZWV0IGZvciBpbWFnZSBvdmVybGF5cyBpbnRvIGEgaGVscGVyIG1ldGhvZCwg
c28gdGhhdCB3ZSBjYW4gZW5zdXJlCisgICAgICAgIHRoZSBzdHlsZXNoZWV0IGluIGJvdGggY2Fz
ZXMgd2hlcmUgdGhlIGBDcm9wcGVkSW1hZ2VgIGlzIGluc3RhbGxlZCBmaXJzdCwgb3IgTGl2ZSBU
ZXh0IGlzIGluamVjdGVkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6
OnVwZGF0ZVN1YnRyZWUpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgbWV0aG9kIHRvIG5vdCBj
b21wbGV0ZWx5IHJlbW92ZSB0aGUgaW1hZ2Ugb3ZlcmxheSByb290IGNvbnRhaW5lciBpbiB0aGUg
Y2FzZSB3aGVyZSB0aGUgTGl2ZSBUZXh0CisgICAgICAgIHN1YnRyZWUgbmVlZHMgdG8gYmUgcmVn
ZW5lcmF0ZWQ7IHRoaXMgcHJldmVudHMgdXMgZnJvbSBpbmFkdmVydGVudGx5IHJlbW92aW5nIHRo
ZSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgZWxlbWVudHMKKyAgICAgICAgd2hlbiB1cGRhdGluZyBM
aXZlIFRleHQgZWxlbWVudHMgaW4gdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU92ZXJsYXk6OkNyb3BwZWRJbWFnZTo6aW5zdGFsbCk6CisKKyAgICAgICAgQWRk
IGEgbWV0aG9kIHRvIGluc3RhbGwgYSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgaW50byB0aGUgZ2l2
ZW4gaG9zdCBlbGVtZW50LiBUaGlzIGNyZWF0ZXMgYSBuZXcgYmxvYiBVUkwgdXNpbmcKKyAgICAg
ICAgdGhlIGdpdmVuIGltYWdlIGRhdGEgYW5kIE1JTUUgdHlwZSwgYW5kIHVzZXMgaXQgdG8gaW5z
ZXJ0IGFuIGltYWdlIGVsZW1lbnQgd2l0aGluIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QKKyAgICAg
ICAgY29udGFpbmVyIHRoYXQncyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciB0aGUgZ2l2ZW4g
Y3JvcCByZWN0IChub3JtYWxpemVkIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSkuCisKKyAgICAgICAg
VGhpcyBpbnNlcnRlZCBpbWFnZSBpcyBwcmVzZW50ZWQgb3ZlciBhbm90aGVyIGRpbW1pbmcgZWxl
bWVudCB0aGF0IGZhZGVzIGluIGFuZCBvdXQgYXMgYHNldFZpc2liaWxpdHkoKWAgaXMKKyAgICAg
ICAgY2FsbGVkLiBGaW5hbGx5LCBgaW5zdGFsbGAgcmV0dXJucyBhIGB1bmlxdWVfcHRyYCB0byBh
IFJBSUkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZmFkZSB0aGUgY3JvcHBlZCBpbWFnZQor
ICAgICAgICBiYWNrZHJvcCBpbiBvciBvdXQ7IHdoZW4gZGVzdHJveWVkLCB0aGlzIFJBSUkgb2Jq
ZWN0IGltbWVkaWF0ZWx5IGRpc2Nvbm5lY3RzIGJvdGggdGhlIGJhY2tkcm9wIGFuZCB0aGUgaW1h
Z2UKKyAgICAgICAgZWxlbWVudCwgYW5kIHJldm9rZXMgdGhlIHRlbXBvcmFyeSBibG9iIFVSTCBj
cmVhdGVkIGR1cmluZyBgaW5zdGFsbCgpYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5OjpDcm9wcGVkSW1hZ2U6OkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZU92ZXJsYXk6OkNyb3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXk6OkNyb3BwZWRJbWFnZTo6c2V0VmlzaWJpbGl0eSk6CisgICAgICAgICog
ZG9tL0ltYWdlT3ZlcmxheS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5j
c3M6CisgICAgICAgIChpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlKToKKyAgICAgICAg
KGRpdiNpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3ApOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cG5nRGF0
YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBl
ZEltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVuaW5zdGFsbENy
b3BwZWRJbWFnZU92ZXJsYXkpOgorCisgICAgICAgIEFkZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBv
cnQgZm9yIHRoZSBjcm9wcGVkIGltYWdlIG92ZXJsYXkgYnkgYWxsb3dpbmcgbGF5b3V0IHRlc3Rz
IHRvIGluamVjdCBhbiBpbWFnZSBvdmVybGF5CisgICAgICAgIHdpdGggaGFyZC1jb2RlZCBQTkcg
ZGF0YSBpbnRvIHRoZSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JU
ZXN0aW5nKToKKwogMjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFk
ZXIgaW5jbHVkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4
MTZjMGUyMTI5OGJkMWVhZTJmNDM2ZTk0YmUwZjQ3ZS4uNDZlZTFhMzYzNjA4MmNiMWRjNGZhNDIx
ZWVkOGUyMjMyMGQ5OGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2
LDE2ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlT3Zlcmxh
eS5oIgogCisjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAj
aW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1h
Z2VPdmVybGF5Q29udHJvbGxlci5oIgpAQCAtNDUsNiArNDksNyBAQAogI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTk2LDYgKzEw
MSwxOCBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5QmxvY2tDbGFzcygp
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK3N0YXRpYyBjb25zdCBBdG9t
U3RyaW5nJiBpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkZW50aWZpZXIo
ImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKworc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRpZmllcigpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpZGVu
dGlmaWVyKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKIGJv
b2wgaGFzT3ZlcmxheShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvIHNo
YWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKTsKQEAgLTIwOCw3ICsyMjUsMTMgQEAgdm9p
ZCByZW1vdmVPdmVybGF5U29vbklmTmVlZGVkKEhUTUxFbGVtZW50JiBlbGVtZW50KQogICAgIH0p
OwogfQogCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorc3RhdGljIHZvaWQgaW5zdGFsbElt
YWdlT3ZlcmxheVN0eWxlU2hlZXQoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKSk7CisgICAgYXV0
byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBz
aGFkb3dSb290LmRvY3VtZW50KCksIGZhbHNlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQo
c2hhZG93U3R5bGUpOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkp
OworfQogCiBJbnRSZWN0IGNvbnRhaW5lclJlY3QoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7CkBA
IC0yMjIsNiArMjQ1LDggQEAgSW50UmVjdCBjb250YWluZXJSZWN0KEhUTUxFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRvd25jYXN0PFJlbmRlckltYWdlPigq
cmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3QoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCisKIHN0cnVjdCBMaW5lRWxlbWVudHMgewogICAgIFJlZjxIVE1MRGl2RWxlbWVu
dD4gbGluZTsKICAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gY2hpbGRyZW47CkBAIC0yODAs
NiArMzA1LDcgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgfQogICAgIH0KIAor
ICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdFbGVtZW50cyA9IGZhbHNlOwogICAgIGlmIChlbGVtZW50
cy5yb290KSB7CiAgICAgICAgIGZvciAoYXV0byYgY2hpbGRFbGVtZW50IDogY2hpbGRyZW5PZlR5
cGU8SFRNTERpdkVsZW1lbnQ+KCplbGVtZW50cy5yb290KSkgewogICAgICAgICAgICAgaWYgKCFj
aGlsZEVsZW1lbnQuaGFzQ2xhc3MoKSkKQEAgLTMwMyw3ICszMjksNyBAQCBzdGF0aWMgRWxlbWVu
dHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0
aW9uUmVzdWx0JgogICAgICAgICAgICAgZWxlbWVudHMubGluZXMuYXBwZW5kKHsgY2hpbGRFbGVt
ZW50LCBXVEZNb3ZlKGxpbmVDaGlsZHJlbiksIGNoaWxkcmVuT2ZUeXBlPEhUTUxCUkVsZW1lbnQ+
KGNoaWxkRWxlbWVudCkuZmlyc3QoKSB9KTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgY2Fu
VXNlRXhpc3RpbmdFbGVtZW50cyA9IChbJl0geworICAgICAgICBjYW5Vc2VFeGlzdGluZ0VsZW1l
bnRzID0gKFsmXSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmRhdGFEZXRlY3RvcnMuc2l6ZSgp
ICE9IGVsZW1lbnRzLmRhdGFEZXRlY3RvcnMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQwLDggKzM2Niw4IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0
cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAg
ICAgICAgIH0pKCk7CiAKICAgICAgICAgaWYgKCFjYW5Vc2VFeGlzdGluZ0VsZW1lbnRzKSB7Ci0g
ICAgICAgICAgICBlbGVtZW50cy5yb290LT5yZW1vdmUoKTsKLSAgICAgICAgICAgIGVsZW1lbnRz
ID0geyB9OworICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+cmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICAgICAgICAgIGVsZW1lbnRzID0geyBlbGVtZW50cy5yb290LCB7IH0sIHsgfSwgeyB9IH07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTM1MCwyMyArMzc2LDI1IEBAIHN0YXRpYyBFbGVtZW50cyB1
cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25S
ZXN1bHQmCiAKICAgICBSZWYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3VtZW50KCk7CiAgICAgUmVm
IHNoYWRvd1Jvb3QgPSBlbGVtZW50LmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBp
ZiAoIWVsZW1lbnRzLnJvb3QpIHsKLSAgICAgICAgYXV0byByb290Q29udGFpbmVyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7Ci0gICAgICAgIHJvb3RDb250YWluZXIt
PnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpOwotICAgICAg
ICByb290Q29udGFpbmVyLT5zZXRUcmFuc2xhdGUoZmFsc2UpOwotICAgICAgICBpZiAoZG9jdW1l
bnQtPmlzSW1hZ2VEb2N1bWVudCgpKQotICAgICAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlVGV4
dCk7CisgICAgaWYgKCFjYW5Vc2VFeGlzdGluZ0VsZW1lbnRzKSB7CisgICAgICAgIGlmICghZWxl
bWVudHMucm9vdCkgeworICAgICAgICAgICAgYXV0byByb290Q29udGFpbmVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CisgICAgICAgICAgICByb290Q29udGFpbmVy
LT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKKyAgICAg
ICAgICAgIHJvb3RDb250YWluZXItPnNldFRyYW5zbGF0ZShmYWxzZSk7CisgICAgICAgICAgICBp
ZiAoZG9jdW1lbnQtPmlzSW1hZ2VEb2N1bWVudCgpKQorICAgICAgICAgICAgICAgIHJvb3RDb250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0
LCBDU1NWYWx1ZVRleHQpOwogCi0gICAgICAgIGlmIChtZWRpYUNvbnRyb2xzQ29udGFpbmVyKQot
ICAgICAgICAgICAgbWVkaWFDb250cm9sc0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQocm9vdENvbnRh
aW5lcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxk
KHJvb3RDb250YWluZXIpOwotICAgICAgICBlbGVtZW50cy5yb290ID0gcm9vdENvbnRhaW5lci5j
b3B5UmVmKCk7CisgICAgICAgICAgICBpZiAobWVkaWFDb250cm9sc0NvbnRhaW5lcikKKyAgICAg
ICAgICAgICAgICBtZWRpYUNvbnRyb2xzQ29udGFpbmVyLT5hcHBlbmRDaGlsZChyb290Q29udGFp
bmVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzaGFkb3dSb290LT5hcHBl
bmRDaGlsZChyb290Q29udGFpbmVyKTsKKyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QgPSByb290
Q29udGFpbmVyLmNvcHlSZWYoKTsKKyAgICAgICAgfQogICAgICAgICBlbGVtZW50cy5saW5lcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdC5saW5lcy5zaXplKCkpOwogICAgICAgICBmb3Ig
KGF1dG8mIGxpbmUgOiByZXN1bHQubGluZXMpIHsKICAgICAgICAgICAgIGF1dG8gbGluZUNvbnRh
aW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAg
ICAgbGluZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheUxpbmVDbGFzcygp
KTsKLSAgICAgICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGxpbmVDb250YWluZXIp
OworICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+YXBwZW5kQ2hpbGQobGluZUNvbnRhaW5lcik7
CiAgICAgICAgICAgICBMaW5lRWxlbWVudHMgbGluZUVsZW1lbnRzIHsgbGluZUNvbnRhaW5lciwg
eyB9LCB7IH0gfTsKICAgICAgICAgICAgIGxpbmVFbGVtZW50cy5jaGlsZHJlbi5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpbmUuY2hpbGRyZW4uc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwgbGluZS5jaGlsZHJlbi5zaXplKCk7ICsr
Y2hpbGRJbmRleCkgewpAQCAtMzkxLDcgKzQxOSw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVT
dWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQm
CiAgICAgICAgIGZvciAoYXV0byYgZGF0YURldGVjdG9yIDogcmVzdWx0LmRhdGFEZXRlY3RvcnMp
IHsKICAgICAgICAgICAgIGF1dG8gZGF0YURldGVjdG9yQ29udGFpbmVyID0gRGF0YURldGVjdGlv
bjo6Y3JlYXRlRWxlbWVudEZvckltYWdlT3ZlcmxheShkb2N1bWVudC5nZXQoKSwgZGF0YURldGVj
dG9yKTsKICAgICAgICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRk
KGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNsYXNzKCkpOwotICAgICAgICAgICAgcm9vdENvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoZGF0YURldGVjdG9yQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGVs
ZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxkKGRhdGFEZXRlY3RvckNvbnRhaW5lcik7CiAgICAgICAg
ICAgICBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGRhdGFE
ZXRlY3RvckNvbnRhaW5lcikpOwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVU
RUNUSU9OKQpAQCAtNDAwLDcgKzQyOCw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVl
KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAg
ICAgIGZvciAoYXV0byYgYmxvY2sgOiByZXN1bHQuYmxvY2tzKSB7CiAgICAgICAgICAgICBhdXRv
IGJsb2NrQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7
CiAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3Zlcmxh
eUJsb2NrQ2xhc3MoKSk7Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGlsZChi
bG9ja0NvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVtZW50cy5yb290LT5hcHBlbmRDaGlsZChi
bG9ja0NvbnRhaW5lcik7CiAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBtYWtlU3RyaW5nKCdcbicsIGJsb2NrLnRleHQp
KSk7CiAgICAgICAgICAgICBlbGVtZW50cy5ibG9ja3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
YmxvY2tDb250YWluZXIpKTsKICAgICAgICAgfQpAQCAtNDExLDEyICs0MzksOCBAQCBzdGF0aWMg
RWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJl
Y29nbml0aW9uUmVzdWx0JgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFoYWRFeGlzdGlu
Z0VsZW1lbnRzKSB7Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBzaGFkb3dTdHlsZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhp
bWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaW1hZ2VPdmVybGF5VXNlckFn
ZW50U3R5bGVTaGVldCkpKTsKLSAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkb2N1bWVudC5nZXQoKSwgZmFsc2UpOwotICAg
ICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOwotICAgICAgICBzaGFkb3dS
b290LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgfQorICAgIGlmICghaGFkRXhp
c3RpbmdFbGVtZW50cykKKyAgICAgICAgaW5zdGFsbEltYWdlT3ZlcmxheVN0eWxlU2hlZXQoc2hh
ZG93Um9vdC5nZXQoKSk7CiAKICAgICByZXR1cm4gZWxlbWVudHM7CiB9CkBAIC02NDksNSArNjcz
LDg4IEBAIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAKK3N0ZDo6dW5pcXVlX3B0cjxDcm9wcGVkSW1hZ2U+IENyb3BwZWRJbWFnZTo6
aW5zdGFsbChIVE1MRWxlbWVudCYgaG9zdCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZURhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEZsb2F0UmVjdCBub3JtYWxpemVkUmVjdCkKK3sKKyAg
ICBSZWYgZG9jdW1lbnQgPSBob3N0LmRvY3VtZW50KCk7CisgICAgUmVmIHNoYWRvd1Jvb3QgPSBo
b3N0LmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBSZWZQdHIgaW1hZ2VPdmVybGF5
Um9vdCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MRGl2RWxlbWVudD4oc3RhdGljX2Nhc3Q8VHJlZVNj
b3BlJj4oc2hhZG93Um9vdC5nZXQoKSkuZ2V0RWxlbWVudEJ5SWQoaW1hZ2VPdmVybGF5RWxlbWVu
dElkZW50aWZpZXIoKSkpOworICAgIGlmICghaW1hZ2VPdmVybGF5Um9vdCkgeworICAgICAgICBp
bWFnZU92ZXJsYXlSb290ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7
CisgICAgICAgIGltYWdlT3ZlcmxheVJvb3QtPnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUVs
ZW1lbnRJZGVudGlmaWVyKCkpOworICAgICAgICBpbWFnZU92ZXJsYXlSb290LT5zZXRUcmFuc2xh
dGUoZmFsc2UpOworICAgICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZCgqaW1hZ2VPdmVybGF5
Um9vdCk7CisgICAgICAgIGluc3RhbGxJbWFnZU92ZXJsYXlTdHlsZVNoZWV0KHNoYWRvd1Jvb3Qu
Z2V0KCkpOworICAgIH0KKworICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJJbWFnZT4oaG9zdC5yZW5kZXJlcigpKSkKKyAgICAgICAgcmVuZGVyZXItPnNldEhh
c0ltYWdlT3ZlcmxheSgpOworCisgICAgYXV0byBjb250YWluZXJSZWN0ID0gSW1hZ2VPdmVybGF5
Ojpjb250YWluZXJSZWN0KGhvc3QpOworICAgIGF1dG8gY3JvcFJlY3QgPSBub3JtYWxpemVkUmVj
dDsKKyAgICBjcm9wUmVjdC5zY2FsZShjb250YWluZXJSZWN0LndpZHRoKCksIGNvbnRhaW5lclJl
Y3QuaGVpZ2h0KCkpOworICAgIGNyb3BSZWN0Lm1vdmUoY29udGFpbmVyUmVjdC54KCksIGNvbnRh
aW5lclJlY3QueSgpKTsKKworICAgIGF1dG8gY3JvcHBlZEltYWdlQmFja2Ryb3AgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJv
cC0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdlQmFja2Ryb3BJZGVudGlm
aWVyKCkpOworICAgIGltYWdlT3ZlcmxheVJvb3QtPmFwcGVuZENoaWxkKGNyb3BwZWRJbWFnZUJh
Y2tkcm9wLmdldCgpKTsKKworICAgIGF1dG8gY3JvcHBlZEltYWdlID0gSFRNTEltYWdlRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKKyAgICBhdXRvIGNyb3BwZWRJbWFnZVVSTCA9IERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LmdldCgpLCBCbG9iOjpjcmVhdGUoZG9jdW1l
bnQucHRyKCksIGltYWdlRGF0YS0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpKTsKKyAgICBjcm9w
cGVkSW1hZ2UtPnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZp
ZXIoKSk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgY3JvcHBlZEltYWdlVVJMKTsKKyAgICBjcm9wcGVkSW1h
Z2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBjcm9wUmVjdC54KCks
IENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgY3JvcFJlY3QueSgpLCBDU1NVbml0VHlwZTo6Q1NTX1BY
KTsKKyAgICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgY3JvcFJlY3Qud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBl
ZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBjcm9wUmVj
dC5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgaW1hZ2VPdmVybGF5Um9vdC0+
YXBwZW5kQ2hpbGQoY3JvcHBlZEltYWdlLmdldCgpKTsKKworICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJv
cC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDAuNSwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpOworCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3JvcHBlZEltYWdl
Pihkb2N1bWVudC5nZXQoKSwgaG9zdCwgY3JvcHBlZEltYWdlQmFja2Ryb3AuZ2V0KCksIGNyb3Bw
ZWRJbWFnZVVSTCk7Cit9CisKK0Nyb3BwZWRJbWFnZTo6Q3JvcHBlZEltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgSFRNTEVsZW1lbnQmIGhvc3QsIEhUTUxFbGVtZW50JiBjcm9wcGVkSW1hZ2VCYWNr
ZHJvcCwgY29uc3QgU3RyaW5nJiBpbWFnZVVSTCkKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
CisgICAgLCBtX2hvc3QoaG9zdCkKKyAgICAsIG1fY3JvcHBlZEltYWdlQmFja2Ryb3AoY3JvcHBl
ZEltYWdlQmFja2Ryb3ApCisgICAgLCBtX2ltYWdlVVJMKGltYWdlVVJMKQoreworICAgIHNldFZp
c2liaWxpdHkodHJ1ZSk7Cit9CisKK0Nyb3BwZWRJbWFnZTo6fkNyb3BwZWRJbWFnZSgpCit7Cisg
ICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0KCkpCisgICAgICAgIERPTVVS
TDo6cmV2b2tlT2JqZWN0VVJMKCpkb2N1bWVudCwgbV9pbWFnZVVSTCk7CisKKyAgICBSZWZQdHIg
aG9zdCA9IG1faG9zdC5nZXQoKTsKKyAgICBpZiAoIWhvc3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJlZlB0ciBzaGFkb3dSb290ID0gaG9zdC0+c2hhZG93Um9vdCgpOworICAgIGlmICghc2hh
ZG93Um9vdCB8fCBzaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgdHJlZVNjb3BlID0gc3RhdGljX2Nhc3Q8
VHJlZVNjb3BlJj4oKnNoYWRvd1Jvb3QpOworICAgIGlmIChSZWZQdHIgY3JvcHBlZEltYWdlID0g
dHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZp
ZXIoKSkpCisgICAgICAgIGNyb3BwZWRJbWFnZS0+cmVtb3ZlKCk7CisKKyAgICBpZiAoUmVmUHRy
IGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKGltYWdlT3Zl
cmxheUNyb3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRpZmllcigpKSkKKyAgICAgICAgY3JvcHBlZElt
YWdlQmFja2Ryb3AtPnJlbW92ZSgpOworfQorCit2b2lkIENyb3BwZWRJbWFnZTo6c2V0VmlzaWJp
bGl0eShib29sIHZpc2libGUpCit7CisgICAgUmVmUHRyIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0g
bV9jcm9wcGVkSW1hZ2VCYWNrZHJvcC5nZXQoKTsKKyAgICBpZiAoIWNyb3BwZWRJbWFnZUJhY2tk
cm9wKQorICAgICAgICByZXR1cm47CisKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJvcC0+ZG9jdW1l
bnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBjcm9wcGVk
SW1hZ2VCYWNrZHJvcC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHks
IHZpc2libGUgPyAwLjUgOiAwLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEltYWdlT3ZlcmxheQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0ltYWdlT3ZlcmxheS5oCmluZGV4IDJmODE1NGJhMzg1YmMwNTIzMTliM2FiNzI2NTA0MGFiYjA2
NDg5YjYuLjdjYzQ0ZmM2NWE2YzFiOWQ5YTlmYzMzMzdkMGM2MDE5NjNmMzc2OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW1hZ2VPdmVybGF5LmgKQEAgLTI2LDExICsyNiwxNSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZsb2F0
UmVjdDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgTm9kZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIHN0cnVjdCBDaGFyYWN0ZXJSYW5nZTsKQEAg
LTU1LDYgKzU5LDI0IEBAIGVudW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdChIVE1MRWxlbWVudCYsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYs
IENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA9IENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0
czo6WWVzKTsKICNlbmRpZgogCitjbGFzcyBDcm9wcGVkSW1hZ2UgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3BwZWRJbWFnZSk7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcm9wcGVk
SW1hZ2U+IGluc3RhbGwoSFRNTEVsZW1lbnQmLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmLCBGbG9hdFJlY3QpOworCisgICAgQ3JvcHBlZEltYWdlKERvY3VtZW50JiwgSFRNTEVs
ZW1lbnQmLCBIVE1MRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgaW1hZ2VVUkwpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5Dcm9wcGVkSW1hZ2UoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VmlzaWJpbGl0eShib29sKTsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OworICAgIFdlYWtQdHI8SFRNTEVsZW1lbnQ+IG1faG9zdDsKKyAgICBXZWFrUHRyPEhU
TUxFbGVtZW50PiBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wOworICAgIFN0cmluZyBtX2ltYWdlVVJM
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSW1hZ2VPdmVybGF5CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3Zlcmxh
eS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCmluZGV4
IGQyOTY0YzE3MTQ0NTk1MTViYzFhZDQ4NDY4MzIzYjQ0OTllYjZkMDcuLjJlNzZkNmMyZGQyZTk1
MmY1ODkyMGEzMWZhN2FlODAxOTFkOWVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtNzEsMyArNzEsMTggQEAgZGl2LmltYWdlLW92ZXJsYXkt
ZGF0YS1kZXRlY3Rvci1yZXN1bHQgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAtd2Vi
a2l0LXVzZXItc2VsZWN0OiBub25lOwogfQorCitpbWcjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWlt
YWdlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7
Cit9CisKK2RpdiNpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2Ut
aW4tb3V0OworICAgIG9wYWNpdHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMjJlYTMzMjM5MGM1YzgyMmFkMzQy
NTkwYTRhMWUwYmYwYzUxOWQwOC4uZDUyZjc5YmYyN2RjYzg2YjNhNThmNDA3OTMwOWUxMGI2NmU4
OWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTEzNCw3ICs1MTM0
LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpwcml2YXRlUGxheWVyTXV0ZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpCiB9CiAjZW5kaWYKIAotI2VuZGlmCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnRl
cm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
I2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgSW50
ZXJuYWxzOjppc01lZGlhRWxlbWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBtZWRp
YSkKQEAgLTU4NzksNiArNTg4NCwyOSBAQCB2b2lkIEludGVybmFsczo6aW5zdGFsbEltYWdlT3Zl
cmxheShFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJgogI2VuZGlm
CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50
JiBlbGVtZW50LCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYmIG5vcm1hbGl6ZWRDcm9wUmVjdCkKK3sK
KyAgICBSZWZQdHIgaHRtbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVs
ZW1lbnQpOworICAgIGlmICghaHRtbEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gaW1hZ2VEYXRhID0gcG5nRGF0YUZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWltYWdlRGF0YSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jcm9wcGVkSW1hZ2VPdmVybGF5ID0gSW1hZ2VPdmVy
bGF5OjpDcm9wcGVkSW1hZ2U6Omluc3RhbGwoKmh0bWxFbGVtZW50LCBpbWFnZURhdGEucmVsZWFz
ZU5vbk51bGwoKSwgImltYWdlL3BuZyJfcywgeworICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsaXplZENyb3BSZWN0LT54KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9y
bWFsaXplZENyb3BSZWN0LT55KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFs
aXplZENyb3BSZWN0LT53aWR0aCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1h
bGl6ZWRDcm9wUmVjdC0+aGVpZ2h0KCkpCisgICAgfSk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjp1
bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KCkKK3sKKyAgICBtX2Nyb3BwZWRJbWFnZU92ZXJs
YXkgPSBudWxscHRyOworfQorCiBib29sIEludGVybmFsczo6aGFzQWN0aXZlRGF0YURldGVjdG9y
SGlnaGxpZ2h0KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pICYmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY2ZmZl
YjkzNWJjZjJmNjE0NjZmOWJjZjVkNzA4YmNkNTFkZDM0YzAuLjQwYTM3ZDFmY2QyY2EyMzA5Mjg3
ZWYwODM5ZWM2Y2ZmMTZlNzhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
MTA2LDYgKzEwNiw3IEBAIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBT
dHJpbmdDYWxsYmFjazsKIGNsYXNzIFN0eWxlU2hlZXQ7CkBAIC0xNTEsNiArMTUyLDEwIEBAIGNs
YXNzIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjsKICNlbmRpZgogI2VuZGlmCiAKK25hbWVz
cGFjZSBJbWFnZU92ZXJsYXkgeworY2xhc3MgQ3JvcHBlZEltYWdlOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKIHN0cnVjdCBNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOwpAQCAtOTUwLDYgKzk1NSw4IEBAIHB1Ymxp
YzoKICAgICB9OwogCiAgICAgdm9pZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQmLCBWZWN0
b3I8SW1hZ2VPdmVybGF5TGluZT4mJiwgVmVjdG9yPEltYWdlT3ZlcmxheUJsb2NrPiYmID0geyB9
LCBWZWN0b3I8SW1hZ2VPdmVybGF5RGF0YURldGVjdG9yPiYmID0geyB9KTsKKyAgICB2b2lkIGlu
c3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5KEVsZW1lbnQmLCBSZWY8RE9NUmVjdFJlYWRPbmx5PiYm
KTsKKyAgICB2b2lkIHVuaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoKTsKICAgICBib29sIGhh
c0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElNQUdF
X0FOQUxZU0lTKQpAQCAtMTI3NSw2ICsxMjgyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRERT
Y2FubmVyUmVzdWx0ICpmYWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpOwogI2VuZGlm
CiAKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YUZvclRlc3RpbmcoKTsK
KwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
T2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYs
IFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwpAQCAtMTMwOCw2ICsxMzE3LDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoVklERU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBtX3Rlc3RpbmdNb2RlVG9rZW47CiAjZW5kaWYKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZU92ZXJsYXk6OkNyb3BwZWRJbWFnZT4gbV9jcm9wcGVk
SW1hZ2VPdmVybGF5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJmMTIyMjE2MDIyYjMzYWMwN2E5MTNmODdhYzAyNzI5
ZTYzNzhlMzcuLjk2NTM0M2Q4NDZkMDVmODlmYWFjMzkwMmIxMDUxZmMyNjUwMDc5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTk3OCw2ICs5NzgsOCBAQCB0eXBlZGVm
IChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgW0NvbmRp
dGlvbmFsPUlNQUdFX0FOQUxZU0lTXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGV4dFJl
Y29nbml0aW9uQ2FuZGlkYXRlOwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gdW5k
ZWZpbmVkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oRWxlbWVudCBlbGVtZW50LCBWb2lkQ2FsbGJh
Y2sgY2FsbGJhY2spOwogICAgIHVuZGVmaW5lZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQg
ZWxlbWVudCwgc2VxdWVuY2U8SW1hZ2VPdmVybGF5TGluZT4gbGluZXMsIG9wdGlvbmFsIHNlcXVl
bmNlPEltYWdlT3ZlcmxheUJsb2NrPiBibG9ja3MgPSBbXSwgb3B0aW9uYWwgc2VxdWVuY2U8SW1h
Z2VPdmVybGF5RGF0YURldGVjdG9yPiBkYXRhRGV0ZWN0b3JzID0gW10pOworICAgIHVuZGVmaW5l
ZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIERPTVJlY3RSZWFk
T25seSBub3JtYWxpemVkQ3JvcFJlY3QpOworICAgIHVuZGVmaW5lZCB1bmluc3RhbGxDcm9wcGVk
SW1hZ2VPdmVybGF5KCk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaGFzQWN0aXZl
RGF0YURldGVjdG9ySGlnaGxpZ2h0OwogCiAgICAgYm9vbGVhbiB1c2luZ0FwcGxlSW50ZXJuYWxT
REsoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNDkyZjE2ZjViM2JkMTRm
ZTFkMDA2ZWU1MTJhODU1NGFkMjYwZTA2NC4uZjNkMDhmZDA3MDZjMDUyZGFjNzBjYjcyMjk5YzI0
NmE3YTc2OTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTM1LDYgKzM1
LDcgQEAKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJp
dmF0ZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2lt
cG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CkBAIC0xOTcsNCArMTk4LDEwIEBAIEREU2Nhbm5lclJl
c3VsdCAqSW50ZXJuYWxzOjpmYWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpCiAKICNl
bmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IElu
dGVybmFsczo6cG5nRGF0YUZvclRlc3RpbmcoKQoreworICAgIE5TQnVuZGxlICp3ZWJDb3JlQnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV2ViQ29y
ZUJ1bmRsZUZpbmRlciIpXTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoW3dlYkNvcmVCdW5kbGUgcGF0aEZvclJlc291cmNlOkAibWlzc2luZ0ltYWdl
IiBvZlR5cGU6QCJwbmciXSk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0
Yjg4YTQ1ZjIzY2QwZjRjMzFhY2U5YjU1MjE2YzQyYjEzMjg3Y2Q2Li4xMjJiZGZkNmJkYjAwMDkz
N2RjMjU2OGI1NDE0YjVmNjA2NjBmMmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDIt
MTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0xp
dmUgVGV4dF0gQWRkIGEgbWVjaGFuaXNtIHRvIGluamVjdCBpbWFnZXMgaW50byBpbWFnZSBvdmVy
bGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
ODQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAgQWRk
IGEgbGF5b3V0IHRlc3QgdGhhdCBleGVyY2lzZXMgdGhlIG5ldyBjcm9wcGVkIGltYWdlIG92ZXJs
YXkgY29kZS4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Ut
b3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRt
bDogQWRkZWQuCisKIDIwMjItMDItMTYgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbSW5wdXRFbGVtZW50XSBSZW1vdmUgZXh0cmEgZm9ybSBkYXRhIG1hZGUgYnkgaW1h
Z2Ugc3VibWl0IGJ1dHRvbiB3aGVuICJ2YWx1ZSIgYXR0cmlidXRlIGlzIHByZXNlbnQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92
ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjYxYmU3Y2U1NjFiZmI2Mjk0ZGQwNGRmNTczMmU5ZTI4MWNiOWMzMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRp
b24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACisKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG5vbi1udWxsLgorUEFTUyBjcm9wcGVkSW1hZ2VC
YWNrZHJvcCBpcyBub24tbnVsbC4KK1BBU1MgY3JvcHBlZEltYWdlUmVjdC54IGlzIDEwMAorUEFT
UyBjcm9wcGVkSW1hZ2VSZWN0LnkgaXMgMTAwCitQQVNTIGNyb3BwZWRJbWFnZVJlY3Qud2lkdGgg
aXMgMjAwCitQQVNTIGNyb3BwZWRJbWFnZVJlY3QuaGVpZ2h0IGlzIDIwMAorUEFTUyBjcm9wcGVk
SW1hZ2UgaXMgbnVsbAorUEFTUyBjcm9wcGVkSW1hZ2VCYWNrZHJvcCBpcyBudWxsCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNy
b3BwZWQtaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRp
b24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwYjY1YzAw
YTQxZTdiMzdlNWMyYzE3OTk3ODhjMDVkM2NlYmM0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1jcm9wcGVk
LWltYWdlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIG1hcmdpbjogMDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmci
PjwvaW1nPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsICgpID0+IHsKKyAgICBjb25zdCBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImltZyIpOworCisgICAgaW50ZXJuYWxzLmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5
KGltYWdlLCBuZXcgRE9NUmVjdFJlYWRPbmx5KDAuMjUsIDAuMjUsIDAuNSwgMC41KSk7CisKKyAg
ICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkuZ2V0RWxlbWVudEJ5
SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIpOworICAgIGNyb3BwZWRJbWFnZUJhY2tk
cm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1v
dmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNy
b3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTm9uTnVsbCgiY3JvcHBlZEltYWdlQmFja2Ryb3Ai
KTsKKworICAgIGNyb3BwZWRJbWFnZVJlY3QgPSBjcm9wcGVkSW1hZ2UuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueCIsICIxMDAiKTsKKyAg
ICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC55IiwgIjEwMCIpOworICAgIHNob3VsZEJlKCJj
cm9wcGVkSW1hZ2VSZWN0LndpZHRoIiwgIjIwMCIpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1h
Z2VSZWN0LmhlaWdodCIsICIyMDAiKTsKKworICAgIGludGVybmFscy51bmluc3RhbGxDcm9wcGVk
SW1hZ2VPdmVybGF5KCk7CisKKyAgICBjcm9wcGVkSW1hZ2UgPSBpbnRlcm5hbHMuc2hhZG93Um9v
dChpbWFnZSkuZ2V0RWxlbWVudEJ5SWQoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIpOwor
ICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdl
dEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtYmFja2Ryb3AiKTsKKyAg
ICBzaG91bGRCZU51bGwoImNyb3BwZWRJbWFnZSIpOworICAgIHNob3VsZEJlTnVsbCgiY3JvcHBl
ZEltYWdlQmFja2Ryb3AiKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452577</attachid>
            <date>2022-02-18 13:44:41 -0800</date>
            <delta_ts>2022-02-18 15:51:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236842-20220218134440.patch</filename>
            <type>text/plain</type>
            <size>27057</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlMTFlMzgzYjdhNDQw
YzQyN2I3YmNiZmVhODA1NzMzMDM5YzVmNS4uNzFjYzcwYWVjZDFjNGIwMWI0Y2EzYzAwYTA4MWNh
M2MzNDI1MTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2VzIGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkaXR5YSBLZWVydGhpLgorCisgICAgICAgIFRvIHN1cHBvcnQg
YWRkaXRpb25hbCBiZWhhdmlvcnMgYXJvdW5kIHRoZSAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250
ZXh0IG1lbnUgaXRlbSBvbiBtYWNPUywgYWRkIGEgbmV3IGltYWdlCisgICAgICAgIG92ZXJsYXkg
aGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGEgdGVtcG9yYXJ5IGltYWdlIGVsZW1lbnQgd2l0aGlu
IHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyByb290IG9mIGEgaG9zdCBpbWFnZS4KKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UuaHRtbAorCisgICAg
ICAgICogZG9tL0ltYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJs
YXk6OmltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5OjppbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VCYWNrZHJvcElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojppc092ZXJsYXlUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6cmVtb3ZlT3ZlcmxheVNvb25JZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6Omluc3RhbGxJbWFnZU92ZXJsYXlTdHls
ZVNoZWV0KToKKworICAgICAgICBQdWxsIG91dCBsb2dpYyBmb3IgaW5zdGFsbGluZyB0aGUgVUEg
c3R5bGUgc2hlZXQgZm9yIGltYWdlIG92ZXJsYXlzIGludG8gYSBoZWxwZXIgbWV0aG9kLCBzbyB0
aGF0IHdlIGNhbiBlbnN1cmUKKyAgICAgICAgdGhlIHN0eWxlc2hlZXQgaW4gYm90aCBjYXNlcyB3
aGVyZSB0aGUgYENyb3BwZWRJbWFnZWAgaXMgaW5zdGFsbGVkIGZpcnN0LCBvciBMaXZlIFRleHQg
aXMgaW5qZWN0ZWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6dXBk
YXRlU3VidHJlZSk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhpcyBtZXRob2QgdG8gbm90IGNvbXBs
ZXRlbHkgcmVtb3ZlIHRoZSBpbWFnZSBvdmVybGF5IHJvb3QgY29udGFpbmVyIGluIHRoZSBjYXNl
IHdoZXJlIHRoZSBMaXZlIFRleHQKKyAgICAgICAgc3VidHJlZSBuZWVkcyB0byBiZSByZWdlbmVy
YXRlZDsgdGhpcyBwcmV2ZW50cyB1cyBmcm9tIGluYWR2ZXJ0ZW50bHkgcmVtb3ZpbmcgdGhlIGNy
b3BwZWQgaW1hZ2Ugb3ZlcmxheSBlbGVtZW50cworICAgICAgICB3aGVuIHVwZGF0aW5nIExpdmUg
VGV4dCBlbGVtZW50cyBpbiB0aGUgVUEgc2hhZG93IHJvb3QuCisKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlT3ZlcmxheTo6Q3JvcHBlZEltYWdlOjppbnN0YWxsKToKKworICAgICAgICBBZGQgYSBt
ZXRob2QgdG8gaW5zdGFsbCBhIGNyb3BwZWQgaW1hZ2Ugb3ZlcmxheSBpbnRvIHRoZSBnaXZlbiBo
b3N0IGVsZW1lbnQuIFRoaXMgY3JlYXRlcyBhIG5ldyBibG9iIFVSTCB1c2luZworICAgICAgICB0
aGUgZ2l2ZW4gaW1hZ2UgZGF0YSBhbmQgTUlNRSB0eXBlLCBhbmQgdXNlcyBpdCB0byBpbnNlcnQg
YW4gaW1hZ2UgZWxlbWVudCB3aXRoaW4gdGhlIGltYWdlIG92ZXJsYXkgcm9vdAorICAgICAgICBj
b250YWluZXIgdGhhdCdzIGFic29sdXRlbHkgcG9zaXRpb25lZCBvdmVyIHRoZSBnaXZlbiBjcm9w
IHJlY3QgKG5vcm1hbGl6ZWQgcmVsYXRpdmUgdG8gdGhlIGltYWdlKS4KKworICAgICAgICBUaGlz
IGluc2VydGVkIGltYWdlIGlzIHByZXNlbnRlZCBvdmVyIGFub3RoZXIgZGltbWluZyBlbGVtZW50
IHRoYXQgZmFkZXMgaW4gYW5kIG91dCBhcyBgc2V0VmlzaWJpbGl0eSgpYCBpcworICAgICAgICBj
YWxsZWQuIEZpbmFsbHksIGBpbnN0YWxsYCByZXR1cm5zIGEgYHVuaXF1ZV9wdHJgIHRvIGEgUkFJ
SSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBmYWRlIHRoZSBjcm9wcGVkIGltYWdlCisgICAg
ICAgIGJhY2tkcm9wIGluIG9yIG91dDsgd2hlbiBkZXN0cm95ZWQsIHRoaXMgUkFJSSBvYmplY3Qg
aW1tZWRpYXRlbHkgZGlzY29ubmVjdHMgYm90aCB0aGUgYmFja2Ryb3AgYW5kIHRoZSBpbWFnZQor
ICAgICAgICBlbGVtZW50LCBhbmQgcmV2b2tlcyB0aGUgdGVtcG9yYXJ5IGJsb2IgVVJMIGNyZWF0
ZWQgZHVyaW5nIGBpbnN0YWxsKClgLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXk6
OkNyb3BwZWRJbWFnZTo6Q3JvcHBlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Zl
cmxheTo6Q3JvcHBlZEltYWdlOjp+Q3JvcHBlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3ZlcmxheTo6Q3JvcHBlZEltYWdlOjpzZXRWaXNpYmlsaXR5KToKKyAgICAgICAgKiBkb20v
SW1hZ2VPdmVybGF5Lmg6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKworICAgICAgICBB
ZGQgYSBgdXNpbmcgVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZDtgIGhlcmUgdG8gbWFrZSBpdCBw
b3NzaWJsZSB0byBjYWxsIGBnZXRFbGVtZW50QnlJZGAgb24gYFNoYWRvd1Jvb3RgCisgICAgICAg
IHdpdGhvdXQgaGF2aW5nIHRvIGNhc3QgdG8gYSBgVHJlZVNjb3BlYC4KKworICAgICAgICAqIGh0
bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAgIChpbWcjaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlKToKKyAgICAgICAgKGRpdiNpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2Ut
YmFja2Ryb3ApOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cG5nRGF0YUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjppbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnVuaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkpOgorCisgICAgICAgIEFk
ZCBpbnRlcm5hbCB0ZXN0aW5nIHN1cHBvcnQgZm9yIHRoZSBjcm9wcGVkIGltYWdlIG92ZXJsYXkg
YnkgYWxsb3dpbmcgbGF5b3V0IHRlc3RzIHRvIGluamVjdCBhbiBpbWFnZSBvdmVybGF5CisgICAg
ICAgIHdpdGggaGFyZC1jb2RlZCBQTkcgZGF0YSBpbnRvIHRoZSBnaXZlbiBlbGVtZW50LgorCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5pZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKToKKwogMjAyMi0wMi0xNiAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFOR0xFIGluY2x1ZGVzIGlu
dGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFkZXIgaW5jbHVkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5jcHAKaW5kZXggZWQ0M2ZlZGE4MTZjMGUyMTI5OGJkMWVhZTJmNDM2ZTk0YmUwZjQ3ZS4u
ODhiOTY4NTNjZTE3OWI5ZmZkY2E1NDY2MzJiZDNhNjY5NGIxZjU3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0ltYWdlT3ZlcmxheS5jcHAKQEAgLTI2LDE2ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkltYWdlT3ZlcmxheS5oIgogCisjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1
ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVk
ZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hp
bGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50
TG9vcC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgpAQCAtNDUsNiAr
NDksNyBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKQEAgLTk2LDYgKzEwMSwxOCBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
aW1hZ2VPdmVybGF5QmxvY2tDbGFzcygpCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlT
SVMpCiAKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJ
ZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGlkZW50aWZpZXIoImltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsK
K30KKworc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUJh
Y2tkcm9wSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBpZGVudGlmaWVyKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1h
Z2UtYmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIGlkZW50aWZpZXI7Cit9CisKIGJvb2wgaGFzT3ZlcmxheShjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkKIHsKICAgICBhdXRvIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKTsK
QEAgLTE3OCw3ICsxOTUsNyBAQCBib29sIGlzT3ZlcmxheVRleHQoY29uc3QgTm9kZSYgbm9kZSkK
ICAgICBpZiAoIWhvc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChSZWZQdHIg
b3ZlcmxheSA9IHN0YXRpY19jYXN0PFRyZWVTY29wZSY+KCpob3N0LT51c2VyQWdlbnRTaGFkb3dS
b290KCkpLmdldEVsZW1lbnRCeUlkKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpKQor
ICAgIGlmIChSZWZQdHIgb3ZlcmxheSA9IGhvc3QtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Z2V0
RWxlbWVudEJ5SWQoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJl
dHVybiBub2RlLmlzRGVzY2VuZGFudE9mKCpvdmVybGF5KTsKIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE5OCw3ICsyMTUsNyBAQCB2b2lkIHJlbW92ZU92ZXJsYXlTb29uSWZOZWVkZWQoSFRNTEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIGlmICghc2hhZG93Um9vdCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAoUmVmUHRyIG92ZXJsYXkgPSBzdGF0aWNfY2FzdDxUcmVlU2Nv
cGUmPigqc2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50
aWZpZXIoKSkpCisgICAgICAgIGlmIChSZWZQdHIgb3ZlcmxheSA9IHNoYWRvd1Jvb3QtPmdldEVs
ZW1lbnRCeUlkKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAg
b3ZlcmxheS0+cmVtb3ZlKCk7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCkBAIC0yMDgs
NyArMjI1LDEzIEBAIHZvaWQgcmVtb3ZlT3ZlcmxheVNvb25JZk5lZWRlZChIVE1MRWxlbWVudCYg
ZWxlbWVudCkKICAgICB9KTsKIH0KIAotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKK3N0YXRp
YyB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXlTdHlsZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3Zlcmxh
eVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNo
ZWV0KSkpOworICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5h
bWVzOjpzdHlsZVRhZywgc2hhZG93Um9vdC5kb2N1bWVudCgpLCBmYWxzZSk7CisgICAgc3R5bGUt
PnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxk
KFdURk1vdmUoc3R5bGUpKTsKK30KIAogSW50UmVjdCBjb250YWluZXJSZWN0KEhUTUxFbGVtZW50
JiBlbGVtZW50KQogewpAQCAtMjIyLDYgKzI0NSw4IEBAIEludFJlY3QgY29udGFpbmVyUmVjdChI
VE1MRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkb3duY2Fz
dDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5yZXBsYWNlZENvbnRlbnRSZWN0KCkpOwogfQogCisj
aWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorCiBzdHJ1Y3QgTGluZUVsZW1lbnRzIHsKICAgICBS
ZWY8SFRNTERpdkVsZW1lbnQ+IGxpbmU7CiAgICAgVmVjdG9yPFJlZjxIVE1MRWxlbWVudD4+IGNo
aWxkcmVuOwpAQCAtMjgwLDYgKzMwNSw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVl
KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSBmYWxzZTsK
ICAgICBpZiAoZWxlbWVudHMucm9vdCkgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkRWxlbWVu
dCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50PigqZWxlbWVudHMucm9vdCkpIHsKICAg
ICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0NsYXNzKCkpCkBAIC0zMDMsNyArMzI5LDcg
QEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgICAgIGVsZW1lbnRzLmxpbmVzLmFw
cGVuZCh7IGNoaWxkRWxlbWVudCwgV1RGTW92ZShsaW5lQ2hpbGRyZW4pLCBjaGlsZHJlbk9mVHlw
ZTxIVE1MQlJFbGVtZW50PihjaGlsZEVsZW1lbnQpLmZpcnN0KCkgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBib29sIGNhblVzZUV4aXN0aW5nRWxlbWVudHMgPSAoWyZdIHsKKyAgICAgICAgY2Fu
VXNlRXhpc3RpbmdFbGVtZW50cyA9IChbJl0gewogICAgICAgICAgICAgaWYgKHJlc3VsdC5kYXRh
RGV0ZWN0b3JzLnNpemUoKSAhPSBlbGVtZW50cy5kYXRhRGV0ZWN0b3JzLnNpemUoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0MCw4ICszNjYsOCBAQCBzdGF0aWMgRWxl
bWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29n
bml0aW9uUmVzdWx0JgogICAgICAgICB9KSgpOwogCiAgICAgICAgIGlmICghY2FuVXNlRXhpc3Rp
bmdFbGVtZW50cykgewotICAgICAgICAgICAgZWxlbWVudHMucm9vdC0+cmVtb3ZlKCk7Ci0gICAg
ICAgICAgICBlbGVtZW50cyA9IHsgfTsKKyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QtPnJlbW92
ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICBlbGVtZW50cyA9IHsgZWxlbWVudHMucm9vdCwgeyB9
LCB7IH0sIHsgfSB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNTAsMjMgKzM3NiwyNSBAQCBz
dGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
VGV4dFJlY29nbml0aW9uUmVzdWx0JgogCiAgICAgUmVmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1
bWVudCgpOwogICAgIFJlZiBzaGFkb3dSb290ID0gZWxlbWVudC5lbnN1cmVVc2VyQWdlbnRTaGFk
b3dSb290KCk7Ci0gICAgaWYgKCFlbGVtZW50cy5yb290KSB7Ci0gICAgICAgIGF1dG8gcm9vdENv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwotICAgICAg
ICByb290Q29udGFpbmVyLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRp
ZmllcigpKTsKLSAgICAgICAgcm9vdENvbnRhaW5lci0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKLSAg
ICAgICAgaWYgKGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJvb3RD
b250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2Vs
ZWN0LCBDU1NWYWx1ZVRleHQpOworICAgIGlmICghY2FuVXNlRXhpc3RpbmdFbGVtZW50cykgewor
ICAgICAgICBpZiAoIWVsZW1lbnRzLnJvb3QpIHsKKyAgICAgICAgICAgIGF1dG8gcm9vdENvbnRh
aW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICAg
ICAgcm9vdENvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50
aWZpZXIoKSk7CisgICAgICAgICAgICByb290Q29udGFpbmVyLT5zZXRUcmFuc2xhdGUoZmFsc2Up
OworICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICByb290Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVUZXh0KTsKIAotICAgICAgICBpZiAobWVkaWFDb250
cm9sc0NvbnRhaW5lcikKLSAgICAgICAgICAgIG1lZGlhQ29udHJvbHNDb250YWluZXItPmFwcGVu
ZENoaWxkKHJvb3RDb250YWluZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaGFkb3dS
b290LT5hcHBlbmRDaGlsZChyb290Q29udGFpbmVyKTsKLSAgICAgICAgZWxlbWVudHMucm9vdCA9
IHJvb3RDb250YWluZXIuY29weVJlZigpOworICAgICAgICAgICAgaWYgKG1lZGlhQ29udHJvbHND
b250YWluZXIpCisgICAgICAgICAgICAgICAgbWVkaWFDb250cm9sc0NvbnRhaW5lci0+YXBwZW5k
Q2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQocm9vdENvbnRhaW5lcik7CisgICAgICAgICAgICBlbGVt
ZW50cy5yb290ID0gcm9vdENvbnRhaW5lci5jb3B5UmVmKCk7CisgICAgICAgIH0KICAgICAgICAg
ZWxlbWVudHMubGluZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHQubGluZXMuc2l6ZSgp
KTsKICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogcmVzdWx0LmxpbmVzKSB7CiAgICAgICAgICAg
ICBhdXRvIGxpbmVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpKTsKICAgICAgICAgICAgIGxpbmVDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92
ZXJsYXlMaW5lQ2xhc3MoKSk7Ci0gICAgICAgICAgICByb290Q29udGFpbmVyLT5hcHBlbmRDaGls
ZChsaW5lQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGVsZW1lbnRzLnJvb3QtPmFwcGVuZENoaWxk
KGxpbmVDb250YWluZXIpOwogICAgICAgICAgICAgTGluZUVsZW1lbnRzIGxpbmVFbGVtZW50cyB7
IGxpbmVDb250YWluZXIsIHsgfSwgeyB9IH07CiAgICAgICAgICAgICBsaW5lRWxlbWVudHMuY2hp
bGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5lLmNoaWxkcmVuLnNpemUoKSk7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8IGxpbmUuY2hp
bGRyZW4uc2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsKQEAgLTM5MSw3ICs0MTksNyBAQCBzdGF0aWMg
RWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJl
Y29nbml0aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1dG8mIGRhdGFEZXRlY3RvciA6IHJlc3Vs
dC5kYXRhRGV0ZWN0b3JzKSB7CiAgICAgICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRhaW5l
ciA9IERhdGFEZXRlY3Rpb246OmNyZWF0ZUVsZW1lbnRGb3JJbWFnZU92ZXJsYXkoZG9jdW1lbnQu
Z2V0KCksIGRhdGFEZXRlY3Rvcik7CiAgICAgICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXIt
PmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzcygpKTsKLSAgICAg
ICAgICAgIHJvb3RDb250YWluZXItPmFwcGVuZENoaWxkKGRhdGFEZXRlY3RvckNvbnRhaW5lcik7
CisgICAgICAgICAgICBlbGVtZW50cy5yb290LT5hcHBlbmRDaGlsZChkYXRhRGV0ZWN0b3JDb250
YWluZXIpOwogICAgICAgICAgICAgZWxlbWVudHMuZGF0YURldGVjdG9ycy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShkYXRhRGV0ZWN0b3JDb250YWluZXIpKTsKICAgICAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTQwMCw3ICs0MjgsNyBAQCBzdGF0aWMgRWxlbWVu
dHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0
aW9uUmVzdWx0JgogICAgICAgICBmb3IgKGF1dG8mIGJsb2NrIDogcmVzdWx0LmJsb2Nrcykgewog
ICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNsYXNzTGlzdCgp
LmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwotICAgICAgICAgICAgcm9vdENvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOworICAgICAgICAgICAgZWxlbWVudHMucm9v
dC0+YXBwZW5kQ2hpbGQoYmxvY2tDb250YWluZXIpOwogICAgICAgICAgICAgYmxvY2tDb250YWlu
ZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgbWFrZVN0cmluZygn
XG4nLCBibG9jay50ZXh0KSkpOwogICAgICAgICAgICAgZWxlbWVudHMuYmxvY2tzLnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKGJsb2NrQ29udGFpbmVyKSk7CiAgICAgICAgIH0KQEAgLTQxMSwxMiAr
NDM5LDggQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICghaGFkRXhpc3RpbmdFbGVtZW50cykgewotICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGlt
YWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKSk7Ci0gICAgICAgIGF1dG8gc3R5bGUgPSBI
VE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZG9jdW1lbnQuZ2V0
KCksIGZhbHNlKTsKLSAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsK
LSAgICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOwotICAgIH0K
KyAgICBpZiAoIWhhZEV4aXN0aW5nRWxlbWVudHMpCisgICAgICAgIGluc3RhbGxJbWFnZU92ZXJs
YXlTdHlsZVNoZWV0KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgcmV0dXJuIGVsZW1lbnRzOwog
fQpAQCAtNjQ5LDUgKzY3Myw4NyBAQCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1
bHQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvbgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCitzdGQ6OnVuaXF1ZV9wdHI8Q3JvcHBlZEltYWdl
PiBDcm9wcGVkSW1hZ2U6Omluc3RhbGwoSFRNTEVsZW1lbnQmIGhvc3QsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBGbG9hdFJlY3Qgbm9ybWFs
aXplZFJlY3QpCit7CisgICAgUmVmIGRvY3VtZW50ID0gaG9zdC5kb2N1bWVudCgpOworICAgIFJl
ZiBzaGFkb3dSb290ID0gaG9zdC5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgUmVm
UHRyIGltYWdlT3ZlcmxheVJvb3QgPSBkeW5hbWljRG93bmNhc3Q8SFRNTERpdkVsZW1lbnQ+KHNo
YWRvd1Jvb3QtPmdldEVsZW1lbnRCeUlkKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkp
KTsKKyAgICBpZiAoIWltYWdlT3ZlcmxheVJvb3QpIHsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9v
dCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBpbWFn
ZU92ZXJsYXlSb290LT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmll
cigpKTsKKyAgICAgICAgaW1hZ2VPdmVybGF5Um9vdC0+c2V0VHJhbnNsYXRlKGZhbHNlKTsKKyAg
ICAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoKmltYWdlT3ZlcmxheVJvb3QpOworICAgICAg
ICBpbnN0YWxsSW1hZ2VPdmVybGF5U3R5bGVTaGVldChzaGFkb3dSb290LmdldCgpKTsKKyAgICB9
CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+
KGhvc3QucmVuZGVyZXIoKSkpCisgICAgICAgIHJlbmRlcmVyLT5zZXRIYXNJbWFnZU92ZXJsYXko
KTsKKworICAgIGF1dG8gY29udGFpbmVyUmVjdCA9IEltYWdlT3ZlcmxheTo6Y29udGFpbmVyUmVj
dChob3N0KTsKKyAgICBhdXRvIGNyb3BSZWN0ID0gbm9ybWFsaXplZFJlY3Q7CisgICAgY3JvcFJl
Y3Quc2NhbGUoY29udGFpbmVyUmVjdC53aWR0aCgpLCBjb250YWluZXJSZWN0LmhlaWdodCgpKTsK
KyAgICBjcm9wUmVjdC5tb3ZlKGNvbnRhaW5lclJlY3QueCgpLCBjb250YWluZXJSZWN0LnkoKSk7
CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZUJhY2tkcm9wID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudC5nZXQoKSk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElkQXR0cmli
dXRlKGltYWdlT3ZlcmxheUNyb3BwZWRJbWFnZUJhY2tkcm9wSWRlbnRpZmllcigpKTsKKyAgICBp
bWFnZU92ZXJsYXlSb290LT5hcHBlbmRDaGlsZChjcm9wcGVkSW1hZ2VCYWNrZHJvcC5nZXQoKSk7
CisKKyAgICBhdXRvIGNyb3BwZWRJbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudC5nZXQoKSk7CisgICAgYXV0byBjcm9wcGVkSW1hZ2VVUkwgPSBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTChkb2N1bWVudC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBpbWFn
ZURhdGEtPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJ
ZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlDcm9wcGVkSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGNy
b3BwZWRJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OnNyY0F0dHIsIGNyb3BwZWRJbWFnZVVSTCk7CisgICAgY3JvcHBlZEltYWdlLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgY3JvcFJlY3QueCgpLCBDU1NVbml0VHlwZTo6
Q1NTX1BYKTsKKyAgICBjcm9wcGVkSW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3AsIGNyb3BSZWN0LnkoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgY3JvcHBl
ZEltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGNyb3BSZWN0
LndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGNyb3BwZWRJbWFnZS0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgY3JvcFJlY3QuaGVpZ2h0KCksIENT
U1VuaXRUeXBlOjpDU1NfUFgpOworICAgIGltYWdlT3ZlcmxheVJvb3QtPmFwcGVuZENoaWxkKGNy
b3BwZWRJbWFnZS5nZXQoKSk7CisKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCAwLjUsIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKworICAgIHJldHVybiBtYWtlVW5pcXVlPENyb3BwZWRJbWFnZT4oZG9jdW1lbnQuZ2V0
KCksIGhvc3QsIGNyb3BwZWRJbWFnZUJhY2tkcm9wLmdldCgpLCBjcm9wcGVkSW1hZ2VVUkwpOwor
fQorCitDcm9wcGVkSW1hZ2U6OkNyb3BwZWRJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxF
bGVtZW50JiBob3N0LCBIVE1MRWxlbWVudCYgY3JvcHBlZEltYWdlQmFja2Ryb3AsIGNvbnN0IFN0
cmluZyYgaW1hZ2VVUkwpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9ob3N0
KGhvc3QpCisgICAgLCBtX2Nyb3BwZWRJbWFnZUJhY2tkcm9wKGNyb3BwZWRJbWFnZUJhY2tkcm9w
KQorICAgICwgbV9pbWFnZVVSTChpbWFnZVVSTCkKK3sKKyAgICBzZXRWaXNpYmlsaXR5KHRydWUp
OworfQorCitDcm9wcGVkSW1hZ2U6On5Dcm9wcGVkSW1hZ2UoKQoreworICAgIGlmIChSZWZQdHIg
ZG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpKQorICAgICAgICBET01VUkw6OnJldm9rZU9iamVj
dFVSTCgqZG9jdW1lbnQsIG1faW1hZ2VVUkwpOworCisgICAgUmVmUHRyIGhvc3QgPSBtX2hvc3Qu
Z2V0KCk7CisgICAgaWYgKCFob3N0KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgc2hh
ZG93Um9vdCA9IGhvc3QtPnNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QgfHwgc2hh
ZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChSZWZQdHIgY3JvcHBlZEltYWdlID0gc2hhZG93Um9vdC0+Z2V0RWxl
bWVudEJ5SWQoaW1hZ2VPdmVybGF5Q3JvcHBlZEltYWdlSWRlbnRpZmllcigpKSkKKyAgICAgICAg
Y3JvcHBlZEltYWdlLT5yZW1vdmUoKTsKKworICAgIGlmIChSZWZQdHIgY3JvcHBlZEltYWdlQmFj
a2Ryb3AgPSBzaGFkb3dSb290LT5nZXRFbGVtZW50QnlJZChpbWFnZU92ZXJsYXlDcm9wcGVkSW1h
Z2VCYWNrZHJvcElkZW50aWZpZXIoKSkpCisgICAgICAgIGNyb3BwZWRJbWFnZUJhY2tkcm9wLT5y
ZW1vdmUoKTsKK30KKwordm9pZCBDcm9wcGVkSW1hZ2U6OnNldFZpc2liaWxpdHkoYm9vbCB2aXNp
YmxlKQoreworICAgIFJlZlB0ciBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IG1fY3JvcHBlZEltYWdl
QmFja2Ryb3AuZ2V0KCk7CisgICAgaWYgKCFjcm9wcGVkSW1hZ2VCYWNrZHJvcCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3AtPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY3JvcHBlZEltYWdlQmFja2Ryb3At
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCB2aXNpYmxlID8gMC41
IDogMCwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbWFn
ZU92ZXJsYXkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbWFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXku
aAppbmRleCAyZjgxNTRiYTM4NWJjMDUyMzE5YjNhYjcyNjUwNDBhYmIwNjQ4OWI2Li43Y2M0NGZj
NjVhNmMxYjlkOWE5ZmMzMzM3ZDBjNjAxOTYzZjM3NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vSW1hZ2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBI
VE1MRWxlbWVudDsKIGNsYXNzIE5vZGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaXNp
YmxlU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CkBAIC01NSw2ICs1OSwyNCBA
QCBlbnVtIGNsYXNzIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA6IGJvb2wgeyBObywgWWVz
IH07CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQo
SFRNTEVsZW1lbnQmLCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmLCBDYWNoZVRleHRSZWNv
Z25pdGlvblJlc3VsdHMgPSBDYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHM6Olllcyk7CiAjZW5k
aWYKIAorY2xhc3MgQ3JvcHBlZEltYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9wcGVkSW1hZ2UpOworcHVibGljOgorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3JvcHBlZEltYWdlPiBpbnN0YWxs
KEhUTUxFbGVtZW50JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgRmxvYXRS
ZWN0KTsKKworICAgIENyb3BwZWRJbWFnZShEb2N1bWVudCYsIEhUTUxFbGVtZW50JiwgSFRNTEVs
ZW1lbnQmLCBjb25zdCBTdHJpbmcmIGltYWdlVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q3Jv
cHBlZEltYWdlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpc2liaWxpdHkoYm9v
bCk7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBX
ZWFrUHRyPEhUTUxFbGVtZW50PiBtX2hvc3Q7CisgICAgV2Vha1B0cjxIVE1MRWxlbWVudD4gbV9j
cm9wcGVkSW1hZ2VCYWNrZHJvcDsKKyAgICBTdHJpbmcgbV9pbWFnZVVSTDsKK307CisKIH0gLy8g
bmFtZXNwYWNlIEltYWdlT3ZlcmxheQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAppbmRleCBhMmU1YWVkY2NhZTdlMDUxYTNhZWRiOTRiMzFmOTNmYzdiNjEy
Y2U4Li5hZDRiMGIzNjZlMDVjYzliY2U2ZWNlM2ViNTdkN2M2MzVjMTUxYzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
U2hhZG93Um9vdCgpOwogCisgICAgdXNpbmcgVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZDsKICAg
ICB1c2luZyBUcmVlU2NvcGU6OnJvb3ROb2RlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3R5bGU6
OlNjb3BlJiBzdHlsZVNjb3BlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9pbWFnZU92ZXJsYXkuY3NzIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VP
dmVybGF5LmNzcwppbmRleCBkMjk2NGMxNzE0NDU5NTE1YmMxYWQ0ODQ2ODMyM2I0NDk5ZWI2ZDA3
Li4yZTc2ZDZjMmRkMmU5NTJmNTg5MjBhMzFmYTdhZTgwMTkxZDllZmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTcxLDMgKzcxLDE4IEBAIGRp
di5pbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0IHsKICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKIH0KKworaW1nI2ltYWdlLW92
ZXJsYXktY3JvcHBlZC1pbWFnZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHBvaW50
ZXItZXZlbnRzOiBub25lOworfQorCitkaXYjaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWJh
Y2tkcm9wIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZDogd2hpdGU7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIHRyYW5zaXRpb246IG9w
YWNpdHkgMC41cyBlYXNlLWluLW91dDsKKyAgICBvcGFjaXR5OiAwOworICAgIHBvaW50ZXItZXZl
bnRzOiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDIyZWEz
MzIzOTBjNWM4MjJhZDM0MjU5MGE0YTFlMGJmMGM1MTlkMDguLmQ1MmY3OWJmMjdkY2M4NmIzYTU4
ZjQwNzkzMDllMTBiNjZlODlmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTUxMzQsNyArNTEzNCwxMiBAQCBib29sIEludGVybmFsczo6cHJpdmF0ZVBsYXllck11dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKQogfQogI2VuZGlmCiAKLSNlbmRpZgorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW50ZXJuYWxzOjpwbmdEYXRhRm9yVGVzdGluZygpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKICNpZiBFTkFCTEUo
VklERU8pCiBib29sIEludGVybmFsczo6aXNNZWRpYUVsZW1lbnRIaWRkZW4oY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgbWVkaWEpCkBAIC01ODc5LDYgKzU4ODQsMjkgQEAgdm9pZCBJbnRlcm5hbHM6
Omluc3RhbGxJbWFnZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPEltYWdlT3Zlcmxh
eUxpbmU+JiYKICNlbmRpZgogfQogCit2b2lkIEludGVybmFsczo6aW5zdGFsbENyb3BwZWRJbWFn
ZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgUmVmPERPTVJlY3RSZWFkT25seT4mJiBub3JtYWxp
emVkQ3JvcFJlY3QpCit7CisgICAgUmVmUHRyIGh0bWxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxFbGVtZW50PihlbGVtZW50KTsKKyAgICBpZiAoIWh0bWxFbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGltYWdlRGF0YSA9IHBuZ0RhdGFGb3JUZXN0aW5nKCk7CisgICAg
aWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3JvcHBlZEltYWdlT3Zl
cmxheSA9IEltYWdlT3ZlcmxheTo6Q3JvcHBlZEltYWdlOjppbnN0YWxsKCpodG1sRWxlbWVudCwg
aW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS9wbmciX3MsIHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eCgpKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+eSgpKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRDcm9wUmVjdC0+d2lkdGgoKSksCisgICAgICAgIHN0YXRpY19j
YXN0PGZsb2F0Pihub3JtYWxpemVkQ3JvcFJlY3QtPmhlaWdodCgpKQorICAgIH0pOworfQorCit2
b2lkIEludGVybmFsczo6dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpCit7CisgICAgbV9j
cm9wcGVkSW1hZ2VPdmVybGF5ID0gbnVsbHB0cjsKK30KKwogYm9vbCBJbnRlcm5hbHM6Omhhc0Fj
dGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERBVEFfREVU
RUNUSU9OKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCA2NmZmZWI5MzViY2YyZjYxNDY2ZjliY2Y1ZDcwOGJjZDUxZGQzNGMwLi40MGEz
N2QxZmNkMmNhMjMwOTI4N2VmMDgzOWVjNmNmZjE2ZTc4ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFy
a2VyOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU291cmNl
QnVmZmVyOwogY2xhc3MgU3RyaW5nQ2FsbGJhY2s7CiBjbGFzcyBTdHlsZVNoZWV0OwpAQCAtMTUx
LDYgKzE1MiwxMCBAQCBjbGFzcyBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I7CiAjZW5kaWYK
ICNlbmRpZgogCituYW1lc3BhY2UgSW1hZ2VPdmVybGF5IHsKK2NsYXNzIENyb3BwZWRJbWFnZTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKQEAgLTk1MCw2
ICs5NTUsOCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZvaWQgaW5zdGFsbEltYWdlT3Zlcmxh
eShFbGVtZW50JiwgVmVjdG9yPEltYWdlT3ZlcmxheUxpbmU+JiYsIFZlY3RvcjxJbWFnZU92ZXJs
YXlCbG9jaz4mJiA9IHsgfSwgVmVjdG9yPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4mJiA9IHsg
fSk7CisgICAgdm9pZCBpbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheShFbGVtZW50JiwgUmVmPERP
TVJlY3RSZWFkT25seT4mJik7CisgICAgdm9pZCB1bmluc3RhbGxDcm9wcGVkSW1hZ2VPdmVybGF5
KCk7CiAgICAgYm9vbCBoYXNBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQoKSBjb25zdDsKIAog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKQEAgLTEyNzUsNiArMTI4Miw4IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIEREU2Nhbm5lclJlc3VsdCAqZmFrZURhdGFEZXRlY3RvclJlc3VsdEZvclRl
c3RpbmcoKTsKICNlbmRpZgogCisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBuZ0Rh
dGFGb3JUZXN0aW5nKCk7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKQEAgLTEzMDgsNiAr
MTMxNyw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbj4gbV90ZXN0aW5nTW9kZVRv
a2VuOwogI2VuZGlmCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VPdmVybGF5OjpDcm9wcGVk
SW1hZ2U+IG1fY3JvcHBlZEltYWdlT3ZlcmxheTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZjEyMjIxNjAyMmIzM2Fj
MDdhOTEzZjg3YWMwMjcyOWU2Mzc4ZTM3Li45NjUzNDNkODQ2ZDA1Zjg5ZmFhYzM5MDJiMTA1MWZj
MjY1MDA3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05NzgsNiAr
OTc4LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2Jq
ZWN0OwogICAgIFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQ/IHRleHRSZWNvZ25pdGlvbkNhbmRpZGF0ZTsKICAgICBbQ29uZGl0aW9uYWw9SU1B
R0VfQU5BTFlTSVNdIHVuZGVmaW5lZCByZXF1ZXN0VGV4dFJlY29nbml0aW9uKEVsZW1lbnQgZWxl
bWVudCwgVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgaW5zdGFsbEltYWdl
T3ZlcmxheShFbGVtZW50IGVsZW1lbnQsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUxpbmU+IGxpbmVz
LCBvcHRpb25hbCBzZXF1ZW5jZTxJbWFnZU92ZXJsYXlCbG9jaz4gYmxvY2tzID0gW10sIG9wdGlv
bmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4gZGF0YURldGVjdG9ycyA9IFtd
KTsKKyAgICB1bmRlZmluZWQgaW5zdGFsbENyb3BwZWRJbWFnZU92ZXJsYXkoRWxlbWVudCBlbGVt
ZW50LCBET01SZWN0UmVhZE9ubHkgbm9ybWFsaXplZENyb3BSZWN0KTsKKyAgICB1bmRlZmluZWQg
dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGhhc0FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodDsKIAogICAgIGJvb2xlYW4gdXNp
bmdBcHBsZUludGVybmFsU0RLKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4
IDQ5MmYxNmY1YjNiZDE0ZmUxZDAwNmVlNTEyYTg1NTRhZDI2MGUwNjQuLmYzZDA4ZmQwNzA2YzA1
MmRhYzcwY2I3MjI5OWMyNDZhN2E3Njk1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0
ICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbXBvcnQgIlJhbmdlLmgiCisjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgpAQCAtMTk3LDQgKzE5OCwx
MCBAQCBERFNjYW5uZXJSZXN1bHQgKkludGVybmFsczo6ZmFrZURhdGFEZXRlY3RvclJlc3VsdEZv
clRlc3RpbmcoKQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQogCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBJbnRlcm5hbHM6OnBuZ0RhdGFGb3JUZXN0aW5nKCkKK3sKKyAgICBOU0J1
bmRsZSAqd2ViQ29yZUJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJv
bVN0cmluZyhAIldlYkNvcmVCdW5kbGVGaW5kZXIiKV07CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFt3ZWJDb3JlQnVuZGxlIHBhdGhGb3JSZXNvdXJj
ZTpAIm1pc3NpbmdJbWFnZSIgb2ZUeXBlOkAicG5nIl0pOwogfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNGI4OGE0NWYyM2NkMGY0YzMxYWNlOWI1NTIxNmM0MmIxMzI4N2NkNi4u
MTIyYmRmZDZiZGIwMDA5MzdkYzI1NjhiNTQxNGI1ZjYwNjYwZjJiZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTAyLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtMaXZlIFRleHRdIEFkZCBhIG1lY2hhbmlzbSB0byBpbmplY3QgaW1hZ2Vz
IGludG8gaW1hZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjg0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkaXR5YSBLZWVydGhp
LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSBuZXcgY3Jv
cHBlZCBpbWFnZSBvdmVybGF5IGNvZGUuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJl
Y29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1j
cm9wcGVkLWltYWdlLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAyLTE2ICBaaXJhbiBTdW4gIDx6c3Vu
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gUmVtb3ZlIGV4dHJhIGZvcm0g
ZGF0YSBtYWRlIGJ5IGltYWdlIHN1Ym1pdCBidXR0b24gd2hlbiAidmFsdWUiIGF0dHJpYnV0ZSBp
cyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNv
Z25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWNyb3BwZWQt
aW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MWJlN2NlNTYxYmZiNjI5NGRkMDRkZjU3
MzJlOWUyODFjYjljMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorCitQQVNTIGNyb3BwZWRJbWFnZSBpcyBub24tbnVsbC4KK1BB
U1MgY3JvcHBlZEltYWdlQmFja2Ryb3AgaXMgbm9uLW51bGwuCitQQVNTIGNyb3BwZWRJbWFnZVJl
Y3QueCBpcyAxMDAKK1BBU1MgY3JvcHBlZEltYWdlUmVjdC55IGlzIDEwMAorUEFTUyBjcm9wcGVk
SW1hZ2VSZWN0LndpZHRoIGlzIDIwMAorUEFTUyBjcm9wcGVkSW1hZ2VSZWN0LmhlaWdodCBpcyAy
MDAKK1BBU1MgY3JvcHBlZEltYWdlIGlzIG51bGwKK1BBU1MgY3JvcHBlZEltYWdlQmFja2Ryb3Ag
aXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24v
aW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MGI2NWMwMGE0MWU3YjM3ZTVjMmMxNzk5Nzg4YzA1ZDNjZWJjNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdl
LW92ZXJsYXktY3JvcHBlZC1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2dy
ZWVuLTQwMHg0MDAucG5nIj48L2ltZz4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlw
dD4KK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7CisgICAgY29uc3QgaW1hZ2UgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKworICAgIGludGVybmFscy5pbnN0YWxsQ3Jv
cHBlZEltYWdlT3ZlcmxheShpbWFnZSwgbmV3IERPTVJlY3RSZWFkT25seSgwLjI1LCAwLjI1LCAw
LjUsIDAuNSkpOworCisgICAgY3JvcHBlZEltYWdlID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1h
Z2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNyb3BwZWQtaW1hZ2UiKTsKKyAgICBj
cm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5zaGFkb3dSb290KGltYWdlKS5nZXRFbGVt
ZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdlLWJhY2tkcm9wIik7CisgICAgc2hv
dWxkQmVOb25OdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBzaG91bGRCZU5vbk51bGwoImNyb3Bw
ZWRJbWFnZUJhY2tkcm9wIik7CisKKyAgICBjcm9wcGVkSW1hZ2VSZWN0ID0gY3JvcHBlZEltYWdl
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIHNob3VsZEJlKCJjcm9wcGVkSW1hZ2VSZWN0
LngiLCAiMTAwIik7CisgICAgc2hvdWxkQmUoImNyb3BwZWRJbWFnZVJlY3QueSIsICIxMDAiKTsK
KyAgICBzaG91bGRCZSgiY3JvcHBlZEltYWdlUmVjdC53aWR0aCIsICIyMDAiKTsKKyAgICBzaG91
bGRCZSgiY3JvcHBlZEltYWdlUmVjdC5oZWlnaHQiLCAiMjAwIik7CisKKyAgICBpbnRlcm5hbHMu
dW5pbnN0YWxsQ3JvcHBlZEltYWdlT3ZlcmxheSgpOworCisgICAgY3JvcHBlZEltYWdlID0gaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLmdldEVsZW1lbnRCeUlkKCJpbWFnZS1vdmVybGF5LWNy
b3BwZWQtaW1hZ2UiKTsKKyAgICBjcm9wcGVkSW1hZ2VCYWNrZHJvcCA9IGludGVybmFscy5zaGFk
b3dSb290KGltYWdlKS5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utb3ZlcmxheS1jcm9wcGVkLWltYWdl
LWJhY2tkcm9wIik7CisgICAgc2hvdWxkQmVOdWxsKCJjcm9wcGVkSW1hZ2UiKTsKKyAgICBzaG91
bGRCZU51bGwoImNyb3BwZWRJbWFnZUJhY2tkcm9wIik7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>