<?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>82803</bug_id>
          
          <creation_ts>2012-03-30 16:08:26 -0700</creation_ts>
          <short_desc>CSS Shaders: Custom filters painting is broken</short_desc>
          <delta_ts>2012-04-24 15:48:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84460</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>592624</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-03-30 16:08:26 -0700</bug_when>
    <thetext>After https://bugs.webkit.org/show_bug.cgi?id=80323 the custom shaders filters painting is broken.

That&apos;s because of the missing bool affectsOpacity() const and bool movesPixels() const on the CustomFilterOperation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604887</commentid>
    <comment_count>1</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-18 10:56:28 -0700</bug_when>
    <thetext>Also the shaders are not loaded anymore because the FilterEffectRenderer dies before any load event can be received.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605175</commentid>
    <comment_count>2</comment_count>
      <attachid>137791</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-18 15:51:15 -0700</bug_when>
    <thetext>Created attachment 137791
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606218</commentid>
    <comment_count>3</comment_count>
      <attachid>137791</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-19 17:21:16 -0700</bug_when>
    <thetext>Comment on attachment 137791
Patch V1

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

One concern is that this adds more functionality to RenderLayer, which as discussed in today&apos;s WebKit meeting is probably not a good architectural direction.

The code otherwise seems fine, and I&apos;d be willing to r+ it if there are no other reviewers with more experience in this area who want to look at it.

&gt; Source/WebCore/rendering/RenderLayer.h:902
&gt; +#if ENABLE(CSS_SHADERS) &amp;&amp; ENABLE(WEBGL)

Did you mean to add ENABLE(WEBGL) here? It&apos;s the only #if clause in the new code referencing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606623</commentid>
    <comment_count>4</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-20 09:15:39 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=137791&amp;action=review

&gt; One concern is that this adds more functionality to RenderLayer, which as discussed in today&apos;s WebKit meeting is probably not a good architectural direction.

Yes, it does. I&apos;m not sure about how functionality can be split, but at least memory can be allocated on demand instead. I think I can move m_filter and a couple of more related fields to a different structure and only allocate it when needed.

I&apos;ve added the following bug:
https://bugs.webkit.org/show_bug.cgi?id=84460

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:902
&gt;&gt; +#if ENABLE(CSS_SHADERS) &amp;&amp; ENABLE(WEBGL)
&gt; 
&gt; Did you mean to add ENABLE(WEBGL) here? It&apos;s the only #if clause in the new code referencing it.

No this an error I will fix it. I don&apos;t want to limit the loading notifications, because platforms might choose to implement it without WebGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606631</commentid>
    <comment_count>5</comment_count>
      <attachid>137791</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-20 09:24:08 -0700</bug_when>
    <thetext>Comment on attachment 137791
Patch V1

OK, sounds good. Please upload a new patch when available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608921</commentid>
    <comment_count>6</comment_count>
      <attachid>138617</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 12:14:41 -0700</bug_when>
    <thetext>Created attachment 138617
Patch V2

Moved the implementation to RenderLayerFilterInfo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608928</commentid>
    <comment_count>7</comment_count>
      <attachid>138619</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 12:18:47 -0700</bug_when>
    <thetext>Created attachment 138619
Patch V3

Fixed the previous review comment about the WEBGL macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608958</commentid>
    <comment_count>8</comment_count>
      <attachid>138619</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-24 12:49:36 -0700</bug_when>
    <thetext>Comment on attachment 138619
Patch V3

Attachment 138619 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12525317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608979</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 13:13:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 138619 [details])
&gt; Attachment 138619 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/12525317

Looks like I&apos;m missing an ifdef. I will post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608988</commentid>
    <comment_count>10</comment_count>
      <attachid>138630</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 13:27:45 -0700</bug_when>
    <thetext>Created attachment 138630
Patch V4

Fixed the ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609008</commentid>
    <comment_count>11</comment_count>
      <attachid>138630</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-24 13:49:19 -0700</bug_when>
    <thetext>Comment on attachment 138630
Patch V4

This looks good to me; better than earlier revisions. Though I&apos;m not an expert in the filter code, setting r=me. Alex, since you&apos;re a committer, I&apos;m not touching the cq? bit, so that you can decide whether you want to get a review from someone else as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609018</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 13:59:02 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 138630 [details])
&gt; This looks good to me; better than earlier revisions. Though I&apos;m not an expert in the filter code, setting r=me. Alex, since you&apos;re a committer, I&apos;m not touching the cq? bit, so that you can decide whether you want to get a review from someone else as well.

Thanks for the R+. It&apos;s mostly CSS shaders code moving from RenderLayer to RenderLayerFilterInfo. I think Dean already knows about this, so it should be ok to commit it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609167</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 15:46:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/115123.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609171</commentid>
    <comment_count>14</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-04-24 15:48:17 -0700</bug_when>
    <thetext>Thumbs up here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137791</attachid>
            <date>2012-04-18 15:51:15 -0700</date>
            <delta_ts>2012-04-24 12:14:41 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug82803.patch</filename>
            <type>text/plain</type>
            <size>22430</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NWU0NzM4Li5lYjhjZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTAg
QEAKIDIwMTItMDQtMTggIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgog
CisgICAgICAgIENTUyBTaGFkZXJzOiBDdXN0b20gZmlsdGVycyBwYWludGluZyBpcyBicm9rZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJ
biB0aGlzIHBhdGNoIEkgbW92ZWQgQ1NTIFNoYWRlcnMgZmlsZSBsb2FkaW5nIG5vdGlmaWNhdGlv
bnMgZnJvbSBGaWx0ZXJFZmZlY3RSZW5kZXJlciB0byBSZW5kZXJMYXllci4KKyAgICAgICAgVGhh
dCdzIGJlY2F1c2UgRmlsdGVyRWZmZWN0UmVuZGVyZXIgaXMgb25seSB1c2VkIHdoZW4gcnVubmlu
ZyB0aGUgZmlsdGVycyBpbiB0aGUgc29mdHdhcmUgcGlwZWxpbmUKKyAgICAgICAgYW5kIGJlY2F1
c2UgRmlsdGVyRWZmZWN0UmVuZGVyZXIgaGFzIGEgdmVyeSBzaG9ydCBsaWZldGltZS4gQmVjYXVz
ZSBvZiBhIHJlY2VudCBjaGFuZ2UgRmlsdGVyRWZmZWN0UmVuZGVyZXIgYWN0dWFsbHkKKyAgICAg
ICAgZ2V0cyBkZWxldGVkIGlmIHRoZSBzaGFkZXIgaXMgbm90IGxvYWRlZCwgc28gaXQgZG9lc24n
dCBsaXZlIHRoYXQgbXVjaCB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBzaGFkZXIKKyAgICAgICAg
d2FzIGFjdHVhbGx5IGxvYWRlZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gcmVtb3ZlZCB0aGUg
RmlsdGVyRWZmZWN0T2JzZXJ2ZXIsIHRoYXQgd2FzIG9ubHkgdXNlZCB0byBub3RpZnkgdGhlIFJl
bmRlckxheWVyIGFib3V0IHRoZSBsb2FkZWQgc2hhZGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gVGhpcyBpcyBtYWtpbmcgZXhpc3RpbmcgQ1NTIFNoYWRlcnMgdGVzdHMgcGFzcyBhZ2Fpbi4K
KyAgICAgICAgQ2Fubm90IHVuLXNraXAgb24gTWFjIGZvciBub3cgYmVjYXVzZSB0aGUgZmVhdHVy
ZSBpcyBjb21waWxlIHRpbWUgZGlzYWJsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IFRoaXMgd2FzIHRoZSBvbmx5IHByb2plY3QgcmVmZXJlbmNpbmcg
RmlsdGVyRWZmZWN0T2JzZXJ2ZXIuCisgICAgICAgIEFsc28gbWFkZSBDdXN0b21GaWx0ZXJQcm9n
cmFtQ2xpZW50LmggYSBwcml2YXRlIGhlYWRlciBiZWNhdXNlIGl0J3MgcmVmZXJlbmNlZCBmcm9t
IFJlbmRlckxheWVyLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YWZmZWN0c09wYWNpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjptb3Zlc1BpeGVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5
RmlsdGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdE9ic2VydmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVmZmVj
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWls
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVh
dGUpOgorICAgICAgICAoRmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRl
ckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZp
bHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKworMjAx
Mi0wNC0xOCAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKICAgICAg
ICAgVW5yZXZpZXdlZCwgdHJ5aW5nIHRvIGZpeCBRVCBidWlsZC4KICAgICAgICAgCiAgICAgICAg
IEl0IHdhcyB1c2luZyBhIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpwcmVwYXJlIHRoYXQgY2hhbmdl
ZCB0byBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkIGluIDExNDUyOS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNWI4ODA0
Li42OWU5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDQxLDcgKzE0NDEsNyBAQAogCQk1MDM4QkU0MTE0NzJBRDk4MDA5
NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MDM4QkUzRjE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmgg
Ki87IH07CiAJCTUwM0QwQ0FBMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0Qw
Q0E3MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCAqLzsgfTsKIAkJ
NTAzRDBDQUIxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dyYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0E4MTRCNUIwODcw
MEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoKTsgfTsgfTsKLQkJNTAzRDBDQUMxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRl
clByb2dyYW1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xp
ZW50LmggKi87IH07CisJCTUwM0QwQ0FDMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQ
cm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUw
M0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0FEMTRCNUIw
QkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVu
ZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLzsg
fTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEUxM0NG
MTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OwpAQCAtMTQ1NSw3ICsx
NDU1LDYgQEAKIAkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY4
MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07CiAJCTUwRDQwNjEx
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdENDlERTAwRDMwQkI1
IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CiAJCTUwRDQwNjEyMTQ3RDQ5REUwMEQz
MEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0
ZXJTaGFkZXIuaCAqLzsgfTsKLQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVm
ZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MEU1NjZE
NjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyog
Q1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBD
YWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAq
LzsgfTsKQEAgLTg0NDEsNyArODQ0MCw2IEBACiAJCTUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1
c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3Vz
dG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNoYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDQwNjEwMTQ3RDQ5REUwMEQz
MEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclNo
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEQ0MDY3QzE0N0U0MEQ4MDBE
MzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjA3MjksNyArMjA3MjcsNiBAQAogCQkJCTkzOTJGMTRCMEFEMTg2MUIwMDY5MUJENCAvKiBD
b3VudGVyTm9kZS5oICovLAogCQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIzNCAvKiBFbGxpcHNp
c0JveC5jcHAgKi8sCiAJCQkJQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8qIEVsbGlwc2lzQm94
LmggKi8sCi0JCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggKi8sCiAJCQkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcCAqLywKIAkJCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuaCAqLywKIAkJCQlBOENGRjA0ODBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRU
YWJsZUxheW91dC5jcHAgKi8sCkBAIC0yMjczNCw3ICsyMjczMSw2IEBACiAJCQkJQkM1RUI2OUYw
RTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcy
RjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDOTI1
MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTMxM0Y2NjE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjZFMTQ5OTc5MEQwMENERDNBNCAvKiBG
aWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjcwMTQ5OTc5MEQwMENE
RDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck9wZXJhdGlvbi5oCmluZGV4IGY4ZTNmYTEuLmUyZTcwNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaApAQCAtODEsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmly
dHVhbCB+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCk7CiAgICAgCisgICAgdmlydHVhbCBib29sIGFm
ZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBt
b3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggM2JkMWU3
Mi4uY2RjNzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKQEAg
LTExMiw3ICsxMTIsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1
cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwgY29uc3QgRgogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKIHZvaWQgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjphcHBseUZpbHRlcnMoY29u
c3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiByZW5kZXJlciA9
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVyPiByZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAg
ICByZW5kZXJlci0+c2V0U291cmNlSW1hZ2VSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGNvbnRlbnRUZXh0dXJlLnNpemUoKSkpOwogCiAgICAgLy8gVGhlIGRvY3VtZW50IHBhcmFt
ZXRlciBpcyBvbmx5IG5lZWRlZCBmb3IgQ1NTIHNoYWRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NTczNDk3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RPYnNlcnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0g
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
Ci0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWx0ZXJFZmZlY3RPYnNlcnZl
cl9oCi0jZGVmaW5lIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKLQotI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWx0ZXJFZmZlY3RPYnNlcnZl
ciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0T2JzZXJ2ZXIoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsdGVyTmVlZHNSZXBhaW50KCkgPSAwOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQotCi0jZW5kaWYg
Ly8gRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggYmU0MzkwNC4uYTM3N2Y5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRkVEcm9wU2hhZG93LmgiCiAjaW5jbHVkZSAiRkVH
YXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJGRU1lcmdlLmgiCi0jaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogCkBAIC04NCw5ICs4Myw4IEBAIHN0YXRpYyBib29sIGlzQ1NTQ3VzdG9t
RmlsdGVyRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQpCiB9CiAjZW5kaWYKIAotRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBv
YnNlcnZlcikKLSAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCi0gICAgLCBtX3RvcE91dHNldCgw
KQorRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKKyAgICA6IG1f
dG9wT3V0c2V0KDApCiAgICAgLCBtX3JpZ2h0T3V0c2V0KDApCiAgICAgLCBtX2JvdHRvbU91dHNl
dCgwKQogICAgICwgbV9sZWZ0T3V0c2V0KDApCkBAIC05OSw5ICs5Nyw2IEBAIEZpbHRlckVmZmVj
dFJlbmRlcmVyOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcihGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAKIEZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQog
ewotI2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRz
KCk7Ci0jZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
aW5wdXRDb250ZXh0KCkKQEAgLTExMywxMCArMTA4LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
cGUKIHsKICNpZiAhRU5BQkxFKENTU19TSEFERVJTKSB8fCAhRU5BQkxFKFdFQkdMKQogICAgIFVO
VVNFRF9QQVJBTShkb2N1bWVudCk7Ci0jZWxzZQotICAgIEN1c3RvbUZpbHRlclByb2dyYW1MaXN0
IGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zOwogI2VuZGlmCi0KICAgICBtX2hhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiAg
ICAgaWYgKG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKQogICAgICAgICBvcGVyYXRpb25zLmdl
dE91dHNldHMobV90b3BPdXRzZXQsIG1fcmlnaHRPdXRzZXQsIG1fYm90dG9tT3V0c2V0LCBtX2xl
ZnRPdXRzZXQpOwpAQCAtMjcxLDggKzI2Myw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmls
dGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVy
T3BlcmF0aW9uKTsKICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9n
cmFtID0gY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5wcm9ncmFtKCk7Ci0gICAgICAgICAgICBjYWNo
ZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5hcHBlbmQocHJvZ3JhbSk7Ci0gICAgICAgICAgICBwcm9n
cmFtLT5hZGRDbGllbnQodGhpcyk7CiAgICAgICAgICAgICBpZiAocHJvZ3JhbS0+aXNMb2FkZWQo
KSkgewogICAgICAgICAgICAgICAgIGVmZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhp
cywgZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCksIHByb2dyYW0sIGN1c3Rv
bUZpbHRlck9wZXJhdGlvbi0+cGFyYW1ldGVycygpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygp
LCBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPm1lc2hDb2x1bW5zKCksCkBAIC0yOTcsMTEgKzI4Nyw2
IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpICYmIEVOQUJMRShXRUJHTCkKLSAgICByZW1vdmVDdXN0b21GaWx0ZXJD
bGllbnRzKCk7Ci0gICAgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5zd2FwKGNhY2hlZEN1
c3RvbUZpbHRlclByb2dyYW1zKTsKLSNlbmRpZgotCiAgICAgLy8gSWYgd2UgZGlkbid0IG1ha2Ug
YW55IGVmZmVjdHMsIHRlbGwgb3VyIGNhbGxlciB3ZSBhcmUgbm90IHZhbGlkCiAgICAgaWYgKCFw
cmV2aW91c0VmZmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI0LDE5ICszMDksNiBA
QCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlDdXN0b21G
aWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3RvbUZpbHRlclByb2dyYW0qKQotewotICAgIG1fb2JzZXJ2
ZXItPmZpbHRlck5lZWRzUmVwYWludCgpOwotfQotCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVy
OjpyZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCkKLXsKLSAgICBmb3IgKEN1c3RvbUZpbHRlclBy
b2dyYW1MaXN0OjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5i
ZWdpbigpLCBlbmQgPSBtX2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpOyBpdGVyICE9
IGVuZDsgKytpdGVyKQotICAgICAgICBpdGVyLT5nZXQoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwot
fQotI2VuZGlmCi0KIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmFsbG9jYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoKQogewogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBo
YXMgYmVlbiBidWlsdCwgYW5kIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCAyYTU3NTc1Li45NGY5MDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtNDEsMTcgKzQx
LDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNsaWVudC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RMaXN0OwogY2xhc3MgQ2Fj
aGVkU2hhZGVyOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKIGNsYXNzIERvY3VtZW50Owot
Y2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBSZW5kZXJMYXllcjsKIApAQCAtODAsMTYgKzc1LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhdmVGaWx0ZXJFZmZlY3Q7CiB9OwogCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6IHB1
YmxpYyBGaWx0ZXIKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgLCBwdWJsaWMgQ3VzdG9t
RmlsdGVyUHJvZ3JhbUNsaWVudAotI2VuZGlmCi17CitjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoRmls
dGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWx0ZXJFZmZlY3RSZW5kZXJlcihvYnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbHRlckVmZmVjdFJlbmRlcmVyKCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3Qp
CkBAIC0xMTksMTMgKzExMCw2IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3Vy
Y2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKIAogcHJpdmF0ZToKLSNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCi0gICAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIEN1c3RvbUZpbHRlclByb2dy
YW1DbGllbnQgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDdXN0b21GaWx0ZXJQ
cm9ncmFtTG9hZGVkKEN1c3RvbUZpbHRlclByb2dyYW0qKTsKLSAgICAKLSAgICB2b2lkIHJlbW92
ZUN1c3RvbUZpbHRlckNsaWVudHMoKTsKLSNlbmRpZgotCiAgICAgdm9pZCBzZXRNYXhFZmZlY3RS
ZWN0cyhjb25zdCBGbG9hdFJlY3QmIGVmZmVjdFJlY3QpCiAgICAgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZWZmZWN0cy5zaXplKCk7ICsraSkgewpAQCAtMTQwLDcgKzEyNCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEZpbHRlckVmZmVj
dFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKik7CisgICAgRmlsdGVyRWZmZWN0UmVuZGVy
ZXIoKTsKICAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIAogICAgIEZs
b2F0UmVjdCBtX3NvdXJjZURyYXdpbmdSZWdpb247CkBAIC0xNDgsMTIgKzEzMiw2IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgRmlsdGVyRWZmZWN0TGlzdCBtX2VmZmVjdHM7CiAgICAgUmVmUHRyPFNv
dXJjZUdyYXBoaWM+IG1fc291cmNlR3JhcGhpYzsKLSAgICBGaWx0ZXJFZmZlY3RPYnNlcnZlciog
bV9vYnNlcnZlcjsgLy8gTm8gbmVlZCBmb3IgYSBzdHJvbmcgcmVmZXJlbmNlcyBoZXJlLiBJdCBv
d25zIHVzLgotICAgIAotI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQot
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiA+IEN1c3RvbUZp
bHRlclByb2dyYW1MaXN0OwotICAgIEN1c3RvbUZpbHRlclByb2dyYW1MaXN0IG1fY2FjaGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbXM7Ci0jZW5kaWYKICAgICAKICAgICBpbnQgbV90b3BPdXRzZXQ7CiAg
ICAgaW50IG1fcmlnaHRPdXRzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCA2NjgxMzI3Li4zOGIyNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTEwOCw2ICsxMDgsMTEgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2VuZGlm
CisKICNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIC8vIEZJ
WE1FOiBib3JkZXIgcmFkaXVzIGNsaXBwaW5nIHRyaWdnZXJzIHRvby1zbG93IHBhdGggb24gQ2hy
b21pdW0KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg2NgpA
QCAtMjQyLDcgKzI0NywxMSBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKCkKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgY2xlYXJCYWNraW5nKHRydWUpOwogI2VuZGlm
Ci0gICAgCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVy
Q2xpZW50cygpOworI2VuZGlmCisKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBubyBsaW5nZXJp
bmcgY2xpcCByZWN0cy4KICAgICBBU1NFUlQoIW1fY2xpcFJlY3RzKTsKICAgICAKQEAgLTQ4NTQs
OSArNDg2MywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZWZsZWN0aW9uU3R5bGUoKQog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3Zl
RmlsdGVyRWZmZWN0KCkKIHsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdXBkYXRlQ3Vz
dG9tRmlsdGVyQ2xpZW50cygpOworI2VuZGlmCiAgICAgaWYgKHBhaW50c1dpdGhGaWx0ZXJzKCkg
JiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkuc2l6ZSgpKSB7CiAgICAgICAgIGlmICgh
bV9maWx0ZXIpIHsKLSAgICAgICAgICAgIG1fZmlsdGVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgICAgIG1fZmlsdGVyID0gRmlsdGVyRWZmZWN0UmVuZGVy
ZXI6OmNyZWF0ZSgpOwogICAgICAgICAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0g
cmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZEZpbHRl
cnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7CiAgICAgICAgICAgICBt
X2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKICAgICAgICAgfQpAQCAt
NDg2OSwxMiArNDg4MSw0MyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRl
ckVmZmVjdCgpCiAgICAgICAgIG1fZmlsdGVyID0gMDsKICAgICB9CiB9CisjZW5kaWYKIAotdm9p
ZCBSZW5kZXJMYXllcjo6ZmlsdGVyTmVlZHNSZXBhaW50KCkKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCit2b2lkIFJlbmRlckxheWVyOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1
c3RvbUZpbHRlclByb2dyYW0qKQogewogICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+c2V0TmVlZHNT
dHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAgICAgcmVuZGVyZXIoKS0+cmVwYWlu
dCgpOwogfQorCit2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKCkK
K3sKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zID0gcmVuZGVyZXIoKS0+
c3R5bGUoKS0+ZmlsdGVyKCk7CisgICAgaWYgKCFvcGVyYXRpb25zLnNpemUoKSkgeworICAgICAg
ICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3QgY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXM7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uID0gb3BlcmF0aW9ucy5h
dChpKTsKKyAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpICE9
IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsK
KyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBjdXN0b21GaWx0
ZXJPcGVyYXRpb24tPnByb2dyYW0oKTsKKyAgICAgICAgY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3Jh
bXMuYXBwZW5kKHByb2dyYW0pOworICAgICAgICBwcm9ncmFtLT5hZGRDbGllbnQodGhpcyk7Cisg
ICAgfQorICAgIC8vIFJlbW92ZSB0aGUgb2xkIGNsaWVudHMgaGVyZSwgYWZ0ZXIgd2UndmUgYWRk
ZWQgdGhlIG5ldyBvbmVzLCBzbyB0aGF0IHdlIGRvbid0IGZsaWNrZXIgaWYgc29tZSBzaGFkZXJz
IGFyZSB1bmNoYW5nZWQuCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOworICAgIG1f
Y2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuc3dhcChjYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
cyk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlbW92ZUN1c3RvbUZpbHRlckNsaWVudHMoKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFt
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5hdChp
KS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMu
Y2xlYXIoKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDgzNTQzYmMuLjZhMDhjMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00NCw4ICs0NCw4IEBACiAjaWZuZGVm
IFJlbmRlckxheWVyX2gKICNkZWZpbmUgUmVuZGVyTGF5ZXJfaAogCi0jaWYgRU5BQkxFKENTU19G
SUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCIKICNlbmRp
ZgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpAQCAtMjEy
LDggKzIxMiw4IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBSZW5kZXJMYXllciA6IHB1YmxpYyBT
Y3JvbGxhYmxlQXJlYQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICAsIHB1YmxpYyBGaWx0
ZXJFZmZlY3RPYnNlcnZlcgorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAsIHB1YmxpYyBD
dXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50CiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTUzNyw3ICs1
MzcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXMzRFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNmb3JtICYmICFtX3RyYW5zZm9ybS0+aXNBZmZpbmUoKTsgfQogCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQotICAgIHZpcnR1YWwgdm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKTsKICAg
ICBib29sIGhhc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPmhhc0ZpbHRlcigp
OyB9CiAjZWxzZQogICAgIGJvb2wgaGFzRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTczMyw2ICs3MzIsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU9yUmVtb3ZlRmls
dGVyRWZmZWN0KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAvLyBJ
bXBsZW1lbnRhdGlvbiBvZiB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudCBpbnRlcmZhY2Uu
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQoQ3VzdG9t
RmlsdGVyUHJvZ3JhbSopOworICAgIAorICAgIHZvaWQgdXBkYXRlQ3VzdG9tRmlsdGVyQ2xpZW50
cygpOworICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOworI2VuZGlmCisKICAg
ICB2b2lkIHBhcmVudENsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJSZWdpb24qLCBDbGlwUmVjdHMmLCBib29sIHRlbXBvcmFyeUNsaXBSZWN0cyA9IGZhbHNlLCBP
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXpl
KSBjb25zdDsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kQ2xpcFJlY3QoY29uc3QgUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgYm9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMsIE92
ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUp
IGNvbnN0OwogICAgIExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQoY29uc3QgUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZp
b3IpOwpAQCAtODkxLDYgKzg5OCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdFJlbmRlcmVyPiBtX2ZpbHRlcjsKICAgICBMYXlvdXRSZWN0IG1fZmlsdGVyUmVwYWludFJl
Y3Q7CiAjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQor
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiA+IEN1c3RvbUZp
bHRlclByb2dyYW1MaXN0OworICAgIEN1c3RvbUZpbHRlclByb2dyYW1MaXN0IG1fY2FjaGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKICAgICAgICAgCiAgICAgLy8gUmVuZGVyZXJzIHRv
IGhvbGQgb3VyIGN1c3RvbSBzY3JvbGwgY29ybmVyIGFuZCByZXNpemVyLgogICAgIFJlbmRlclNj
cm9sbGJhclBhcnQqIG1fc2Nyb2xsQ29ybmVyOwo=
</data>
<flag name="review"
          id="142964"
          type_id="1"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138617</attachid>
            <date>2012-04-24 12:14:41 -0700</date>
            <delta_ts>2012-04-24 12:18:47 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug82803_1.patch</filename>
            <type>text/plain</type>
            <size>24738</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTJmM2UwLi45MzM5NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMDQtMjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIENTUyBTaGFkZXJzOiBDdXN0b20gZmlsdGVycyBwYWludGluZyBpcyBicm9rZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCBJIG1vdmVkIENTUyBTaGFkZXJzIGZpbGUgbG9hZGluZyBub3RpZmljYXRpb25zIGZyb20g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdG8gdGhlIG5ldyBSZW5kZXJMYXllckZpbHRlckluZm8uCisg
ICAgICAgIFRoYXQncyBiZWNhdXNlIEZpbHRlckVmZmVjdFJlbmRlcmVyIGlzIG9ubHkgdXNlZCB3
aGVuIHJ1bm5pbmcgdGhlIGZpbHRlcnMgaW4gdGhlIHNvZnR3YXJlIHBpcGVsaW5lCisgICAgICAg
IGFuZCBoYXMgYSB2ZXJ5IHNob3J0IGxpZmV0aW1lLiBEdWUgdG8gYSByZWNlbnQgY2hhbmdlIEZp
bHRlckVmZmVjdFJlbmRlcmVyIGFjdHVhbGx5CisgICAgICAgIGdldHMgZGVsZXRlZCBpZiB0aGUg
c2hhZGVyIGlzIG5vdCBsb2FkZWQsIHNvIGl0IGRvZXNuJ3QgbGl2ZSB0aGF0IG11Y2ggdG8gYmUg
bm90aWZpZWQgd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIHdhcyBhY3R1YWxseSBsb2FkZWQuCisK
KyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSBGaWx0ZXJFZmZlY3RPYnNlcnZlciwgdGhhdCB3YXMg
b25seSB1c2VkIHRvIG5vdGlmeSB0aGUgUmVuZGVyTGF5ZXIgYWJvdXQgdGhlIGxvYWRlZCBzaGFk
ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIG1ha2luZyBleGlzdGluZyBDU1Mg
U2hhZGVycyB0ZXN0cyBwYXNzIGFnYWluLgorICAgICAgICBDYW5ub3QgdW4tc2tpcCBvbiBNYWMg
Zm9yIG5vdyBiZWNhdXNlIHRoZSBmZWF0dXJlIGlzIGNvbXBpbGUgdGltZSBkaXNhYmxlZC4KKyAg
ICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmFmZmVjdHNPcGFjaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6bW92ZXNQaXhlbHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6Omhhc0N1c3RvbUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0
ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVyRWZmZWN0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6
CisgICAgICAgIChGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJl
bW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpub3RpZnlDdXN0b21GaWx0
ZXJQcm9ncmFtTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVtb3ZlQ3VzdG9tRmlsdGVyQ2xp
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJMYXllckZpbHRlckluZm8pOgorCiAyMDEy
LTA0LTIyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIGluc3RhbGxpbmcgbG9jYWxpemVkU3RyaW5ncy5qcyBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3YmViMDViLi5jZTM3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQxLDcgKzE0NDEsNyBAQAogCQk1MDM4QkU0
MTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkUzRjE0NzJBRDk4MDA5NUUwRDEgLyogQ2Fj
aGVkU2hhZGVyLmggKi87IH07CiAJCTUwM0QwQ0FBMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21G
aWx0ZXJQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwM0QwQ0E3MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmNw
cCAqLzsgfTsKIAkJNTAzRDBDQUIxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dy
YW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0Qw
Q0E4MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKLQkJNTAzRDBDQUMxNEI1QjA4NzAwRjMyRjU3IC8q
IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0
ZXJQcm9ncmFtQ2xpZW50LmggKi87IH07CisJCTUwM0QwQ0FDMTRCNUIwODcwMEYzMkY1NyAvKiBD
dXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUw
M0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAz
MTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OwpA
QCAtMTQ1Nyw3ICsxNDU3LDYgQEAKIAkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3Rv
bUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07
CiAJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdE
NDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CiAJCTUwRDQwNjEy
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLzsgfTsKLQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1
IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0
T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRC
MDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZB
MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTg0NTMsNyArODQ1Miw2IEBACiAJCTUwRDQwNUY4MTQ3RDMx
RjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ0MDYwRjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDQwNjEw
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBhdGggPSBmaWx0ZXJzL0N1
c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEQ0MDY3
QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA3NjAsNyArMjA3NTgsNiBAQAogCQkJCTkzOTJGMTRCMEFEMTg2MUIw
MDY5MUJENCAvKiBDb3VudGVyTm9kZS5oICovLAogCQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIz
NCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCiAJCQkJQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmggKi8sCi0JCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRl
ckVmZmVjdE9ic2VydmVyLmggKi8sCiAJCQkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKIAkJCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAg
LyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywKIAkJCQlBOENGRjA0ODBBMTU0RjA5MDAwQTQy
MzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8sCkBAIC0yMjc2Myw3ICsyMjc2MCw2IEBACiAJ
CQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMxM0Y2NjE0NDNCMzVGMDA2RTJBOTAgLyogRmls
dGVyRWZmZWN0UmVuZGVyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjZFMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGY4ZTNmYTEuLjM1MmUyNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdmlydHVhbCB+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCk7CiAgICAgCisgICAgdmly
dHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IDk0MjI1NzcuLjgyMWJj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtODcsNiArODcsMTcgQEAgYm9vbCBG
aWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCitib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0N1c3RvbUZpbHRlcigpIGNvbnN0Cit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fb3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRl
ck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091
dHNldHMoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25z
LnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmluZGV4IDhjZWNhNzguLmJlMWIw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC02OSw2ICs2OSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgYm9vbCBoYXNDdXN0b21GaWx0ZXIoKSBjb25zdDsKKyNlbmRpZgogcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAzYmQxZTcyLi5jZGM3MjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
dm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHJlbmRlcmVyID0gRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+
IHJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIHJlbmRlcmVy
LT5zZXRTb3VyY2VJbWFnZVJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY29udGVu
dFRleHR1cmUuc2l6ZSgpKSk7CiAKICAgICAvLyBUaGUgZG9jdW1lbnQgcGFyYW1ldGVyIGlzIG9u
bHkgbmVlZGVkIGZvciBDU1Mgc2hhZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdE9ic2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1
NzM0OTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dE9ic2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKLSNkZWZp
bmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdE9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RPYnNlcnZlcigpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBGaWx0ZXJF
ZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MDQxNjhhLi44OWJlZmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1
ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3RPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKQEAgLTg0LDkgKzgzLDggQEAgc3RhdGljIGJvb2wgaXNDU1NDdXN0b21GaWx0ZXJFbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCkKIH0KICNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQot
ICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAsIG1fdG9wT3V0c2V0KDApCitGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQorICAgIDogbV90b3BPdXRzZXQo
MCkKICAgICAsIG1fcmlnaHRPdXRzZXQoMCkKICAgICAsIG1fYm90dG9tT3V0c2V0KDApCiAgICAg
LCBtX2xlZnRPdXRzZXQoMCkKQEAgLTk5LDkgKzk3LDYgQEAgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKIAog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6On5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpCiB7Ci0jaWYgRU5B
QkxFKENTU19TSEFERVJTKQotICAgIHJlbW92ZUN1c3RvbUZpbHRlckNsaWVudHMoKTsKLSNlbmRp
ZgogfQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRl
eHQoKQpAQCAtMTEzLDggKzEwOCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxk
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiB7CiAjaWYg
IUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVOQUJMRShXRUJHTCkKICAgICBVTlVTRURfUEFSQU0o
ZG9jdW1lbnQpOwotI2Vsc2UKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdCBjYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtczsKICNlbmRpZgogCiAgICAgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwpAQCAtMjcxLDggKzI2
NCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tRmlsdGVyT3BlcmF0
aW9uLT5wcm9ncmFtKCk7Ci0gICAgICAgICAgICBjYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5h
cHBlbmQocHJvZ3JhbSk7Ci0gICAgICAgICAgICBwcm9ncmFtLT5hZGRDbGllbnQodGhpcyk7CiAg
ICAgICAgICAgICBpZiAocHJvZ3JhbS0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQtPnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCksIHByb2dyYW0sIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+cGFyYW1l
dGVycygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXJPcGVyYXRpb24t
Pm1lc2hDb2x1bW5zKCksCkBAIC0yOTcsMTEgKzI4OCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJM
RShXRUJHTCkKLSAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7Ci0gICAgbV9jYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcy5zd2FwKGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKTsKLSNl
bmRpZgotCiAgICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNh
bGxlciB3ZSBhcmUgbm90IHZhbGlkCiAgICAgaWYgKCFwcmV2aW91c0VmZmVjdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzI0LDE5ICszMTAsNiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12b2lkIEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3Rv
bUZpbHRlclByb2dyYW0qKQotewotICAgIG1fb2JzZXJ2ZXItPmZpbHRlck5lZWRzUmVwYWludCgp
OwotfQotCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0ZXJDbGll
bnRzKCkKLXsKLSAgICBmb3IgKEN1c3RvbUZpbHRlclByb2dyYW1MaXN0OjppdGVyYXRvciBpdGVy
ID0gbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5iZWdpbigpLCBlbmQgPSBtX2NhY2hlZEN1
c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBp
dGVyLT5nZXQoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotI2VuZGlmCi0KIHZvaWQgRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIC8v
IEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRl
eCAyYTU3NTc1Li44Njk3NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtNDEsMTcgKzQxLDEyIEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oIgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVj
dD4gPiBGaWx0ZXJFZmZlY3RMaXN0OwogY2xhc3MgQ2FjaGVkU2hhZGVyOwogY2xhc3MgQ3VzdG9t
RmlsdGVyUHJvZ3JhbTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIApAQCAtODEs
MTUgKzc2LDEyIEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6
IHB1YmxpYyBGaWx0ZXIKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgLCBwdWJsaWMgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudAotI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckVmZmVjdFJlbmRlcmVyKG9ic2VydmVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCkKQEAgLTExOSwxMyArMTExLDYgQEAgcHVibGljOgogICAgIExheW91dFJl
Y3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcml2YXRlOgot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudCBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQoQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOwotICAgIAot
ICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOwotI2VuZGlmCi0KICAgICB2b2lk
IHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKICAgICB7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZmZlY3RzLnNpemUoKTsgKytpKSB7CkBA
IC0xNDAsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqKTsKKyAgICBGaWx0
ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7
CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKQEAgLTE0OCwxMiAr
MTMzLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsK
ICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwotICAgIEZpbHRlckVm
ZmVjdE9ic2VydmVyKiBtX29ic2VydmVyOyAvLyBObyBuZWVkIGZvciBhIHN0cm9uZyByZWZlcmVu
Y2VzIGhlcmUuIEl0IG93bnMgdXMuCi0gICAgCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclByb2dy
YW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3Q7Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxp
c3QgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtczsKLSNlbmRpZgogICAgIAogICAgIGludCBt
X3RvcE91dHNldDsKICAgICBpbnQgbV9yaWdodE91dHNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGU0MGU4ODAuLjZjMTBlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDg3Myw2ICs0ODczLDEzIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKICAgICAgICAgcmVtb3Zl
RmlsdGVySW5mb0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLmhh
c0N1c3RvbUZpbHRlcigpKQorICAgICAgICBlbnN1cmVGaWx0ZXJJbmZvKCktPnVwZGF0ZUN1c3Rv
bUZpbHRlckNsaWVudHMocmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkpOworICAgIGVsc2Ug
aWYgKGhhc0ZpbHRlckluZm8oKSkKKyAgICAgICAgZmlsdGVySW5mbygpLT5yZW1vdmVDdXN0b21G
aWx0ZXJDbGllbnRzKCk7CisjZW5kaWYKICAgICAKICAgICBpZiAoIXBhaW50c1dpdGhGaWx0ZXJz
KCkpIHsKICAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIHRoZSB3aG9sZSBmaWx0ZXIgaW5mbyBoZXJl
LCBiZWNhdXNlIHdlIG1pZ2h0IHVzZSBpdApAQCAtNDg4NCw3ICs0ODkxLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgIAogICAgIFJlbmRlckxh
eWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsKICAgICBpZiAo
IWZpbHRlckluZm8tPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
OwogICAgICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2Rl
KTsKICAgICAgICAgZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoZmlsdGVyUmVuZGVyZXIucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggY2JlNDQzMi4u
M2Q3YTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwLDcg
KzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllckZpbHRlckluZm8uaCIKICNlbmRpZgogCkBAIC0yMTIsMTEgKzIxMSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07CiAKLWNsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICwgcHVibGljIEZp
bHRlckVmZmVjdE9ic2VydmVyCi0jZW5kaWYKLXsKK2NsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGlj
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmNwcAppbmRleCAwNDc5YzJhLi4zN2Q3M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcApAQCAtMzUsNiArMzUsMTEgQEAK
ICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBSZW5kZXJMYXll
ckZpbHRlckluZm86OnNfZmlsdGVyTWFwID0gMDsKQEAgLTg4LDcgKzkzLDkgQEAgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvOjpSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqIGxheWVyKQog
CiBSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8oKQogewotICAg
IC8vIEtlZXBpbmcgdGhlIGRlc3RydWN0b3IgaGVyZSBiZWNhdXNlIHRoZXJlJ3MgYSByZWYgdG8g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdGhhdCBtaWdodCBnZXQgZGVsZXRlZC4KKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOworI2VuZGlmCiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpzZXRSZW5kZXJlcihQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVyPiByZW5kZXJlcikKQEAgLTk2LDYgKzEwMyw0MSBAQCB2b2lkIFJl
bmRlckxheWVyRmlsdGVySW5mbzo6c2V0UmVuZGVyZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RS
ZW5kZXJlcj4gcmVuZGVyZQogICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgCiB9CiAKK3ZvaWQg
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1
c3RvbUZpbHRlclByb2dyYW0qKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2xh
eWVyLT5yZW5kZXJlcigpOworICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCit7CisgICAgaWYgKCFvcGVyYXRpb25z
LnNpemUoKSkgeworICAgICAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3QgY2FjaGVkQ3VzdG9t
RmlsdGVyUHJvZ3JhbXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0
aW9uID0gb3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+Z2V0
T3BlcmF0aW9uVHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmls
dGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHBy
b2dyYW0gPSBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnByb2dyYW0oKTsKKyAgICAgICAgY2FjaGVk
Q3VzdG9tRmlsdGVyUHJvZ3JhbXMuYXBwZW5kKHByb2dyYW0pOworICAgICAgICBwcm9ncmFtLT5h
ZGRDbGllbnQodGhpcyk7CisgICAgfQorICAgIC8vIFJlbW92ZSB0aGUgb2xkIGNsaWVudHMgaGVy
ZSwgYWZ0ZXIgd2UndmUgYWRkZWQgdGhlIG5ldyBvbmVzLCBzbyB0aGF0IHdlIGRvbid0IGZsaWNr
ZXIgaWYgc29tZSBzaGFkZXJzIGFyZSB1bmNoYW5nZWQuCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVy
Q2xpZW50cygpOworICAgIG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuc3dhcChjYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcyk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpy
ZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2Fj
aGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuYXQoaSktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBt
X2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCAyYjcwNWU2Li42
ZWI5ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5oCkBAIC0zNywxNSArMzcsMjQgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNp
bmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlcjsKK2NsYXNzIEZpbHRlck9w
ZXJhdGlvbnM7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlckxheWVyRmlsdGVySW5m
bzsKIAogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvKj4gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwOwogICAgIAotY2xhc3MgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvIHsKK2NsYXNzIFJlbmRlckxheWVyRmlsdGVySW5mbworI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKKyAgICA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50CisjZW5k
aWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJ
bmZvRm9yUmVuZGVyTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICBzdGF0aWMgUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvKiBjcmVhdGVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lZWRlZChS
ZW5kZXJMYXllciopOwpAQCAtNTcsNiArNjYsMTYgQEAgcHVibGljOgogICAgIAogICAgIEZpbHRl
ckVmZmVjdFJlbmRlcmVyKiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0
KCk7IH0KICAgICB2b2lkIHNldFJlbmRlcmVyKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+KTsKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgLy8gSW1wbGVtZW50YXRp
b24gb2YgdGhlIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQgaW50ZXJmYWNlLgorICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3RvbUZpbHRlclByb2dy
YW0qKTsKKworICAgIHZvaWQgdXBkYXRlQ3VzdG9tRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CisgICAgdm9pZCByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisjZW5k
aWYKKworICAgIAogcHJpdmF0ZToKICAgICBSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5
ZXIqKTsKICAgICB+UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKCk7CkBAIC02Niw2ICs4NSwxMSBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gbV9yZW5kZXJlcjsKICAg
ICBMYXlvdXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OwogICAgIAorI2lmIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgRU5BQkxFKFdFQkdMKQorICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiA+IEN1c3RvbUZpbHRlclByb2dyYW1MaXN0OworICAgIEN1c3RvbUZpbHRl
clByb2dyYW1MaXN0IG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXM7CisjZW5kaWYKKyAgICAK
ICAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBzX2ZpbHRlck1hcDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138619</attachid>
            <date>2012-04-24 12:18:47 -0700</date>
            <delta_ts>2012-04-24 13:27:45 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug82803_2.patch</filename>
            <type>text/plain</type>
            <size>24721</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTJmM2UwLi45MzM5NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMDQtMjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIENTUyBTaGFkZXJzOiBDdXN0b20gZmlsdGVycyBwYWludGluZyBpcyBicm9rZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCBJIG1vdmVkIENTUyBTaGFkZXJzIGZpbGUgbG9hZGluZyBub3RpZmljYXRpb25zIGZyb20g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdG8gdGhlIG5ldyBSZW5kZXJMYXllckZpbHRlckluZm8uCisg
ICAgICAgIFRoYXQncyBiZWNhdXNlIEZpbHRlckVmZmVjdFJlbmRlcmVyIGlzIG9ubHkgdXNlZCB3
aGVuIHJ1bm5pbmcgdGhlIGZpbHRlcnMgaW4gdGhlIHNvZnR3YXJlIHBpcGVsaW5lCisgICAgICAg
IGFuZCBoYXMgYSB2ZXJ5IHNob3J0IGxpZmV0aW1lLiBEdWUgdG8gYSByZWNlbnQgY2hhbmdlIEZp
bHRlckVmZmVjdFJlbmRlcmVyIGFjdHVhbGx5CisgICAgICAgIGdldHMgZGVsZXRlZCBpZiB0aGUg
c2hhZGVyIGlzIG5vdCBsb2FkZWQsIHNvIGl0IGRvZXNuJ3QgbGl2ZSB0aGF0IG11Y2ggdG8gYmUg
bm90aWZpZWQgd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIHdhcyBhY3R1YWxseSBsb2FkZWQuCisK
KyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSBGaWx0ZXJFZmZlY3RPYnNlcnZlciwgdGhhdCB3YXMg
b25seSB1c2VkIHRvIG5vdGlmeSB0aGUgUmVuZGVyTGF5ZXIgYWJvdXQgdGhlIGxvYWRlZCBzaGFk
ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIG1ha2luZyBleGlzdGluZyBDU1Mg
U2hhZGVycyB0ZXN0cyBwYXNzIGFnYWluLgorICAgICAgICBDYW5ub3QgdW4tc2tpcCBvbiBNYWMg
Zm9yIG5vdyBiZWNhdXNlIHRoZSBmZWF0dXJlIGlzIGNvbXBpbGUgdGltZSBkaXNhYmxlZC4KKyAg
ICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmFmZmVjdHNPcGFjaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6bW92ZXNQaXhlbHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6Omhhc0N1c3RvbUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0
ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVyRWZmZWN0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6
CisgICAgICAgIChGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJl
bW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpub3RpZnlDdXN0b21GaWx0
ZXJQcm9ncmFtTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVtb3ZlQ3VzdG9tRmlsdGVyQ2xp
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJMYXllckZpbHRlckluZm8pOgorCiAyMDEy
LTA0LTIyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIGluc3RhbGxpbmcgbG9jYWxpemVkU3RyaW5ncy5qcyBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3YmViMDViLi5jZTM3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQxLDcgKzE0NDEsNyBAQAogCQk1MDM4QkU0
MTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkUzRjE0NzJBRDk4MDA5NUUwRDEgLyogQ2Fj
aGVkU2hhZGVyLmggKi87IH07CiAJCTUwM0QwQ0FBMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21G
aWx0ZXJQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwM0QwQ0E3MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmNw
cCAqLzsgfTsKIAkJNTAzRDBDQUIxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dy
YW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0Qw
Q0E4MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKLQkJNTAzRDBDQUMxNEI1QjA4NzAwRjMyRjU3IC8q
IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0
ZXJQcm9ncmFtQ2xpZW50LmggKi87IH07CisJCTUwM0QwQ0FDMTRCNUIwODcwMEYzMkY1NyAvKiBD
dXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUw
M0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAz
MTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OwpA
QCAtMTQ1Nyw3ICsxNDU3LDYgQEAKIAkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3Rv
bUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07
CiAJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdE
NDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CiAJCTUwRDQwNjEy
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLzsgfTsKLQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1
IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0
T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRC
MDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZB
MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTg0NTMsNyArODQ1Miw2IEBACiAJCTUwRDQwNUY4MTQ3RDMx
RjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ0MDYwRjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDQwNjEw
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBhdGggPSBmaWx0ZXJzL0N1
c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEQ0MDY3
QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA3NjAsNyArMjA3NTgsNiBAQAogCQkJCTkzOTJGMTRCMEFEMTg2MUIw
MDY5MUJENCAvKiBDb3VudGVyTm9kZS5oICovLAogCQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIz
NCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCiAJCQkJQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmggKi8sCi0JCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRl
ckVmZmVjdE9ic2VydmVyLmggKi8sCiAJCQkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKIAkJCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAg
LyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywKIAkJCQlBOENGRjA0ODBBMTU0RjA5MDAwQTQy
MzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8sCkBAIC0yMjc2Myw3ICsyMjc2MCw2IEBACiAJ
CQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMxM0Y2NjE0NDNCMzVGMDA2RTJBOTAgLyogRmls
dGVyRWZmZWN0UmVuZGVyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjZFMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGY4ZTNmYTEuLjM1MmUyNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdmlydHVhbCB+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCk7CiAgICAgCisgICAgdmly
dHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IDk0MjI1NzcuLjgyMWJj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtODcsNiArODcsMTcgQEAgYm9vbCBG
aWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCitib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0N1c3RvbUZpbHRlcigpIGNvbnN0Cit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fb3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRl
ck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091
dHNldHMoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25z
LnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmluZGV4IDhjZWNhNzguLmJlMWIw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC02OSw2ICs2OSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgYm9vbCBoYXNDdXN0b21GaWx0ZXIoKSBjb25zdDsKKyNlbmRpZgogcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAzYmQxZTcyLi5jZGM3MjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
dm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHJlbmRlcmVyID0gRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+
IHJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIHJlbmRlcmVy
LT5zZXRTb3VyY2VJbWFnZVJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY29udGVu
dFRleHR1cmUuc2l6ZSgpKSk7CiAKICAgICAvLyBUaGUgZG9jdW1lbnQgcGFyYW1ldGVyIGlzIG9u
bHkgbmVlZGVkIGZvciBDU1Mgc2hhZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdE9ic2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1
NzM0OTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dE9ic2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKLSNkZWZp
bmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdE9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RPYnNlcnZlcigpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBGaWx0ZXJF
ZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MDQxNjhhLi44OWJlZmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1
ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3RPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKQEAgLTg0LDkgKzgzLDggQEAgc3RhdGljIGJvb2wgaXNDU1NDdXN0b21GaWx0ZXJFbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCkKIH0KICNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQot
ICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAsIG1fdG9wT3V0c2V0KDApCitGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQorICAgIDogbV90b3BPdXRzZXQo
MCkKICAgICAsIG1fcmlnaHRPdXRzZXQoMCkKICAgICAsIG1fYm90dG9tT3V0c2V0KDApCiAgICAg
LCBtX2xlZnRPdXRzZXQoMCkKQEAgLTk5LDkgKzk3LDYgQEAgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKIAog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6On5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpCiB7Ci0jaWYgRU5B
QkxFKENTU19TSEFERVJTKQotICAgIHJlbW92ZUN1c3RvbUZpbHRlckNsaWVudHMoKTsKLSNlbmRp
ZgogfQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRl
eHQoKQpAQCAtMTEzLDggKzEwOCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxk
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiB7CiAjaWYg
IUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVOQUJMRShXRUJHTCkKICAgICBVTlVTRURfUEFSQU0o
ZG9jdW1lbnQpOwotI2Vsc2UKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdCBjYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtczsKICNlbmRpZgogCiAgICAgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwpAQCAtMjcxLDggKzI2
NCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tRmlsdGVyT3BlcmF0
aW9uLT5wcm9ncmFtKCk7Ci0gICAgICAgICAgICBjYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5h
cHBlbmQocHJvZ3JhbSk7Ci0gICAgICAgICAgICBwcm9ncmFtLT5hZGRDbGllbnQodGhpcyk7CiAg
ICAgICAgICAgICBpZiAocHJvZ3JhbS0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQtPnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCksIHByb2dyYW0sIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+cGFyYW1l
dGVycygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXJPcGVyYXRpb24t
Pm1lc2hDb2x1bW5zKCksCkBAIC0yOTcsMTEgKzI4OCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJM
RShXRUJHTCkKLSAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7Ci0gICAgbV9jYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcy5zd2FwKGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKTsKLSNl
bmRpZgotCiAgICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNh
bGxlciB3ZSBhcmUgbm90IHZhbGlkCiAgICAgaWYgKCFwcmV2aW91c0VmZmVjdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzI0LDE5ICszMTAsNiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12b2lkIEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3Rv
bUZpbHRlclByb2dyYW0qKQotewotICAgIG1fb2JzZXJ2ZXItPmZpbHRlck5lZWRzUmVwYWludCgp
OwotfQotCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0ZXJDbGll
bnRzKCkKLXsKLSAgICBmb3IgKEN1c3RvbUZpbHRlclByb2dyYW1MaXN0OjppdGVyYXRvciBpdGVy
ID0gbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5iZWdpbigpLCBlbmQgPSBtX2NhY2hlZEN1
c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBp
dGVyLT5nZXQoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotI2VuZGlmCi0KIHZvaWQgRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIC8v
IEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRl
eCAyYTU3NTc1Li44Njk3NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtNDEsMTcgKzQxLDEyIEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oIgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVj
dD4gPiBGaWx0ZXJFZmZlY3RMaXN0OwogY2xhc3MgQ2FjaGVkU2hhZGVyOwogY2xhc3MgQ3VzdG9t
RmlsdGVyUHJvZ3JhbTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIApAQCAtODEs
MTUgKzc2LDEyIEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6
IHB1YmxpYyBGaWx0ZXIKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgLCBwdWJsaWMgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudAotI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckVmZmVjdFJlbmRlcmVyKG9ic2VydmVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCkKQEAgLTExOSwxMyArMTExLDYgQEAgcHVibGljOgogICAgIExheW91dFJl
Y3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcml2YXRlOgot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudCBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQoQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOwotICAgIAot
ICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOwotI2VuZGlmCi0KICAgICB2b2lk
IHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKICAgICB7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZmZlY3RzLnNpemUoKTsgKytpKSB7CkBA
IC0xNDAsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqKTsKKyAgICBGaWx0
ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7
CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKQEAgLTE0OCwxMiAr
MTMzLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsK
ICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwotICAgIEZpbHRlckVm
ZmVjdE9ic2VydmVyKiBtX29ic2VydmVyOyAvLyBObyBuZWVkIGZvciBhIHN0cm9uZyByZWZlcmVu
Y2VzIGhlcmUuIEl0IG93bnMgdXMuCi0gICAgCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclByb2dy
YW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3Q7Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxp
c3QgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtczsKLSNlbmRpZgogICAgIAogICAgIGludCBt
X3RvcE91dHNldDsKICAgICBpbnQgbV9yaWdodE91dHNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGU0MGU4ODAuLjZjMTBlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDg3Myw2ICs0ODczLDEzIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKICAgICAgICAgcmVtb3Zl
RmlsdGVySW5mb0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLmhh
c0N1c3RvbUZpbHRlcigpKQorICAgICAgICBlbnN1cmVGaWx0ZXJJbmZvKCktPnVwZGF0ZUN1c3Rv
bUZpbHRlckNsaWVudHMocmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkpOworICAgIGVsc2Ug
aWYgKGhhc0ZpbHRlckluZm8oKSkKKyAgICAgICAgZmlsdGVySW5mbygpLT5yZW1vdmVDdXN0b21G
aWx0ZXJDbGllbnRzKCk7CisjZW5kaWYKICAgICAKICAgICBpZiAoIXBhaW50c1dpdGhGaWx0ZXJz
KCkpIHsKICAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIHRoZSB3aG9sZSBmaWx0ZXIgaW5mbyBoZXJl
LCBiZWNhdXNlIHdlIG1pZ2h0IHVzZSBpdApAQCAtNDg4NCw3ICs0ODkxLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgIAogICAgIFJlbmRlckxh
eWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsKICAgICBpZiAo
IWZpbHRlckluZm8tPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
OwogICAgICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2Rl
KTsKICAgICAgICAgZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoZmlsdGVyUmVuZGVyZXIucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggY2JlNDQzMi4u
M2Q3YTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwLDcg
KzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllckZpbHRlckluZm8uaCIKICNlbmRpZgogCkBAIC0yMTIsMTEgKzIxMSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07CiAKLWNsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICwgcHVibGljIEZp
bHRlckVmZmVjdE9ic2VydmVyCi0jZW5kaWYKLXsKK2NsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGlj
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmNwcAppbmRleCAwNDc5YzJhLi4zN2Q3M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcApAQCAtMzUsNiArMzUsMTEgQEAK
ICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBSZW5kZXJMYXll
ckZpbHRlckluZm86OnNfZmlsdGVyTWFwID0gMDsKQEAgLTg4LDcgKzkzLDkgQEAgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvOjpSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqIGxheWVyKQog
CiBSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8oKQogewotICAg
IC8vIEtlZXBpbmcgdGhlIGRlc3RydWN0b3IgaGVyZSBiZWNhdXNlIHRoZXJlJ3MgYSByZWYgdG8g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdGhhdCBtaWdodCBnZXQgZGVsZXRlZC4KKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOworI2VuZGlmCiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpzZXRSZW5kZXJlcihQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVyPiByZW5kZXJlcikKQEAgLTk2LDYgKzEwMyw0MSBAQCB2b2lkIFJl
bmRlckxheWVyRmlsdGVySW5mbzo6c2V0UmVuZGVyZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RS
ZW5kZXJlcj4gcmVuZGVyZQogICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgCiB9CiAKK3ZvaWQg
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1
c3RvbUZpbHRlclByb2dyYW0qKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2xh
eWVyLT5yZW5kZXJlcigpOworICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCit7CisgICAgaWYgKCFvcGVyYXRpb25z
LnNpemUoKSkgeworICAgICAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3QgY2FjaGVkQ3VzdG9t
RmlsdGVyUHJvZ3JhbXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0
aW9uID0gb3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+Z2V0
T3BlcmF0aW9uVHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmls
dGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHBy
b2dyYW0gPSBjdXN0b21GaWx0ZXJPcGVyYXRpb24tPnByb2dyYW0oKTsKKyAgICAgICAgY2FjaGVk
Q3VzdG9tRmlsdGVyUHJvZ3JhbXMuYXBwZW5kKHByb2dyYW0pOworICAgICAgICBwcm9ncmFtLT5h
ZGRDbGllbnQodGhpcyk7CisgICAgfQorICAgIC8vIFJlbW92ZSB0aGUgb2xkIGNsaWVudHMgaGVy
ZSwgYWZ0ZXIgd2UndmUgYWRkZWQgdGhlIG5ldyBvbmVzLCBzbyB0aGF0IHdlIGRvbid0IGZsaWNr
ZXIgaWYgc29tZSBzaGFkZXJzIGFyZSB1bmNoYW5nZWQuCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVy
Q2xpZW50cygpOworICAgIG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuc3dhcChjYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcyk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpy
ZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2Fj
aGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuYXQoaSktPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBt
X2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaAppbmRleCAyYjcwNWU2Li44
NmE5YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5oCkBAIC0zNywxNSArMzcsMjQgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNp
bmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlcjsKK2NsYXNzIEZpbHRlck9w
ZXJhdGlvbnM7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlckxheWVyRmlsdGVySW5m
bzsKIAogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvKj4gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwOwogICAgIAotY2xhc3MgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvIHsKK2NsYXNzIFJlbmRlckxheWVyRmlsdGVySW5mbworI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKKyAgICA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50CisjZW5k
aWYKK3sKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJ
bmZvRm9yUmVuZGVyTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICBzdGF0aWMgUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvKiBjcmVhdGVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lZWRlZChS
ZW5kZXJMYXllciopOwpAQCAtNTcsNiArNjYsMTYgQEAgcHVibGljOgogICAgIAogICAgIEZpbHRl
ckVmZmVjdFJlbmRlcmVyKiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0
KCk7IH0KICAgICB2b2lkIHNldFJlbmRlcmVyKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+KTsKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgLy8gSW1wbGVtZW50YXRp
b24gb2YgdGhlIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQgaW50ZXJmYWNlLgorICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3RvbUZpbHRlclByb2dy
YW0qKTsKKworICAgIHZvaWQgdXBkYXRlQ3VzdG9tRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CisgICAgdm9pZCByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisjZW5k
aWYKKworICAgIAogcHJpdmF0ZToKICAgICBSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5
ZXIqKTsKICAgICB+UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKCk7CkBAIC02Niw2ICs4NSwxMSBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gbV9yZW5kZXJlcjsKICAg
ICBMYXlvdXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OwogICAgIAorI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gPiBD
dXN0b21GaWx0ZXJQcm9ncmFtTGlzdDsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdCBtX2Nh
Y2hlZEN1c3RvbUZpbHRlclByb2dyYW1zOworI2VuZGlmCisgICAgCiAgICAgc3RhdGljIFJlbmRl
ckxheWVyRmlsdGVySW5mb01hcCogc19maWx0ZXJNYXA7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="144035"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138630</attachid>
            <date>2012-04-24 13:27:45 -0700</date>
            <delta_ts>2012-04-24 14:31:09 -0700</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug82803_3.patch</filename>
            <type>text/plain</type>
            <size>24754</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTJmM2UwLi45MzM5NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMDQtMjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIENTUyBTaGFkZXJzOiBDdXN0b20gZmlsdGVycyBwYWludGluZyBpcyBicm9rZW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCBJIG1vdmVkIENTUyBTaGFkZXJzIGZpbGUgbG9hZGluZyBub3RpZmljYXRpb25zIGZyb20g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdG8gdGhlIG5ldyBSZW5kZXJMYXllckZpbHRlckluZm8uCisg
ICAgICAgIFRoYXQncyBiZWNhdXNlIEZpbHRlckVmZmVjdFJlbmRlcmVyIGlzIG9ubHkgdXNlZCB3
aGVuIHJ1bm5pbmcgdGhlIGZpbHRlcnMgaW4gdGhlIHNvZnR3YXJlIHBpcGVsaW5lCisgICAgICAg
IGFuZCBoYXMgYSB2ZXJ5IHNob3J0IGxpZmV0aW1lLiBEdWUgdG8gYSByZWNlbnQgY2hhbmdlIEZp
bHRlckVmZmVjdFJlbmRlcmVyIGFjdHVhbGx5CisgICAgICAgIGdldHMgZGVsZXRlZCBpZiB0aGUg
c2hhZGVyIGlzIG5vdCBsb2FkZWQsIHNvIGl0IGRvZXNuJ3QgbGl2ZSB0aGF0IG11Y2ggdG8gYmUg
bm90aWZpZWQgd2hlbiB0aGUgc2hhZGVyCisgICAgICAgIHdhcyBhY3R1YWxseSBsb2FkZWQuCisK
KyAgICAgICAgQWxzbyByZW1vdmVkIHRoZSBGaWx0ZXJFZmZlY3RPYnNlcnZlciwgdGhhdCB3YXMg
b25seSB1c2VkIHRvIG5vdGlmeSB0aGUgUmVuZGVyTGF5ZXIgYWJvdXQgdGhlIGxvYWRlZCBzaGFk
ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIG1ha2luZyBleGlzdGluZyBDU1Mg
U2hhZGVycyB0ZXN0cyBwYXNzIGFnYWluLgorICAgICAgICBDYW5ub3QgdW4tc2tpcCBvbiBNYWMg
Zm9yIG5vdyBiZWNhdXNlIHRoZSBmZWF0dXJlIGlzIGNvbXBpbGUgdGltZSBkaXNhYmxlZC4KKyAg
ICAgICAgCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmFmZmVjdHNPcGFjaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6bW92ZXNQaXhlbHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6Omhhc0N1c3RvbUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0
ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVyRWZmZWN0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSk6
CisgICAgICAgIChGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJl
bW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpub3RpZnlDdXN0b21GaWx0
ZXJQcm9ncmFtTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp1cGRhdGVDdXN0b21GaWx0ZXJDbGllbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVtb3ZlQ3VzdG9tRmlsdGVyQ2xp
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJMYXllckZpbHRlckluZm8pOgorCiAyMDEy
LTA0LTIyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIGluc3RhbGxpbmcgbG9jYWxpemVkU3RyaW5ncy5qcyBpbiBQcm9kdWN0aW9uIGJ1aWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3YmViMDViLi5jZTM3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQxLDcgKzE0NDEsNyBAQAogCQk1MDM4QkU0
MTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkUzRjE0NzJBRDk4MDA5NUUwRDEgLyogQ2Fj
aGVkU2hhZGVyLmggKi87IH07CiAJCTUwM0QwQ0FBMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21G
aWx0ZXJQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwM0QwQ0E3MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmNw
cCAqLzsgfTsKIAkJNTAzRDBDQUIxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dy
YW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0Qw
Q0E4MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKLQkJNTAzRDBDQUMxNEI1QjA4NzAwRjMyRjU3IC8q
IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0
ZXJQcm9ncmFtQ2xpZW50LmggKi87IH07CisJCTUwM0QwQ0FDMTRCNUIwODcwMEYzMkY1NyAvKiBD
dXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUw
M0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk1MDhDQ0E0RjEzQ0YxMDZCMDAz
MTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICovOyB9OwpA
QCAtMTQ1Nyw3ICsxNDU3LDYgQEAKIAkJNTBENDA1RkExNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3Rv
bUZpbHRlck1lc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwRDQwNUY4MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi87IH07
CiAJCTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MEYxNDdE
NDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlclNoYWRlci5jcHAgKi87IH07CiAJCTUwRDQwNjEy
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNjEwMTQ3RDQ5REUwMEQzMEJCNSAv
KiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLzsgfTsKLQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1
IC8qIEZpbHRlckVmZmVjdE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDY3QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0
T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEzOTUxMTRC
MDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZB
MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmNwcCAqLzsgfTsKQEAgLTg0NTMsNyArODQ1Miw2IEBACiAJCTUwRDQwNUY4MTQ3RDMx
RjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ0MDYwRjE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclNoYWRlci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlclNoYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDQwNjEw
MTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyU2hhZGVyLmg7IHBhdGggPSBmaWx0ZXJzL0N1
c3RvbUZpbHRlclNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEQ0MDY3
QzE0N0U0MEQ4MDBEMzBCQjUgLyogRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA3NjAsNyArMjA3NTgsNiBAQAogCQkJCTkzOTJGMTRCMEFEMTg2MUIw
MDY5MUJENCAvKiBDb3VudGVyTm9kZS5oICovLAogCQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIz
NCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCiAJCQkJQThDRkY2QkQwQTE1NjExODAwMEE0MjM0IC8q
IEVsbGlwc2lzQm94LmggKi8sCi0JCQkJNTBENDA2N0MxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRl
ckVmZmVjdE9ic2VydmVyLmggKi8sCiAJCQkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKIAkJCQkzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAg
LyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywKIAkJCQlBOENGRjA0ODBBMTU0RjA5MDAwQTQy
MzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8sCkBAIC0yMjc2Myw3ICsyMjc2MCw2IEBACiAJ
CQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTBENDA2N0QxNDdFNDBEODAwRDMwQkI1IC8qIEZpbHRlckVmZmVjdE9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMxM0Y2NjE0NDNCMzVGMDA2RTJBOTAgLyogRmls
dGVyRWZmZWN0UmVuZGVyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjZFMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGY4ZTNmYTEuLjM1MmUyNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdmlydHVhbCB+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCk7CiAgICAgCisgICAgdmly
dHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IDk0MjI1NzcuLjgyMWJj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtODcsNiArODcsMTcgQEAgYm9vbCBG
aWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCitib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0N1c3RvbUZpbHRlcigpIGNvbnN0Cit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fb3BlcmF0aW9ucy5hdChpKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRl
ck9wZXJhdGlvbjo6Q1VTVE9NKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091
dHNldHMoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25z
LnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmluZGV4IDhjZWNhNzguLmJlMWIw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC02OSw2ICs2OSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgYm9vbCBoYXNDdXN0b21GaWx0ZXIoKSBjb25zdDsKKyNlbmRpZgogcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAzYmQxZTcyLi5jZGM3MjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
dm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHJlbmRlcmVyID0gRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+
IHJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIHJlbmRlcmVy
LT5zZXRTb3VyY2VJbWFnZVJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY29udGVu
dFRleHR1cmUuc2l6ZSgpKSk7CiAKICAgICAvLyBUaGUgZG9jdW1lbnQgcGFyYW1ldGVyIGlzIG9u
bHkgbmVlZGVkIGZvciBDU1Mgc2hhZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdE9ic2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1
NzM0OTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dE9ic2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbHRlckVmZmVjdE9ic2VydmVyX2gKLSNkZWZp
bmUgRmlsdGVyRWZmZWN0T2JzZXJ2ZXJfaAotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdE9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RPYnNlcnZlcigpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBmaWx0ZXJOZWVkc1JlcGFpbnQoKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBGaWx0ZXJF
ZmZlY3RPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcAppbmRleCA0MDQxNjhhLi44OWJlZmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1
ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3RPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKQEAgLTg0LDkgKzgzLDggQEAgc3RhdGljIGJvb2wgaXNDU1NDdXN0b21GaWx0ZXJFbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCkKIH0KICNlbmRpZgogCi1GaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqIG9ic2VydmVyKQot
ICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAsIG1fdG9wT3V0c2V0KDApCitGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQorICAgIDogbV90b3BPdXRzZXQo
MCkKICAgICAsIG1fcmlnaHRPdXRzZXQoMCkKICAgICAsIG1fYm90dG9tT3V0c2V0KDApCiAgICAg
LCBtX2xlZnRPdXRzZXQoMCkKQEAgLTk5LDkgKzk3LDYgQEAgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OkZpbHRlckVmZmVjdFJlbmRlcmVyKEZpbHRlckVmZmVjdE9ic2VydmVyKiBvYnNlcnZlcikKIAog
RmlsdGVyRWZmZWN0UmVuZGVyZXI6On5GaWx0ZXJFZmZlY3RSZW5kZXJlcigpCiB7Ci0jaWYgRU5B
QkxFKENTU19TSEFERVJTKQotICAgIHJlbW92ZUN1c3RvbUZpbHRlckNsaWVudHMoKTsKLSNlbmRp
ZgogfQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRl
eHQoKQpAQCAtMTEzLDggKzEwOCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxk
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiB7CiAjaWYg
IUVOQUJMRShDU1NfU0hBREVSUykgfHwgIUVOQUJMRShXRUJHTCkKICAgICBVTlVTRURfUEFSQU0o
ZG9jdW1lbnQpOwotI2Vsc2UKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdCBjYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtczsKICNlbmRpZgogCiAgICAgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwpAQCAtMjcxLDggKzI2
NCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tRmlsdGVyT3BlcmF0
aW9uLT5wcm9ncmFtKCk7Ci0gICAgICAgICAgICBjYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5h
cHBlbmQocHJvZ3JhbSk7Ci0gICAgICAgICAgICBwcm9ncmFtLT5hZGRDbGllbnQodGhpcyk7CiAg
ICAgICAgICAgICBpZiAocHJvZ3JhbS0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQtPnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCksIHByb2dyYW0sIGN1c3RvbUZpbHRlck9wZXJhdGlvbi0+cGFyYW1l
dGVycygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXJPcGVyYXRpb24t
Pm1lc2hDb2x1bW5zKCksCkBAIC0yOTcsMTEgKzI4OCw2IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIEVOQUJM
RShXRUJHTCkKLSAgICByZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7Ci0gICAgbV9jYWNoZWRD
dXN0b21GaWx0ZXJQcm9ncmFtcy5zd2FwKGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKTsKLSNl
bmRpZgotCiAgICAgLy8gSWYgd2UgZGlkbid0IG1ha2UgYW55IGVmZmVjdHMsIHRlbGwgb3VyIGNh
bGxlciB3ZSBhcmUgbm90IHZhbGlkCiAgICAgaWYgKCFwcmV2aW91c0VmZmVjdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzI0LDE5ICszMTAsNiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12b2lkIEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKEN1c3Rv
bUZpbHRlclByb2dyYW0qKQotewotICAgIG1fb2JzZXJ2ZXItPmZpbHRlck5lZWRzUmVwYWludCgp
OwotfQotCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpyZW1vdmVDdXN0b21GaWx0ZXJDbGll
bnRzKCkKLXsKLSAgICBmb3IgKEN1c3RvbUZpbHRlclByb2dyYW1MaXN0OjppdGVyYXRvciBpdGVy
ID0gbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5iZWdpbigpLCBlbmQgPSBtX2NhY2hlZEN1
c3RvbUZpbHRlclByb2dyYW1zLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBp
dGVyLT5nZXQoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotfQotI2VuZGlmCi0KIHZvaWQgRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIC8v
IEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRl
eCAyYTU3NTc1Li44Njk3NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtNDEsMTcgKzQxLDEyIEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCi0jaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oIgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVj
dD4gPiBGaWx0ZXJFZmZlY3RMaXN0OwogY2xhc3MgQ2FjaGVkU2hhZGVyOwogY2xhc3MgQ3VzdG9t
RmlsdGVyUHJvZ3JhbTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRmlsdGVyRWZmZWN0T2JzZXJ2
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIApAQCAtODEs
MTUgKzc2LDEyIEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciA6
IHB1YmxpYyBGaWx0ZXIKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgLCBwdWJsaWMgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudAotI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3RPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckVmZmVjdFJlbmRlcmVyKG9ic2VydmVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCkKQEAgLTExOSwxMyArMTExLDYgQEAgcHVibGljOgogICAgIExheW91dFJl
Y3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcml2YXRlOgot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNsaWVudCBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQoQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOwotICAgIAot
ICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOwotI2VuZGlmCi0KICAgICB2b2lk
IHNldE1heEVmZmVjdFJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgZWZmZWN0UmVjdCkKICAgICB7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZmZlY3RzLnNpemUoKTsgKytpKSB7CkBA
IC0xNDAsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoRmlsdGVyRWZmZWN0T2JzZXJ2ZXIqKTsKKyAgICBGaWx0
ZXJFZmZlY3RSZW5kZXJlcigpOwogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdFJlbmRlcmVyKCk7
CiAgICAgCiAgICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKQEAgLTE0OCwxMiAr
MTMzLDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsK
ICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwotICAgIEZpbHRlckVm
ZmVjdE9ic2VydmVyKiBtX29ic2VydmVyOyAvLyBObyBuZWVkIGZvciBhIHN0cm9uZyByZWZlcmVu
Y2VzIGhlcmUuIEl0IG93bnMgdXMuCi0gICAgCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBF
TkFCTEUoV0VCR0wpCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclByb2dy
YW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUxpc3Q7Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUxp
c3QgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtczsKLSNlbmRpZgogICAgIAogICAgIGludCBt
X3RvcE91dHNldDsKICAgICBpbnQgbV9yaWdodE91dHNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGU0MGU4ODAuLjZjMTBlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDg3Myw2ICs0ODczLDEzIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKICAgICAgICAgcmVtb3Zl
RmlsdGVySW5mb0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLmhh
c0N1c3RvbUZpbHRlcigpKQorICAgICAgICBlbnN1cmVGaWx0ZXJJbmZvKCktPnVwZGF0ZUN1c3Rv
bUZpbHRlckNsaWVudHMocmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkpOworICAgIGVsc2Ug
aWYgKGhhc0ZpbHRlckluZm8oKSkKKyAgICAgICAgZmlsdGVySW5mbygpLT5yZW1vdmVDdXN0b21G
aWx0ZXJDbGllbnRzKCk7CisjZW5kaWYKICAgICAKICAgICBpZiAoIXBhaW50c1dpdGhGaWx0ZXJz
KCkpIHsKICAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIHRoZSB3aG9sZSBmaWx0ZXIgaW5mbyBoZXJl
LCBiZWNhdXNlIHdlIG1pZ2h0IHVzZSBpdApAQCAtNDg4NCw3ICs0ODkxLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgIAogICAgIFJlbmRlckxh
eWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsKICAgICBpZiAo
IWZpbHRlckluZm8tPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
OwogICAgICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2Rl
KTsKICAgICAgICAgZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoZmlsdGVyUmVuZGVyZXIucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggY2JlNDQzMi4u
M2Q3YTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwLDcg
KzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0jaW5jbHVkZSAiRmlsdGVyRWZmZWN0T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllckZpbHRlckluZm8uaCIKICNlbmRpZgogCkBAIC0yMTIsMTEgKzIxMSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZpeGVkIDogMTsKIH07CiAKLWNsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICwgcHVibGljIEZp
bHRlckVmZmVjdE9ic2VydmVyCi0jZW5kaWYKLXsKK2NsYXNzIFJlbmRlckxheWVyIDogcHVibGlj
IFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUmVwbGlj
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmNwcAppbmRleCAwNDc5YzJhLi43MDNkZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcApAQCAtMzUsNiArMzUsMTEgQEAK
ICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBSZW5kZXJMYXll
ckZpbHRlckluZm86OnNfZmlsdGVyTWFwID0gMDsKQEAgLTg4LDcgKzkzLDkgQEAgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvOjpSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqIGxheWVyKQog
CiBSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRlckluZm8oKQogewotICAg
IC8vIEtlZXBpbmcgdGhlIGRlc3RydWN0b3IgaGVyZSBiZWNhdXNlIHRoZXJlJ3MgYSByZWYgdG8g
RmlsdGVyRWZmZWN0UmVuZGVyZXIgdGhhdCBtaWdodCBnZXQgZGVsZXRlZC4KKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgcmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpOworI2VuZGlmCiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpzZXRSZW5kZXJlcihQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVyPiByZW5kZXJlcikKQEAgLTk2LDYgKzEwMyw0MyBAQCB2b2lkIFJl
bmRlckxheWVyRmlsdGVySW5mbzo6c2V0UmVuZGVyZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RS
ZW5kZXJlcj4gcmVuZGVyZQogICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgCiB9CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIFJlbmRlckxheWVyRmlsdGVySW5mbzo6bm90aWZ5Q3Vz
dG9tRmlsdGVyUHJvZ3JhbUxvYWRlZChDdXN0b21GaWx0ZXJQcm9ncmFtKikKK3sKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbV9sYXllci0+cmVuZGVyZXIoKTsKKyAgICByZW5kZXJlci0+
bm9kZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICBy
ZW5kZXJlci0+cmVwYWludCgpOworfQorCit2b2lkIFJlbmRlckxheWVyRmlsdGVySW5mbzo6dXBk
YXRlQ3VzdG9tRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25z
KQoreworICAgIGlmICghb3BlcmF0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgcmVtb3ZlQ3VzdG9t
RmlsdGVyQ2xpZW50cygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEN1c3RvbUZpbHRl
clByb2dyYW1MaXN0IGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IG9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAg
IGlmIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRp
b246OkNVU1RPTSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBDdXN0b21G
aWx0ZXJPcGVyYXRpb24qIGN1c3RvbUZpbHRlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgIFJlZlB0
cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tRmlsdGVyT3BlcmF0aW9uLT5w
cm9ncmFtKCk7CisgICAgICAgIGNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLmFwcGVuZChwcm9n
cmFtKTsKKyAgICAgICAgcHJvZ3JhbS0+YWRkQ2xpZW50KHRoaXMpOworICAgIH0KKyAgICAvLyBS
ZW1vdmUgdGhlIG9sZCBjbGllbnRzIGhlcmUsIGFmdGVyIHdlJ3ZlIGFkZGVkIHRoZSBuZXcgb25l
cywgc28gdGhhdCB3ZSBkb24ndCBmbGlja2VyIGlmIHNvbWUgc2hhZGVycyBhcmUgdW5jaGFuZ2Vk
LgorICAgIHJlbW92ZUN1c3RvbUZpbHRlckNsaWVudHMoKTsKKyAgICBtX2NhY2hlZEN1c3RvbUZp
bHRlclByb2dyYW1zLnN3YXAoY2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMpOworfQorCit2b2lk
IFJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVtb3ZlQ3VzdG9tRmlsdGVyQ2xpZW50cygpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLnNp
emUoKTsgKytpKQorICAgICAgICBtX2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zLmF0KGkpLT5y
ZW1vdmVDbGllbnQodGhpcyk7CisgICAgbV9jYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcy5jbGVh
cigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlckluZm8uaAppbmRleCAyYjcwNWU2Li44NmE5YzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oCkBAIC0zNywxNSArMzcs
MjQgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9n
cmFtQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjsKK2NsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBSZW5kZXJM
YXllcjsKIGNsYXNzIFJlbmRlckxheWVyRmlsdGVySW5mbzsKIAogdHlwZWRlZiBIYXNoTWFwPGNv
bnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKj4gUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvTWFwOwogICAgIAotY2xhc3MgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvIHsKK2NsYXNzIFJl
bmRlckxheWVyRmlsdGVySW5mbworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICA6IHB1Ymxp
YyBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXIoY29uc3Qg
UmVuZGVyTGF5ZXIqKTsKICAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBjcmVhdGVG
aWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lZWRlZChSZW5kZXJMYXllciopOwpAQCAtNTcsNiAr
NjYsMTYgQEAgcHVibGljOgogICAgIAogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiByZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJlbmRl
cmVyKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+KTsKKyAgICAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIEN1c3RvbUZpbHRlclBy
b2dyYW1DbGllbnQgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDdXN0b21GaWx0
ZXJQcm9ncmFtTG9hZGVkKEN1c3RvbUZpbHRlclByb2dyYW0qKTsKKworICAgIHZvaWQgdXBkYXRl
Q3VzdG9tRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBy
ZW1vdmVDdXN0b21GaWx0ZXJDbGllbnRzKCk7CisjZW5kaWYKKworICAgIAogcHJpdmF0ZToKICAg
ICBSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqKTsKICAgICB+UmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvKCk7CkBAIC02Niw2ICs4NSwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlcj4gbV9yZW5kZXJlcjsKICAgICBMYXlvdXRSZWN0IG1fZGlydHlTb3Vy
Y2VSZWN0OwogICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gPiBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdDsK
KyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTGlzdCBtX2NhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1z
OworI2VuZGlmCisgICAgCiAgICAgc3RhdGljIFJlbmRlckxheWVyRmlsdGVySW5mb01hcCogc19m
aWx0ZXJNYXA7CiB9OwogCg==
</data>
<flag name="review"
          id="144043"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>