<?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>45486</bug_id>
          
          <creation_ts>2010-09-09 12:47:39 -0700</creation_ts>
          <short_desc>Pass CachedMetadata on ResourceResponse instead of in a separate call</short_desc>
          <delta_ts>2013-10-02 12:27:44 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>koivisto</cc>
    
    <cc>simonjam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>276683</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-09 12:47:39 -0700</bug_when>
    <thetext>Pass CachedMetadata on ResourceResponse instead of in a separate call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276695</commentid>
    <comment_count>1</comment_count>
      <attachid>67084</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-09 13:09:31 -0700</bug_when>
    <thetext>Created attachment 67084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276696</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-09 13:10:52 -0700</bug_when>
    <thetext>You were right, this is cleaner and should be more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276714</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-09 13:36:31 -0700</bug_when>
    <thetext>Attachment 67084 did not build on qt:
Build output: http://queues.webkit.org/results/3914353</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276804</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-09 15:41:52 -0700</bug_when>
    <thetext>Attachment 67084 did not build on mac:
Build output: http://queues.webkit.org/results/3947336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276830</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 16:19:18 -0700</bug_when>
    <thetext>Attachment 67084 did not build on gtk:
Build output: http://queues.webkit.org/results/3932338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276848</commentid>
    <comment_count>6</comment_count>
      <attachid>67118</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-09 16:48:59 -0700</bug_when>
    <thetext>Created attachment 67118
Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276875</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-09 17:39:19 -0700</bug_when>
    <thetext>Attachment 67118 did not build on mac:
Build output: http://queues.webkit.org/results/3897338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279194</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-14 14:56:32 -0700</bug_when>
    <thetext>*** Bug 45483 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279386</commentid>
    <comment_count>9</comment_count>
      <attachid>67118</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-14 22:29:44 -0700</bug_when>
    <thetext>Comment on attachment 67118
Build fix

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

&gt; WebCore/loader/CachedMetadata.h:64
&gt; +        RefPtr&lt;CachedMetadata&gt; cachedMetadata = create(dataTypeID(), data(), size());
don&apos;t create functions normally return PassRefPtr?  why bother with the intermediate cachedMetadata variable?

&gt; WebCore/loader/CachedMetadata.h:68
&gt; +    bool operator==(const CachedMetadata&amp; other) const
not that it really matters here, but normally it is better to define operator== and operator!= at global scope so that
type coercion works properly.  as member functions, only the right-hand-side argument can be coerced.

&gt; WebKit/chromium/public/WebCachedMetadata.h:41
&gt; +class WebCachedMetadata {
would it make sense to use WebData in place of defining this new class?  note: WebData can be converted to a RefPtr&lt;SharedBuffer&gt; without any cost.

i ask because this class just looks like a wrapper for an array of bytes.  that&apos;s what WebData is.


otherwise, looks great to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283094</commentid>
    <comment_count>10</comment_count>
      <attachid>68403</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-22 11:31:25 -0700</bug_when>
    <thetext>Created attachment 68403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283171</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-22 12:45:52 -0700</bug_when>
    <thetext>Attachment 68403 did not build on mac:
Build output: http://queues.webkit.org/results/3999092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285315</commentid>
    <comment_count>12</comment_count>
      <attachid>68403</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-26 22:19:35 -0700</bug_when>
    <thetext>Comment on attachment 68403
Patch

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

&gt; WebCore/loader/CachedMetadata.h:132
&gt; +    return a.serialize() == b.serialize();

Woah, that looks expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321835</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:57:18 -0800</bug_when>
    <thetext>What&apos;s the status on this patch, Tony?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322006</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-12-14 09:25:11 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; What&apos;s the status on this patch, Tony?

Thanks for the ping. I&apos;m missing a file needed a on mac. I&apos;ll get it synced up and landed this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322050</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 11:02:15 -0800</bug_when>
    <thetext>Wait, why is this a good thing? This seems to be going in a wrong direction of adding non-network data to network classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322110</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-14 12:22:24 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Wait, why is this a good thing? This seems to be going in a wrong direction of adding non-network data to network classes.

The CachedMetadata is meta data about the response that we&apos;d like to store in the HTTP cache.  For example, it might contain a post-parsing representation of a JavaScript script so we don&apos;t have to parse it again if we get a cache hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322124</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 12:42:54 -0800</bug_when>
    <thetext>But that&apos;s exactly what CachedScript is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322188</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-14 14:05:11 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; But that&apos;s exactly what CachedScript is doing.

Right, but we want to store it on disk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322220</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:35:53 -0800</bug_when>
    <thetext>I&apos;ve been told that we want to store CachedResource to disk, in fact. I think that moving CachedResource behaviors down to ResourceRequest/Response is going in a wrong direction, and conflicts with work being done in CachedResource land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322228</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-14 14:40:23 -0800</bug_when>
    <thetext>&gt; I&apos;ve been told that we want to store CachedResource to disk, in fact. I think that moving CachedResource behaviors down to ResourceRequest/Response is going in a wrong direction, and conflicts with work being done in CachedResource land.

The approach in this work is to integrate the disk storage with the HTTP disk cache so that the two objects can be managed together.  For example, when the we evict the resource from the HTTP disk cache, we want to evict the metadata too.

If we were to re-implement disk storage at the MemoryCache layer, we&apos;d just be re-inventing all the mechanisms of the HTTP disk cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322245</commentid>
    <comment_count>21</comment_count>
      <attachid>68403</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 15:00:36 -0800</bug_when>
    <thetext>Comment on attachment 68403
Patch

This seems to need deeper discussion. I&apos;ve already Cc&apos;ed Antti; marking r- to reflect that discussion is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322312</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-12-14 15:55:51 -0800</bug_when>
    <thetext>I can explain some background. V8&apos;s PreCompile() method generates some metadata that makes future calls to Compile() faster (it is basically just the offset of each brace). On a particular collection of web pages, we found that about 7% of the overall page load time in chromium is spent preparsing JavaScript. So to speed up future loads we store this as metadata on CachedResource. It is stored as a generic bucket of bytes so that other CachedResource types may use this mechanism as well.

But just saving it in the memory cache is of limited usefulness. To increase the number of cases where this metadata is available, we notify the embedding application via didReceiveCachedMetadata() so that it may save it into its disk cache.

However, for chromium that ends up resulting in two IPC calls: didReceiveResponse and didReceiveCachedMetadata. The goal of this patch was to merge those into a single IPC by simply making the metadata available on the ResourceResponse which is already passed to didReceiveResponse.

I&apos;m completely open to other ways to accomplish the same thing. Do you have time to describe the changes that are happening regarding saving CachedResources to disk?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67084</attachid>
            <date>2010-09-09 13:09:31 -0700</date>
            <delta_ts>2010-09-09 16:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45486-20100909130930.patch</filename>
            <type>text/plain</type>
            <size>30377</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzJkYTZmMTY0ZmUzMTcwYTA2NzEzMzMxZGRkYjY5MjkwYzZjMjM0NC4uYzMyYmU1MGRiM2FlZWY1
MmMzYWI5YTQ4ZDAxZThlODA2ZGNlMWRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wOS0wOSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgQ2FjaGVkTWV0YWRhdGEgb24gUmVzb3Vy
Y2VSZXNwb25zZSBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgY2FsbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0ODYKKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cHJlY29tcGlsZVNj
cmlwdCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNZXRhZGF0YTo6ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
TWV0YWRhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTWV0YWRhdGE6
Om9wZXJhdG9yIT0pOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0Q2FjaGVkTWV0YWRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL2xv
YWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpjYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0Q2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wOS0wOCAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBsYXlvdXQgdGVz
dCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAwNzdjMGRmYzNiNzM2ZTYzZmIzMTQ2
ZGZlYTE2MWM0ZDM4OWQwY2Q0Li5mMjE2M2ViMzNlZmUzNWE2NDFjYTQ2OTJmZTZjMjY2MDVlZmYz
YjdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCBQYXNzT3du
UHRyPHY4OjpTY3JpcHREYXRhPiBWOFByb3h5OjpwcmVjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gY29kZQogICAgICAgICByZXR1cm4gdjg6OlNjcmlwdERhdGE6Ok5ldyhjYWNo
ZWRNZXRhZGF0YS0+ZGF0YSgpLCBjYWNoZWRNZXRhZGF0YS0+c2l6ZSgpKTsKIAogICAgIE93blB0
cjx2ODo6U2NyaXB0RGF0YT4gc2NyaXB0RGF0YSh2ODo6U2NyaXB0RGF0YTo6UHJlQ29tcGlsZShj
b2RlKSk7Ci0gICAgY2FjaGVkU2NyaXB0LT5zZXRDYWNoZWRNZXRhZGF0YShkYXRhVHlwZUlELCBz
Y3JpcHREYXRhLT5EYXRhKCksIHNjcmlwdERhdGEtPkxlbmd0aCgpKTsKKyAgICBjYWNoZWRTY3Jp
cHQtPnNldENhY2hlZE1ldGFkYXRhKENhY2hlZE1ldGFkYXRhOjpjcmVhdGUoZGF0YVR5cGVJRCwg
c2NyaXB0RGF0YS0+RGF0YSgpLCBzY3JpcHREYXRhLT5MZW5ndGgoKSkpOwogCiAgICAgcmV0dXJu
IHNjcmlwdERhdGEucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkTWV0YWRhdGEuaCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmgKaW5kZXggMTIw
ZTRjMGJhMzc0ODU0MTk1NjdjYzNkOGVlMzRiZmRmY2E5ODA3YS4uMWYxNmM0MzJmNDVmMTI5Mjlj
NGIxYWU1ZmU1MTYyMjExOGRmYjFkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
TWV0YWRhdGEuaAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRNZXRhZGF0YS5oCkBAIC01OSw2
ICs1OSwyMiBAQCBwdWJsaWM6CiAKICAgICB+Q2FjaGVkTWV0YWRhdGEoKSB7IH0KIAorICAgIFBh
c3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGRlZXBDb3B5KCkKKyAgICB7CisgICAgICAgIFJlZlB0
cjxDYWNoZWRNZXRhZGF0YT4gY2FjaGVkTWV0YWRhdGEgPSBjcmVhdGUoZGF0YVR5cGVJRCgpLCBk
YXRhKCksIHNpemUoKSk7CisgICAgICAgIHJldHVybiBjYWNoZWRNZXRhZGF0YS5yZWxlYXNlKCk7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlZE1ldGFkYXRhJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NlcmlhbGl6ZWREYXRhID09IG90aGVy
Lm1fc2VyaWFsaXplZERhdGE7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENh
Y2hlZE1ldGFkYXRhJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBkYXRhVHlwZUlEKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiByZWFkVW5zaWduZWQoZGF0YVR5cGVJRFN0YXJ0KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBhNmZmMGZmMjk0MzAxMDAwZGM2OTEyMGY4YjUwYjlk
MjczN2E0MmVkLi44MDZjMDczM2UyZWQ4YmZhMzM1NmU3MzkzYWYzOGVlZmVhZjI3ZDg3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0xNzMsMzIgKzE3MywyMiBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQotewotICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIHJlY2VpdmUgY2FjaGVk
IG1ldGFkYXRhIGZyb20gdGhlIHBsYXRmb3JtIG9uY2UuCi0gICAgLy8gSWYgdGhpcyB0cmlnZ2Vy
cywgaXQgaW5kaWNhdGVzIGFuIGVmZmljaWVuY3kgcHJvYmxlbSB3aGljaCBpcyBtb3N0Ci0gICAg
Ly8gbGlrZWx5IHVuZXhwZWN0ZWQgaW4gY29kZSBkZXNpZ25lZCB0byBpbXByb3ZlIHBlcmZvcm1h
bmNlLgotICAgIEFTU0VSVCghbV9jYWNoZWRNZXRhZGF0YSk7Ci0KLSAgICBtX2NhY2hlZE1ldGFk
YXRhID0gQ2FjaGVkTWV0YWRhdGE6OmRlc2VyaWFsaXplKGRhdGEsIHNpemUpOwotfQotCi12b2lk
IENhY2hlZFJlc291cmNlOjpzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlELCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldENh
Y2hlZE1ldGFkYXRhKFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1ldGFkYXRhKQog
ewogICAgIC8vIEN1cnJlbnRseSwgb25seSBvbmUgdHlwZSBvZiBjYWNoZWQgbWV0YWRhdGEgcGVy
IHJlc291cmNlIGlzIHN1cHBvcnRlZC4KICAgICAvLyBJZiB0aGUgbmVlZCBhcmlzZXMgZm9yIG11
bHRpcGxlIHR5cGVzIG9mIG1ldGFkYXRhIHBlciByZXNvdXJjZSB0aGlzIGNvdWxkCiAgICAgLy8g
YmUgZW5oYW5jZWQgdG8gc3RvcmUgdHlwZXMgb2YgbWV0YWRhdGEgaW4gYSBtYXAuCi0gICAgQVNT
RVJUKCFtX2NhY2hlZE1ldGFkYXRhKTsKLQotICAgIG1fY2FjaGVkTWV0YWRhdGEgPSBDYWNoZWRN
ZXRhZGF0YTo6Y3JlYXRlKGRhdGFUeXBlSUQsIGRhdGEsIHNpemUpOwotICAgIFJlc291cmNlSGFu
ZGxlOjpjYWNoZU1ldGFkYXRhKG1fcmVzcG9uc2UsIG1fY2FjaGVkTWV0YWRhdGEtPnNlcmlhbGl6
ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKSk7CisgICAgbV9y
ZXNwb25zZS5zZXRDYWNoZWRNZXRhZGF0YShjYWNoZWRNZXRhZGF0YSk7CisgICAgUmVzb3VyY2VI
YW5kbGU6OmNhY2hlTWV0YWRhdGEobV9yZXNwb25zZSk7CiB9CiAKIENhY2hlZE1ldGFkYXRhKiBD
YWNoZWRSZXNvdXJjZTo6Y2FjaGVkTWV0YWRhdGEodW5zaWduZWQgZGF0YVR5cGVJRCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fY2FjaGVkTWV0YWRhdGEgfHwgbV9jYWNoZWRNZXRhZGF0YS0+ZGF0YVR5
cGVJRCgpICE9IGRhdGFUeXBlSUQpCisgICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBjYWNoZWRN
ZXRhZGF0YSA9IG1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKTsKKyAgICBpZiAoIWNhY2hlZE1l
dGFkYXRhIHx8IGNhY2hlZE1ldGFkYXRhLT5kYXRhVHlwZUlEKCkgIT0gZGF0YVR5cGVJRCkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY2FjaGVkTWV0YWRhdGEuZ2V0KCk7CisgICAg
cmV0dXJuIGNhY2hlZE1ldGFkYXRhLmdldCgpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpz
ZXRSZXF1ZXN0KFJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9D
YWNoZWRSZXNvdXJjZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA5
NThjOGZkMGNjMTUwYmVjZmFiNzcwYmQ5YWRkMWU2MDlkNzVlNzM5Li5lOWE0NDJmZGJmMmU2YjE5
NjY1NmI1MGZiOTNmMzkxNTM4Y2NmYjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKQEAgLTE1
NSwxNSArMTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgLy8gU2V0cyB0aGUgc2VyaWFsaXplZCBt
ZXRhZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgcGxhdGZvcm0ncyBjYWNoZS4KLSAgICB2b2lkIHNl
dFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKLQotICAgIC8v
IENhY2hlcyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGlzIHJlc291
cmNlIGFuZCBzdWdnZXN0cwotICAgIC8vIHRoYXQgdGhlIHBsYXRmb3JtIHBlcnNpc3QgaXQuIFRo
ZSBkYXRhVHlwZUlEIGlzIGEgcHNldWRvLXJhbmRvbWx5IGNob3NlbgotICAgIC8vIGlkZW50aWZp
ZXIgdGhhdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSBjYWxs
ZXIuCi0gICAgdm9pZCBzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlELCBjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLQotICAgIC8vIFJldHVybnMgY2FjaGVkIG1ldGFkYXRhIG9mIHRo
ZSBnaXZlbiB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlLgorICAgIC8vIENhY2hl
cyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGlzIHJlc291cmNlIGFu
ZCBzdWdnZXN0cyB0aGF0IHRoZSBwbGF0Zm9ybSBwZXJzaXN0IGl0LgorICAgIHZvaWQgc2V0Q2Fj
aGVkTWV0YWRhdGEoUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4pOwogICAgIENhY2hlZE1ldGFk
YXRhKiBjYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlEKSBjb25zdDsKIAogICAgIGJv
b2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9yZXF1ZXN0
ICYmICFtX3ByZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSAmJiAhbV9wcm94eVJlc291cmNlOyB9CkBAIC0yMzUsOCArMjI4LDYgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgY3VycmVudEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBmcmVzaG5lc3NM
aWZldGltZSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBtX2NhY2hlZE1l
dGFkYXRhOwotCiAgICAgZG91YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFz
IGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCiAKICAgICB1bnNpZ25lZCBtX2VuY29kZWRT
aXplOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTUxM2ZkYjExMmIxOTg4OTA1ZmExYzM5
YmYwYzFhNjRlM2UwODE1OS4uMjQ3MDQ0MGE1YjJlNWU1ODhiNjQxNzNlOWI3NDlmNDA2NjhjMzI1
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC04MCw3ICs4MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCBpbnQsIGxvbmcgbG9uZyBsZW5ndGhSZWNlaXZlZCwgYm9vbCBhbGxBdE9uY2UpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQp
IHsgfQogICAgICAgICB2b2lkIHdpbGxTdG9wQnVmZmVyaW5nRGF0YShjb25zdCBjaGFyKiwgaW50
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtOTgsNyArOTcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgaW50LCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3RoKTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2OWQ0YTVjNjBj
ODVhMzUzOTY5ZTNhMjUyZjQ1ZjQxMThiMTczYWM3Li4wODI1NjdkMzNiMDZlOTMzNjI0YjdjZjFk
ZWM0MTE3YjAyMGY3NDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0x
NjAsMTYgKzE2MCw2IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBsCiAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKLXsKLSAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBz
aW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFueXRoaW5nIGlu
Y2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QodGhpcyk7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoKQogewogICAgIGlmIChjYW5j
ZWxsZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgg
Yi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDRhNTgzNDU5MzU3Yzg0
NTg5YTdlMjhjY2NiMzliZjJkODMxN2Y3NmMuLjkwN2Q5MTc5MzE2Njc4ZDZkNTA3NDFlY2M3ZTNl
ZGQzY2Y3MzYwODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsNyArNTEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiwgaW50LCBsb25nIGxvbmcgbGVuZ3RoUmVjZWl2ZWQsIGJvb2wgYWxs
QXRPbmNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShj
b25zdCBjaGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggYi9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCmluZGV4IGUxOGFiZTM4ZDYxOWUzNzYz
YTRmYWUyMTU2ZjFkNWI4MDcxMWE5OGIuLjc2ZmRlNDc1NjAxODIyNjE5ZDFiNDNmYzQ3NmFjZThj
MWJiOWMwMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xp
ZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaApAQCAt
NDcsNyArNDcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNo
YXIqLCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAv
Kmxlbmd0aFJlY2VpdmVkKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcApp
bmRleCAzZjZmYWQyNjA5Nzk1MDQ2YjllMDM2ZDFjZDc0YTFhYzJiZGE3NTc4Li4wM2ZjZGJjNGFm
YmUxMGNmNmEwZTgyYTFjZjNlMmQ2NjVjM2U1Yjc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9sb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKQEAgLTU1OSwyMSAr
NTU5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGkKICAgICB9IGVsc2UgaWYgKHJlcXVlc3Qt
PmlzSW5jcmVtZW50YWwoKSkKICAgICAgICAgcmVzb3VyY2UtPmRhdGEobG9hZGVyLT5yZXNvdXJj
ZURhdGEoKSwgZmFsc2UpOwogfQotICAgIAotdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgc2l6ZSkKLXsKLSAgICBSZWZQdHI8SG9zdD4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAg
UmVxdWVzdCogcmVxdWVzdCA9IG1fcmVxdWVzdHNMb2FkaW5nLmdldChsb2FkZXIpOwotICAgIGlm
ICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsgICAgCi0gICAgQVNTRVJUKCFyZXNvdXJj
ZS0+aXNDYWNoZVZhbGlkYXRvcigpKTsKIAotICAgIHJlc291cmNlLT5zZXRTZXJpYWxpemVkQ2Fj
aGVkTWV0YWRhdGEoZGF0YSwgc2l6ZSk7Ci19Ci0gICAgCiB2b2lkIExvYWRlcjo6SG9zdDo6Y2Fu
Y2VsUGVuZGluZ1JlcXVlc3RzKFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nLCBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgUmVxdWVzdFF1ZXVl
IHJlbWFpbmluZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5oIGIvV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmgKaW5kZXggNGQzNTNlMDkwMmRlYmNjYjQxZTlmYzhhZDgwMDlmMWVh
MTkxNmVlNy4uODNiYjY3ZDNjZmRmNjc1Njk3OTE0ZTI1YTlhZWFhYzU2MDA4MDI1YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmgKQEAgLTg3LDcgKzg3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7Ci0gICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCk7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhTdWJyZXNvdXJjZUxvYWRlciopOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAg
ICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZDUyMDc2
YzE1ODFjNGJiZDJiNmJhZjIwOTVhNjJkZjcyYTIzNzgzZi4uZjMxZjkxNDhjMTYyOTMwMDg1MzEz
ZjQwMmMwMzdhMzQzY2M0OTA0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBw
cmVwYXJlRm9yVVJMKGNvbnN0IEtVUkwmKTsKICAgICBzdGF0aWMgYm9vbCB3aWxsTG9hZEZyb21D
YWNoZShSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIGNhY2hlTWV0
YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYpOworICAg
IHN0YXRpYyB2b2lkIGNhY2hlTWV0YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgYm9vbCBkaWRTZW5kQm9keURhdGFEZWxlZ2F0ZUV4
aXN0cygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5oCmluZGV4IDk3YzBmNTRlNDI4ZTk2YmVhMmU1ZDQzZWUyNzBlYjkxYmQ5ZmM1
MmYuLmY0MjRlMDliYzBlYTcxODI2NWU5NzViY2Y4MTZkM2ZlY2Q4Y2IxNjkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC03MSw3ICs3
MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiwgaW50LCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSB7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGUyMzE2NTI3MTgzNzAxMWMz
YzhmOTgyYzIyMzlhMjE1NjI4OTdkOTUuLjBhZDVmYzEyYjJjMTYwODcyZTRlNWU3Y2JkZGEzNzEz
MmMyMWU2ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXNw
b25zZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
CiAgICAgcmVzcG9uc2UtPm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0dHBIZWFk
ZXJzLnJlbGVhc2UoKSk7CiAgICAgcmVzcG9uc2UtPnNldExhc3RNb2RpZmllZERhdGUoZGF0YS0+
bV9sYXN0TW9kaWZpZWREYXRlKTsKICAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5n
KGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nLnJlbGVhc2UoKSk7CisgICAgcmVzcG9uc2UtPnNl
dENhY2hlZE1ldGFkYXRhKGRhdGEtPm1fY2FjaGVkTWV0YWRhdGEucmVsZWFzZSgpKTsKIAogICAg
IHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7CiB9CkBAIC0xMjUsNiArMTI2LDggQEAgUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y29weURhdGEoKSBjb24KICAgICBkYXRhLT5tX2xhc3RNb2RpZmllZERhdGUgPSBsYXN0TW9k
aWZpZWREYXRlKCk7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkVGltaW5nKQogICAgICAgICBkYXRh
LT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IG1fcmVzb3VyY2VMb2FkVGltaW5nLT5kZWVwQ29weSgp
OworICAgIGlmIChtX2NhY2hlZE1ldGFkYXRhKQorICAgICAgICBkYXRhLT5tX2NhY2hlZE1ldGFk
YXRhID0gbV9jYWNoZWRNZXRhZGF0YS0+ZGVlcENvcHkoKTsKICAgICByZXR1cm4gZGF0YS5yZWxl
YXNlKCk7CiB9CiAKQEAgLTUxNSw2ICs1MTgsMjAgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6c2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPgog
ICAgIG1fcmVzb3VyY2VMb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nOwogfQogCitDYWNo
ZWRNZXRhZGF0YSogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlZE1ldGFkYXRhKCkgY29uc3QK
K3sKKyAgICBsYXp5SW5pdCgpOworCisgICAgcmV0dXJuIG1fY2FjaGVkTWV0YWRhdGEuZ2V0KCk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENhY2hlZE1ldGFkYXRhKFBhc3NS
ZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1ldGFkYXRhKQoreworICAgIGxhenlJbml0KCk7
CisKKyAgICBtX2NhY2hlZE1ldGFkYXRhID0gY2FjaGVkTWV0YWRhdGE7Cit9CisKIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KCkgY29uc3QKIHsKICAgICBjb25zdF9jYXN0PFJl
c291cmNlUmVzcG9uc2UqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhp
cykpLT5wbGF0Zm9ybUxhenlJbml0KCk7CkBAIC01NDQsNiArNTYxLDEwIEBAIGJvb2wgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3Qg
UmVzb3VyY2VSZXNwCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNv
bXBhcmUoYSwgYik7CiAgICAgaWYgKGEucmVzb3VyY2VMb2FkVGltaW5nKCkgIT0gYi5yZXNvdXJj
ZUxvYWRUaW1pbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmNhY2hlZE1l
dGFkYXRhKCkgJiYgYi5jYWNoZWRNZXRhZGF0YSgpICYmICphLmNhY2hlZE1ldGFkYXRhKCkgPT0g
KmIuY2FjaGVkTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtQ29tcGFyZShhLCBiKTsKKyAgICBpZiAoYS5jYWNoZWRNZXRhZGF0YSgpICE9IGIuY2Fj
aGVkTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBSZXNvdXJj
ZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggNjVlMjRhZDE1ZjM3MjQ1
MzRjZWUyNDc4OGFjNjdjNDUyYTc3YjMzNS4uYzZjZWI4ZDhiNjEyYjYzY2I4MjFlYzA2ZjI0NThi
ZmRiMmE2NjM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZUJh
c2VfaAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKKyNpbmNsdWRlICJDYWNoZWRN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCkBAIC0xMDksNiArMTEwLDkgQEAgcHVi
bGljOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRU
aW1pbmc+KTsKIAorICAgIENhY2hlZE1ldGFkYXRhKiBjYWNoZWRNZXRhZGF0YSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Q2FjaGVkTWV0YWRhdGEoUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4pOwor
CiAgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMg
bWV0aG9kIHRvIHByb3ZpZGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVtb3J5IHVzYWdlIGluZm9ybWF0
aW9uCiAgICAgdW5zaWduZWQgbWVtb3J5VXNhZ2UoKSBjb25zdAogICAgIHsKQEAgLTE0Myw2ICsx
NDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CiAgICAgYm9v
bCBtX2Nvbm5lY3Rpb25SZXVzZWQgOiAxOwogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+
IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIFJlZlB0cjxDYWNoZWRNZXRhZGF0YT4gbV9jYWNo
ZWRNZXRhZGF0YTsKIAogICAgIGJvb2wgbV9pc051bGwgOiAxOwogICAgIApAQCAtMTgwLDYgKzE4
NSw3IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDogTm9uY29weWFi
bGUgewogICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFk
ZXJzOwogICAgIHRpbWVfdCBtX2xhc3RNb2RpZmllZERhdGU7CiAgICAgUmVmUHRyPFJlc291cmNl
TG9hZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CisgICAgUmVmUHRyPENhY2hlZE1ldGFk
YXRhPiBtX2NhY2hlZE1ldGFkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggYjVlNjU0ZjFkOTJkZmIwYzVlZTFkY2UwMDM3NTM2MDZhZjIzMjkwYy4uNTcy
YWFlMTM4ZWIyOWYwMmZlNWZiMTY0NmY2MGQzZTJhNTNjNDRlMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTAtMDktMDkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
YXNzIENhY2hlZE1ldGFkYXRhIG9uIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZCBvZiBpbiBhIHNl
cGFyYXRlIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1NDg2CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJD
YWNoZWRNZXRhZGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICogc3Jj
L1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpj
YWNoZU1ldGFkYXRhKToKKyAgICAgICAgKiBzcmMvV2ViQ2FjaGVkTWV0YWRhdGEuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVkTWV0YWRhdGE6On5XZWJDYWNoZWRNZXRhZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlZE1ldGFkYXRhOjpXZWJDYWNoZWRNZXRhZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlZE1ldGFkYXRhOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDYWNoZWRNZXRhZGF0YTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxDYWNo
ZWRNZXRhZGF0YT4pOgorICAgICAgICAqIHNyYy9XZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpsb2FkVGltaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMUmVzcG9uc2U6OmNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
UmVzcG9uc2U6OnNldENhY2hlZE1ldGFkYXRhKToKKwogMjAxMC0wOS0wOCAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGU0YjNkZmVhZDcwOGU3N2M1MGY3MTk2OTUwNWI2
MTM0NTRmYTkxNDYuLjk3NWU0ODQzMTA3M2RlMTVhZWZiYTA5ZjRkZjYxMDVlMDE5M2NkMGEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0xMDksNiArMTA5LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkJsb2JSZWdpc3RyeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkJsb2JTdG9y
YWdlRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNhY2hlLmgnLAorICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViQ2FjaGVkTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJDYW52YXMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDbGlwYm9h
cmQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb2xvci5oJywKQEAgLTM4NCw2ICsz
ODUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmxvYkRhdGEuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkJsb2JTdG9yYWdlRGF0YS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViQ2FjaGUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkNhY2hlZE1ldGFkYXRh
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb2xvci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViQ29tbW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkNhY2hlZE1ldGFkYXRhLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNhY2hlZE1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg4ZmNhODg0NjgyMTgzMTdhMmIwYzViOTM2
M2NlMmUxZjBhNTI0NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ2FjaGVkTWV0YWRhdGEuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDYWNoZWRNZXRh
ZGF0YV9oCisjZGVmaW5lIFdlYkNhY2hlZE1ldGFkYXRhX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBDYWNoZWRNZXRhZGF0YTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q2FjaGVkTWV0YWRhdGEgeworcHVibGljOgorICAgIH5XZWJDYWNoZWRNZXRhZGF0YSgpOworCisg
ICAgV2ViQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpOworICAg
IFdlYkNhY2hlZE1ldGFkYXRhKGNvbnN0IFdlYkNhY2hlZE1ldGFkYXRhJiBjKTsKKyAgICBXZWJD
YWNoZWRNZXRhZGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdlYkNhY2hlZE1ldGFkYXRhJiBjKTsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkNhY2hlZE1ldGFkYXRhKGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDYWNoZWRNZXRhZGF0YT4mKTsKKyAgICBXZWJDYWNoZWRN
ZXRhZGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDYWNoZWRN
ZXRhZGF0YT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q2FjaGVk
TWV0YWRhdGE+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRy
PFdlYkNvcmU6OkNhY2hlZE1ldGFkYXRhPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTExvYWRlckNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJD
bGllbnQuaAppbmRleCBjNzE2ZTVkNmFiMGFlNTUwZjBkMTg0Mjc0ZDY2ZjNhMDgzNTRlYTNiLi40
ZDUyMzM1MWFhODUzYWYyNWJhYTU2NDU0YmI1NDE1YTVhMmNjYjYxIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIC8vIENhbGxlZCB3aGVuIGEgY2h1bmsgb2YgcmVzcG9uc2UgZGF0YSBpcyByZWNlaXZl
ZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViVVJMTG9hZGVyKiwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBj
aHVuayBvZiByZW5kZXJlci1nZW5lcmF0ZWQgbWV0YWRhdGEgaXMgcmVjZWl2ZWQgZnJvbSB0aGUg
Y2FjaGUuCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gdGhlIGNocm9taXVtIHBvcnQg
bm8gbG9uZ2VyIGNhbGxzIGl0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0
YWRhdGEoV2ViVVJMTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIHsg
fQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaAppbmRleCBhYzc1ZDRjNjRiOWYz
Y2RjMDI1ZDEzZmNmMWQ5ZGNhOWI5NTczZjcyLi5hMmE1NWRjMThkNWNjY2E5MTk2NDZkNTRhN2Nj
NTRjMjc2MGU0ZGRlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJl
c3BvbnNlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ2FjaGVkTWV0YWRhdGE7CiBj
bGFzcyBXZWJDU3RyaW5nOwogY2xhc3MgV2ViSFRUUEhlYWRlclZpc2l0b3I7CiBjbGFzcyBXZWJT
dHJpbmc7CkBAIC03OSw5ICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBib29sIGNv
bm5lY3Rpb25SZXVzZWQoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0Q29ubmVjdGlv
blJldXNlZChib29sKTsKIAotICAgIFdFQktJVF9BUEkgV2ViVVJMTG9hZFRpbWluZyBsb2FkVGlt
aW5nKCk7CisgICAgV0VCS0lUX0FQSSBXZWJVUkxMb2FkVGltaW5nIGxvYWRUaW1pbmcoKSBjb25z
dDsKICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0TG9hZFRpbWluZyhjb25zdCBXZWJVUkxMb2FkVGlt
aW5nJik7CiAKKyAgICBXRUJLSVRfQVBJIFdlYkNhY2hlZE1ldGFkYXRhIGNhY2hlZE1ldGFkYXRh
KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldENhY2hlZE1ldGFkYXRhKGNvbnN0IFdl
YkNhY2hlZE1ldGFkYXRhJik7CisKICAgICBXRUJLSVRfQVBJIGRvdWJsZSByZXNwb25zZVRpbWUo
KSBjb25zdDsKICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVzcG9uc2VUaW1lKGRvdWJsZSk7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggODhmN2YzOThlODZjZjI1
NmYzZTM0OGRjODBhZGFkZTNmOWM2ZDE3NS4uNzI2NTNiMTM2YTBjMzYwOWEzYjJiZGNiZTVhNGQw
YjI4OTQ0ZmQxOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9SZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTcz
LDcgKzczLDYgQEAgcHVibGljOgogICAgICAgICBXZWJVUkxMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTExvYWRlciosIGNvbnN0
IFdlYlVSTFJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlVS
TExvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhXZWJVUkxMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJVUkxMb2FkZXIq
LCBjb25zdCBXZWJVUkxFcnJvciYpOwogCkBAIC0xNzMsMTUgKzE3Miw2IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGEoCiAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKG1fb3duZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOwogfQogCi12b2lk
IFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShXZWJVUkxM
b2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKLXsKLSAgICBBU1NFUlQo
bV9jbGllbnQpOwotICAgIGlmIChtX3N0YXRlICE9IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmVkUmVz
cG9uc2UgJiYgbV9zdGF0ZSAhPSBDb25uZWN0aW9uU3RhdGVSZWNlaXZpbmdEYXRhKQotICAgICAg
ICBDUkFTSCgpOwotCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShtX293
bmVyLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLX0KLQogdm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFs
OjpkaWRGaW5pc2hMb2FkaW5nKFdlYlVSTExvYWRlciopCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKQEAgLTMyOCw5ICszMTgsMTAgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9t
Q2FjaGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSopCiB9CiAKIC8vIHN0YXRpYwot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FjaGVNZXRhZGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y2FjaGVNZXRhZGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAg
ICBDaHJvbWl1bUJyaWRnZTo6Y2FjaGVNZXRhZGF0YShyZXNwb25zZS51cmwoKSwgcmVzcG9uc2Uu
cmVzcG9uc2VUaW1lKCksIGRhdGEpOworICAgIEFTU0VSVChyZXNwb25zZS5jYWNoZWRNZXRhZGF0
YSgpKTsKKyAgICBDaHJvbWl1bUJyaWRnZTo6Y2FjaGVNZXRhZGF0YShyZXNwb25zZS51cmwoKSwg
cmVzcG9uc2UucmVzcG9uc2VUaW1lKCksIHJlc3BvbnNlLmNhY2hlZE1ldGFkYXRhKCktPnNlcmlh
bGl6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDYWNoZWRNZXRhZGF0YS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNhY2hlZE1ldGFkYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDRiZDQ5NGMzMmNjZmI1MjlmZGUz
M2Q0ZmMyNjVlYzY5NWZjNzE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDYWNoZWRNZXRhZGF0YS5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJDYWNoZWRNZXRhZGF0YS5oIgorCisjaW5jbHVkZSAiQ2FjaGVkTWV0
YWRhdGEuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJDYWNoZWRNZXRhZGF0YTo6fldlYkNhY2hlZE1ldGFkYXRhKCkKK3sKKyAgICBtX3By
aXZhdGUucmVzZXQoKTsKK30KKworV2ViQ2FjaGVkTWV0YWRhdGE6OldlYkNhY2hlZE1ldGFkYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIG1fcHJpdmF0ZSA9IENhY2hl
ZE1ldGFkYXRhOjpkZXNlcmlhbGl6ZShkYXRhLCBzaXplKTsKK30KKworV2ViQ2FjaGVkTWV0YWRh
dGE6OldlYkNhY2hlZE1ldGFkYXRhKGNvbnN0IFdlYkNhY2hlZE1ldGFkYXRhJiBjKQoreworICAg
IG1fcHJpdmF0ZSA9IGM7Cit9CisKK1dlYkNhY2hlZE1ldGFkYXRhJiBXZWJDYWNoZWRNZXRhZGF0
YTo6b3BlcmF0b3I9KGNvbnN0IFdlYkNhY2hlZE1ldGFkYXRhJiBjKQoreworICAgIG1fcHJpdmF0
ZSA9IGM7CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJDYWNoZWRNZXRhZGF0YTo6V2ViQ2Fj
aGVkTWV0YWRhdGEoY29uc3QgUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4mIHZhbHVlKQorICAg
IDogbV9wcml2YXRlKHZhbHVlKQoreworfQorCitXZWJDYWNoZWRNZXRhZGF0YSYgV2ViQ2FjaGVk
TWV0YWRhdGE6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPENhY2hlZE1ldGFkYXRhPiYgdmFs
dWUpCit7CisgICAgbV9wcml2YXRlID0gdmFsdWU7CisgICAgcmV0dXJuICp0aGlzOworfQorCitX
ZWJDYWNoZWRNZXRhZGF0YTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4oKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBhYWU0MTNj
N2EyNzRlZGY0ZDc0NDIzZDYwMWRhMTVlMjc4NzYzNjYwLi4xMGRlZjZjYzU3YzgxNDNmNDgwNmZh
MWY0NzM3NjRhZjg0MmExNGZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVS
TFJlc3BvbnNlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNw
cApAQCAtMzEsOSArMzEsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJV
UkxSZXNwb25zZS5oIgogCisjaW5jbHVkZSAiQ2FjaGVkTWV0YWRhdGEuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAKKyNp
bmNsdWRlICJXZWJDYWNoZWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYkhUVFBIZWFkZXJWaXNp
dG9yLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCkBAIC0x
MTgsNyArMTIwLDcgQEAgdm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0Q29ubmVjdGlvblJldXNlZChi
b29sIGNvbm5lY3Rpb25SZXVzZWQpCiAgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2Ut
PnNldENvbm5lY3Rpb25SZXVzZWQoY29ubmVjdGlvblJldXNlZCk7CiB9CiAKLVdlYlVSTExvYWRU
aW1pbmcgV2ViVVJMUmVzcG9uc2U6OmxvYWRUaW1pbmcoKQorV2ViVVJMTG9hZFRpbWluZyBXZWJV
UkxSZXNwb25zZTo6bG9hZFRpbWluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlVSTExvYWRU
aW1pbmcobV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnJlc291cmNlTG9hZFRpbWluZygp
KTsKIH0KQEAgLTEyOSw2ICsxMzEsMTcgQEAgdm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0TG9hZFRp
bWluZyhjb25zdCBXZWJVUkxMb2FkVGltaW5nJiB0aW1pbmcpCiAgICAgbV9wcml2YXRlLT5tX3Jl
c291cmNlUmVzcG9uc2UtPnNldFJlc291cmNlTG9hZFRpbWluZyhsb2FkVGltaW5nLnJlbGVhc2Uo
KSk7CiB9CiAKK1dlYkNhY2hlZE1ldGFkYXRhIFdlYlVSTFJlc3BvbnNlOjpjYWNoZWRNZXRhZGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNhY2hlZE1ldGFkYXRhKG1fcHJpdmF0ZS0+bV9y
ZXNvdXJjZVJlc3BvbnNlLT5jYWNoZWRNZXRhZGF0YSgpKTsKK30KKwordm9pZCBXZWJVUkxSZXNw
b25zZTo6c2V0Q2FjaGVkTWV0YWRhdGEoY29uc3QgV2ViQ2FjaGVkTWV0YWRhdGEmIG1ldGFkYXRh
KQoreworICAgIFJlZlB0cjxDYWNoZWRNZXRhZGF0YT4gY2FjaGVkTWV0YWRhdGEgPSBQYXNzUmVm
UHRyPENhY2hlZE1ldGFkYXRhPihtZXRhZGF0YSk7CisgICAgbV9wcml2YXRlLT5tX3Jlc291cmNl
UmVzcG9uc2UtPnNldENhY2hlZE1ldGFkYXRhKGNhY2hlZE1ldGFkYXRhLnJlbGVhc2UoKSk7Cit9
CisKIGRvdWJsZSBXZWJVUkxSZXNwb25zZTo6cmVzcG9uc2VUaW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnJlc3BvbnNlVGltZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67118</attachid>
            <date>2010-09-09 16:48:59 -0700</date>
            <delta_ts>2010-09-22 11:31:21 -0700</delta_ts>
            <desc>Build fix</desc>
            <filename>bug-45486-20100909164858.patch</filename>
            <type>text/plain</type>
            <size>30954</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzJkYTZmMTY0ZmUzMTcwYTA2NzEzMzMxZGRkYjY5MjkwYzZjMjM0NC4uYzMyYmU1MGRiM2FlZWY1
MmMzYWI5YTQ4ZDAxZThlODA2ZGNlMWRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wOS0wOSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgQ2FjaGVkTWV0YWRhdGEgb24gUmVzb3Vy
Y2VSZXNwb25zZSBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgY2FsbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0ODYKKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cHJlY29tcGlsZVNj
cmlwdCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNZXRhZGF0YTo6ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
TWV0YWRhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTWV0YWRhdGE6
Om9wZXJhdG9yIT0pOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0Q2FjaGVkTWV0YWRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL2xv
YWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpjYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0Q2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wOS0wOCAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBsYXlvdXQgdGVz
dCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAwNzdjMGRmYzNiNzM2ZTYzZmIzMTQ2
ZGZlYTE2MWM0ZDM4OWQwY2Q0Li5mMjE2M2ViMzNlZmUzNWE2NDFjYTQ2OTJmZTZjMjY2MDVlZmYz
YjdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCBQYXNzT3du
UHRyPHY4OjpTY3JpcHREYXRhPiBWOFByb3h5OjpwcmVjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gY29kZQogICAgICAgICByZXR1cm4gdjg6OlNjcmlwdERhdGE6Ok5ldyhjYWNo
ZWRNZXRhZGF0YS0+ZGF0YSgpLCBjYWNoZWRNZXRhZGF0YS0+c2l6ZSgpKTsKIAogICAgIE93blB0
cjx2ODo6U2NyaXB0RGF0YT4gc2NyaXB0RGF0YSh2ODo6U2NyaXB0RGF0YTo6UHJlQ29tcGlsZShj
b2RlKSk7Ci0gICAgY2FjaGVkU2NyaXB0LT5zZXRDYWNoZWRNZXRhZGF0YShkYXRhVHlwZUlELCBz
Y3JpcHREYXRhLT5EYXRhKCksIHNjcmlwdERhdGEtPkxlbmd0aCgpKTsKKyAgICBjYWNoZWRTY3Jp
cHQtPnNldENhY2hlZE1ldGFkYXRhKENhY2hlZE1ldGFkYXRhOjpjcmVhdGUoZGF0YVR5cGVJRCwg
c2NyaXB0RGF0YS0+RGF0YSgpLCBzY3JpcHREYXRhLT5MZW5ndGgoKSkpOwogCiAgICAgcmV0dXJu
IHNjcmlwdERhdGEucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkTWV0YWRhdGEuaCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmgKaW5kZXggMTIw
ZTRjMGJhMzc0ODU0MTk1NjdjYzNkOGVlMzRiZmRmY2E5ODA3YS4uMWYxNmM0MzJmNDVmMTI5Mjlj
NGIxYWU1ZmU1MTYyMjExOGRmYjFkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
TWV0YWRhdGEuaAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRNZXRhZGF0YS5oCkBAIC01OSw2
ICs1OSwyMiBAQCBwdWJsaWM6CiAKICAgICB+Q2FjaGVkTWV0YWRhdGEoKSB7IH0KIAorICAgIFBh
c3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGRlZXBDb3B5KCkKKyAgICB7CisgICAgICAgIFJlZlB0
cjxDYWNoZWRNZXRhZGF0YT4gY2FjaGVkTWV0YWRhdGEgPSBjcmVhdGUoZGF0YVR5cGVJRCgpLCBk
YXRhKCksIHNpemUoKSk7CisgICAgICAgIHJldHVybiBjYWNoZWRNZXRhZGF0YS5yZWxlYXNlKCk7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlZE1ldGFkYXRhJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NlcmlhbGl6ZWREYXRhID09IG90aGVy
Lm1fc2VyaWFsaXplZERhdGE7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENh
Y2hlZE1ldGFkYXRhJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBkYXRhVHlwZUlEKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiByZWFkVW5zaWduZWQoZGF0YVR5cGVJRFN0YXJ0KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBhNmZmMGZmMjk0MzAxMDAwZGM2OTEyMGY4YjUwYjlk
MjczN2E0MmVkLi44MDZjMDczM2UyZWQ4YmZhMzM1NmU3MzkzYWYzOGVlZmVhZjI3ZDg3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0xNzMsMzIgKzE3MywyMiBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQotewotICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIHJlY2VpdmUgY2FjaGVk
IG1ldGFkYXRhIGZyb20gdGhlIHBsYXRmb3JtIG9uY2UuCi0gICAgLy8gSWYgdGhpcyB0cmlnZ2Vy
cywgaXQgaW5kaWNhdGVzIGFuIGVmZmljaWVuY3kgcHJvYmxlbSB3aGljaCBpcyBtb3N0Ci0gICAg
Ly8gbGlrZWx5IHVuZXhwZWN0ZWQgaW4gY29kZSBkZXNpZ25lZCB0byBpbXByb3ZlIHBlcmZvcm1h
bmNlLgotICAgIEFTU0VSVCghbV9jYWNoZWRNZXRhZGF0YSk7Ci0KLSAgICBtX2NhY2hlZE1ldGFk
YXRhID0gQ2FjaGVkTWV0YWRhdGE6OmRlc2VyaWFsaXplKGRhdGEsIHNpemUpOwotfQotCi12b2lk
IENhY2hlZFJlc291cmNlOjpzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlELCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldENh
Y2hlZE1ldGFkYXRhKFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1ldGFkYXRhKQog
ewogICAgIC8vIEN1cnJlbnRseSwgb25seSBvbmUgdHlwZSBvZiBjYWNoZWQgbWV0YWRhdGEgcGVy
IHJlc291cmNlIGlzIHN1cHBvcnRlZC4KICAgICAvLyBJZiB0aGUgbmVlZCBhcmlzZXMgZm9yIG11
bHRpcGxlIHR5cGVzIG9mIG1ldGFkYXRhIHBlciByZXNvdXJjZSB0aGlzIGNvdWxkCiAgICAgLy8g
YmUgZW5oYW5jZWQgdG8gc3RvcmUgdHlwZXMgb2YgbWV0YWRhdGEgaW4gYSBtYXAuCi0gICAgQVNT
RVJUKCFtX2NhY2hlZE1ldGFkYXRhKTsKLQotICAgIG1fY2FjaGVkTWV0YWRhdGEgPSBDYWNoZWRN
ZXRhZGF0YTo6Y3JlYXRlKGRhdGFUeXBlSUQsIGRhdGEsIHNpemUpOwotICAgIFJlc291cmNlSGFu
ZGxlOjpjYWNoZU1ldGFkYXRhKG1fcmVzcG9uc2UsIG1fY2FjaGVkTWV0YWRhdGEtPnNlcmlhbGl6
ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKSk7CisgICAgbV9y
ZXNwb25zZS5zZXRDYWNoZWRNZXRhZGF0YShjYWNoZWRNZXRhZGF0YSk7CisgICAgUmVzb3VyY2VI
YW5kbGU6OmNhY2hlTWV0YWRhdGEobV9yZXNwb25zZSk7CiB9CiAKIENhY2hlZE1ldGFkYXRhKiBD
YWNoZWRSZXNvdXJjZTo6Y2FjaGVkTWV0YWRhdGEodW5zaWduZWQgZGF0YVR5cGVJRCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fY2FjaGVkTWV0YWRhdGEgfHwgbV9jYWNoZWRNZXRhZGF0YS0+ZGF0YVR5
cGVJRCgpICE9IGRhdGFUeXBlSUQpCisgICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBjYWNoZWRN
ZXRhZGF0YSA9IG1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKTsKKyAgICBpZiAoIWNhY2hlZE1l
dGFkYXRhIHx8IGNhY2hlZE1ldGFkYXRhLT5kYXRhVHlwZUlEKCkgIT0gZGF0YVR5cGVJRCkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY2FjaGVkTWV0YWRhdGEuZ2V0KCk7CisgICAg
cmV0dXJuIGNhY2hlZE1ldGFkYXRhLmdldCgpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpz
ZXRSZXF1ZXN0KFJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9D
YWNoZWRSZXNvdXJjZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA5
NThjOGZkMGNjMTUwYmVjZmFiNzcwYmQ5YWRkMWU2MDlkNzVlNzM5Li5lOWE0NDJmZGJmMmU2YjE5
NjY1NmI1MGZiOTNmMzkxNTM4Y2NmYjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKQEAgLTE1
NSwxNSArMTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgLy8gU2V0cyB0aGUgc2VyaWFsaXplZCBt
ZXRhZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgcGxhdGZvcm0ncyBjYWNoZS4KLSAgICB2b2lkIHNl
dFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKLQotICAgIC8v
IENhY2hlcyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGlzIHJlc291
cmNlIGFuZCBzdWdnZXN0cwotICAgIC8vIHRoYXQgdGhlIHBsYXRmb3JtIHBlcnNpc3QgaXQuIFRo
ZSBkYXRhVHlwZUlEIGlzIGEgcHNldWRvLXJhbmRvbWx5IGNob3NlbgotICAgIC8vIGlkZW50aWZp
ZXIgdGhhdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSBjYWxs
ZXIuCi0gICAgdm9pZCBzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlELCBjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLQotICAgIC8vIFJldHVybnMgY2FjaGVkIG1ldGFkYXRhIG9mIHRo
ZSBnaXZlbiB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlLgorICAgIC8vIENhY2hl
cyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGlzIHJlc291cmNlIGFu
ZCBzdWdnZXN0cyB0aGF0IHRoZSBwbGF0Zm9ybSBwZXJzaXN0IGl0LgorICAgIHZvaWQgc2V0Q2Fj
aGVkTWV0YWRhdGEoUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4pOwogICAgIENhY2hlZE1ldGFk
YXRhKiBjYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlEKSBjb25zdDsKIAogICAgIGJv
b2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAhbV9yZXF1ZXN0
ICYmICFtX3ByZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSAmJiAhbV9wcm94eVJlc291cmNlOyB9CkBAIC0yMzUsOCArMjI4LDYgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgY3VycmVudEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBmcmVzaG5lc3NM
aWZldGltZSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBtX2NhY2hlZE1l
dGFkYXRhOwotCiAgICAgZG91YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFz
IGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCiAKICAgICB1bnNpZ25lZCBtX2VuY29kZWRT
aXplOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTUxM2ZkYjExMmIxOTg4OTA1ZmExYzM5
YmYwYzFhNjRlM2UwODE1OS4uMjQ3MDQ0MGE1YjJlNWU1ODhiNjQxNzNlOWI3NDlmNDA2NjhjMzI1
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC04MCw3ICs4MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCBpbnQsIGxvbmcgbG9uZyBsZW5ndGhSZWNlaXZlZCwgYm9vbCBhbGxBdE9uY2UpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqLCBpbnQp
IHsgfQogICAgICAgICB2b2lkIHdpbGxTdG9wQnVmZmVyaW5nRGF0YShjb25zdCBjaGFyKiwgaW50
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtOTgsNyArOTcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgaW50LCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkgeyBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZGF0YSwgbGVuZ3RoKTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2OWQ0YTVjNjBj
ODVhMzUzOTY5ZTNhMjUyZjQ1ZjQxMThiMTczYWM3Li4wODI1NjdkMzNiMDZlOTMzNjI0YjdjZjFk
ZWM0MTE3YjAyMGY3NDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0x
NjAsMTYgKzE2MCw2IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBsCiAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKLXsKLSAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBz
aW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFueXRoaW5nIGlu
Y2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QodGhpcyk7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoKQogewogICAgIGlmIChjYW5j
ZWxsZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgg
Yi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDRhNTgzNDU5MzU3Yzg0
NTg5YTdlMjhjY2NiMzliZjJkODMxN2Y3NmMuLjkwN2Q5MTc5MzE2Njc4ZDZkNTA3NDFlY2M3ZTNl
ZGQzY2Y3MzYwODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsNyArNTEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiwgaW50LCBsb25nIGxvbmcgbGVuZ3RoUmVjZWl2ZWQsIGJvb2wgYWxs
QXRPbmNlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShj
b25zdCBjaGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggYi9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCmluZGV4IGUxOGFiZTM4ZDYxOWUzNzYz
YTRmYWUyMTU2ZjFkNWI4MDcxMWE5OGIuLjc2ZmRlNDc1NjAxODIyNjE5ZDFiNDNmYzQ3NmFjZThj
MWJiOWMwMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xp
ZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaApAQCAt
NDcsNyArNDcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNo
YXIqLCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAv
Kmxlbmd0aFJlY2VpdmVkKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcApp
bmRleCAzZjZmYWQyNjA5Nzk1MDQ2YjllMDM2ZDFjZDc0YTFhYzJiZGE3NTc4Li4wM2ZjZGJjNGFm
YmUxMGNmNmEwZTgyYTFjZjNlMmQ2NjVjM2U1Yjc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9sb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKQEAgLTU1OSwyMSAr
NTU5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGkKICAgICB9IGVsc2UgaWYgKHJlcXVlc3Qt
PmlzSW5jcmVtZW50YWwoKSkKICAgICAgICAgcmVzb3VyY2UtPmRhdGEobG9hZGVyLT5yZXNvdXJj
ZURhdGEoKSwgZmFsc2UpOwogfQotICAgIAotdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgc2l6ZSkKLXsKLSAgICBSZWZQdHI8SG9zdD4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAg
UmVxdWVzdCogcmVxdWVzdCA9IG1fcmVxdWVzdHNMb2FkaW5nLmdldChsb2FkZXIpOwotICAgIGlm
ICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsgICAgCi0gICAgQVNTRVJUKCFyZXNvdXJj
ZS0+aXNDYWNoZVZhbGlkYXRvcigpKTsKIAotICAgIHJlc291cmNlLT5zZXRTZXJpYWxpemVkQ2Fj
aGVkTWV0YWRhdGEoZGF0YSwgc2l6ZSk7Ci19Ci0gICAgCiB2b2lkIExvYWRlcjo6SG9zdDo6Y2Fu
Y2VsUGVuZGluZ1JlcXVlc3RzKFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nLCBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgUmVxdWVzdFF1ZXVl
IHJlbWFpbmluZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5oIGIvV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmgKaW5kZXggNGQzNTNlMDkwMmRlYmNjYjQxZTlmYzhhZDgwMDlmMWVh
MTkxNmVlNy4uODNiYjY3ZDNjZmRmNjc1Njk3OTE0ZTI1YTlhZWFhYzU2MDA4MDI1YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmgKQEAgLTg3LDcgKzg3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7Ci0gICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCk7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhTdWJyZXNvdXJjZUxvYWRlciopOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgICAg
ICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDJk
YTFkNzcwMDQ1NjU3MWUwYTg5NmJlYjRmN2RmMDc5ODdlZmQ4ZjEuLjA1NzYyZDNhMTA2MTI4OGE3
YThkYWU3MmJmZDZkYzI5ZTE0YTY1NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnByZXBhcmVGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNhY2hlTWV0YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQogewogICAgIC8vIE9wdGlvbmFsbHkgaW1wbGVtZW50ZWQgYnkgcGxh
dGZvcm0uCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4
IGQ1MjA3NmMxNTgxYzRiYmQyYjZiYWYyMDk1YTYyZGY3MmEyMzc4M2YuLmYzMWY5MTQ4YzE2Mjkz
MDA4NTMxM2Y0MDJjMDM3YTM0M2NjNDkwNGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgcHJlcGFyZUZvclVSTChjb25zdCBLVVJMJik7CiAgICAgc3RhdGljIGJvb2wgd2lsbExv
YWRGcm9tQ2FjaGUoUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBj
YWNoZU1ldGFkYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBWZWN0b3I8Y2hhcj4m
KTsKKyAgICBzdGF0aWMgdm9pZCBjYWNoZU1ldGFkYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIGJvb2wgZGlkU2VuZEJvZHlEYXRhRGVs
ZWdhdGVFeGlzdHMoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCA5N2MwZjU0ZTQyOGU5NmJlYTJlNWQ0M2VlMjcwZWI5
MWJkOWZjNTJmLi5mNDI0ZTA5YmMwZWE3MTgyNjVlOTc1YmNmODE2ZDNmZWNkOGNiMTY5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAt
NzEsNyArNzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQqLykgeyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgeyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBlMjMxNjUyNzE4
MzcwMTFjM2M4Zjk4MmMyMjM5YTIxNTYyODk3ZDk1Li4wYWQ1ZmMxMmIyYzE2MDg3MmU0ZTVlN2Ni
ZGRhMzcxMzJjMjFlNjg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBQYXNzT3duUHRyPFJlc291
cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdChQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUgogICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoZGF0YS0+bV9o
dHRwSGVhZGVycy5yZWxlYXNlKCkpOwogICAgIHJlc3BvbnNlLT5zZXRMYXN0TW9kaWZpZWREYXRl
KGRhdGEtPm1fbGFzdE1vZGlmaWVkRGF0ZSk7CiAgICAgcmVzcG9uc2UtPnNldFJlc291cmNlTG9h
ZFRpbWluZyhkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZy5yZWxlYXNlKCkpOworICAgIHJlc3Bv
bnNlLT5zZXRDYWNoZWRNZXRhZGF0YShkYXRhLT5tX2NhY2hlZE1ldGFkYXRhLnJlbGVhc2UoKSk7
CiAKICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwogfQpAQCAtMTI1LDYgKzEyNiw4IEBA
IFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKCkgY29uCiAgICAgZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlID0g
bGFzdE1vZGlmaWVkRGF0ZSgpOwogICAgIGlmIChtX3Jlc291cmNlTG9hZFRpbWluZykKICAgICAg
ICAgZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcgPSBtX3Jlc291cmNlTG9hZFRpbWluZy0+ZGVl
cENvcHkoKTsKKyAgICBpZiAobV9jYWNoZWRNZXRhZGF0YSkKKyAgICAgICAgZGF0YS0+bV9jYWNo
ZWRNZXRhZGF0YSA9IG1fY2FjaGVkTWV0YWRhdGEtPmRlZXBDb3B5KCk7CiAgICAgcmV0dXJuIGRh
dGEucmVsZWFzZSgpOwogfQogCkBAIC01MTUsNiArNTE4LDIwIEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRp
bWluZz4KICAgICBtX3Jlc291cmNlTG9hZFRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZzsKIH0K
IAorQ2FjaGVkTWV0YWRhdGEqIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjYWNoZWRNZXRhZGF0YSgp
IGNvbnN0Cit7CisgICAgbGF6eUluaXQoKTsKKworICAgIHJldHVybiBtX2NhY2hlZE1ldGFkYXRh
LmdldCgpOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRDYWNoZWRNZXRhZGF0
YShQYXNzUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBjYWNoZWRNZXRhZGF0YSkKK3sKKyAgICBsYXp5
SW5pdCgpOworCisgICAgbV9jYWNoZWRNZXRhZGF0YSA9IGNhY2hlZE1ldGFkYXRhOworfQorCiB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXp5SW5pdCgpIGNvbnN0CiB7CiAgICAgY29uc3Rf
Y2FzdDxSZXNvdXJjZVJlc3BvbnNlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25z
ZSo+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdCgpOwpAQCAtNTQ0LDYgKzU2MSwxMCBAQCBib29s
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEs
IGNvbnN0IFJlc291cmNlUmVzcAogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1Db21wYXJlKGEsIGIpOwogICAgIGlmIChhLnJlc291cmNlTG9hZFRpbWluZygpICE9IGIu
cmVzb3VyY2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5j
YWNoZWRNZXRhZGF0YSgpICYmIGIuY2FjaGVkTWV0YWRhdGEoKSAmJiAqYS5jYWNoZWRNZXRhZGF0
YSgpID09ICpiLmNhY2hlZE1ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CisgICAgaWYgKGEuY2FjaGVkTWV0YWRhdGEoKSAh
PSBiLmNhY2hlZE1ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDY1ZTI0YWQx
NWYzNzI0NTM0Y2VlMjQ3ODhhYzY3YzQ1MmE3N2IzMzUuLmM2Y2ViOGQ4YjYxMmI2M2NiODIxZWMw
NmYyNDU4YmZkYjJhNjYzNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFJlc291cmNlUmVz
cG9uc2VCYXNlX2gKICNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJhc2VfaAogCisjaW5jbHVkZSAi
Q2FjaGVkTWV0YWRhdGEuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5oIgpAQCAtMTA5LDYgKzExMCw5
IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlTG9hZFRpbWluZygp
IGNvbnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3Vy
Y2VMb2FkVGltaW5nPik7CiAKKyAgICBDYWNoZWRNZXRhZGF0YSogY2FjaGVkTWV0YWRhdGEoKSBj
b25zdDsKKyAgICB2b2lkIHNldENhY2hlZE1ldGFkYXRhKFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRh
dGE+KTsKKwogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93
IiB0aGlzIG1ldGhvZCB0byBwcm92aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1c2FnZSBp
bmZvcm1hdGlvbgogICAgIHVuc2lnbmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKICAgICB7CkBAIC0x
NDMsNiArMTQ3LDcgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbklEOwog
ICAgIGJvb2wgbV9jb25uZWN0aW9uUmV1c2VkIDogMTsKICAgICBSZWZQdHI8UmVzb3VyY2VMb2Fk
VGltaW5nPiBtX3Jlc291cmNlTG9hZFRpbWluZzsKKyAgICBSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+
IG1fY2FjaGVkTWV0YWRhdGE7CiAKICAgICBib29sIG1faXNOdWxsIDogMTsKICAgICAKQEAgLTE4
MCw2ICsxODUsNyBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IE5v
bmNvcHlhYmxlIHsKICAgICBPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gbV9o
dHRwSGVhZGVyczsKICAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOwogICAgIFJlZlB0cjxS
ZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIFJlZlB0cjxDYWNo
ZWRNZXRhZGF0YT4gbV9jYWNoZWRNZXRhZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGI1ZTY1NGYxZDkyZGZiMGM1ZWUxZGNlMDAzNzUzNjA2YWYyMzI5
MGMuLjU3MmFhZTEzOGViMjlmMDJmZTVmYjE2NDZmNjBkM2UyYTUzYzQ0ZTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDEwLTA5LTA5ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGFzcyBDYWNoZWRNZXRhZGF0YSBvbiBSZXNvdXJjZVJlc3BvbnNlIGluc3RlYWQgb2Yg
aW4gYSBzZXBhcmF0ZSBjYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTQ4NgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViQ2FjaGVkTWV0YWRhdGEuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTExv
YWRlckNsaWVudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oOgorICAgICAg
ICAqIHNyYy9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y2FjaGVNZXRhZGF0YSk6CisgICAgICAgICogc3JjL1dlYkNhY2hlZE1ldGFkYXRhLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlZE1ldGFkYXRhOjp+V2ViQ2FjaGVk
TWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZWRNZXRhZGF0YTo6V2ViQ2FjaGVk
TWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZWRNZXRhZGF0YTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVkTWV0YWRhdGE6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8Q2FjaGVkTWV0YWRhdGE+KToKKyAgICAgICAgKiBzcmMvV2ViVVJMUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6bG9hZFRpbWluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpjYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFJlc3BvbnNlOjpzZXRDYWNoZWRNZXRhZGF0YSk6CisKIDIwMTAtMDktMDggIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9zZXBoIFBlY29yYXJvLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBlNGIzZGZlYWQ3MDhlNzdjNTBmNzE5
Njk1MDViNjEzNDU0ZmE5MTQ2Li45NzVlNDg0MzEwNzNkZTE1YWVmYmEwOWY0ZGY2MTA1ZTAxOTNj
ZDBhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTA5LDYgKzEwOSw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJCbG9iUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJC
bG9iU3RvcmFnZURhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDYWNoZS5oJywK
KyAgICAgICAgICAgICAgICAncHVibGljL1dlYkNhY2hlZE1ldGFkYXRhLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViQ2FudmFzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
Q2xpcGJvYXJkLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29sb3IuaCcsCkBAIC0z
ODQsNiArMzg1LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkJsb2JEYXRhLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJCbG9iU3RvcmFnZURhdGEuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkNhY2hlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJDYWNoZWRN
ZXRhZGF0YS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29sb3IuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDYWNoZWRNZXRhZGF0YS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDYWNoZWRNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4OGZjYTg4NDY4MjE4MzE3YTJi
MGM1YjkzNjNjZTJlMWYwYTUyNDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkNhY2hlZE1ldGFkYXRhLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ2Fj
aGVkTWV0YWRhdGFfaAorI2RlZmluZSBXZWJDYWNoZWRNZXRhZGF0YV9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgQ2FjaGVkTWV0YWRhdGE7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNhY2hlZE1ldGFkYXRhIHsKK3B1YmxpYzoKKyAgICB+V2ViQ2FjaGVkTWV0YWRhdGEo
KTsKKworICAgIFdlYkNhY2hlZE1ldGFkYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KTsKKyAgICBXZWJDYWNoZWRNZXRhZGF0YShjb25zdCBXZWJDYWNoZWRNZXRhZGF0YSYgYyk7Cisg
ICAgV2ViQ2FjaGVkTWV0YWRhdGEmIG9wZXJhdG9yPShjb25zdCBXZWJDYWNoZWRNZXRhZGF0YSYg
Yyk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDYWNoZWRNZXRhZGF0YShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q2FjaGVkTWV0YWRhdGE+Jik7CisgICAgV2Vi
Q2FjaGVkTWV0YWRhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
Q2FjaGVkTWV0YWRhdGE+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OkNhY2hlZE1ldGFkYXRhPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJp
dmF0ZVB0cjxXZWJDb3JlOjpDYWNoZWRNZXRhZGF0YT4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
TG9hZGVyQ2xpZW50LmgKaW5kZXggYzcxNmU1ZDZhYjBhZTU1MGYwZDE4NDI3NGQ2NmYzYTA4MzU0
ZWEzYi4uNGQ1MjMzNTFhYTg1M2FmMjViYWE1NjQ1NGJiNTQxNWE1YTJjY2I2MSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlc3BvbnNlIGRhdGEgaXMg
cmVjZWl2ZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlVSTExvYWRlcios
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSB7IH0KIAotICAgIC8vIENhbGxlZCB3
aGVuIGEgY2h1bmsgb2YgcmVuZGVyZXItZ2VuZXJhdGVkIG1ldGFkYXRhIGlzIHJlY2VpdmVkIGZy
b20gdGhlIGNhY2hlLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHRoZSBjaHJvbWl1
bSBwb3J0IG5vIGxvbmdlciBjYWxscyBpdC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNh
Y2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSB7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBsb2FkIGNvbXBsZXRlcyBzdWNjZXNz
ZnVsbHkuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNl
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgKaW5kZXggYWM3NWQ0
YzY0YjlmM2NkYzAyNWQxM2ZjZjFkOWRjYTliOTU3M2Y3Mi4uYTJhNTVkYzE4ZDVjY2NhOTE5NjQ2
ZDU0YTdjYzU0YzI3NjBlNGRkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXNwb25zZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9u
c2UuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkNhY2hlZE1ldGFk
YXRhOwogY2xhc3MgV2ViQ1N0cmluZzsKIGNsYXNzIFdlYkhUVFBIZWFkZXJWaXNpdG9yOwogY2xh
c3MgV2ViU3RyaW5nOwpAQCAtNzksOSArODAsMTIgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkg
Ym9vbCBjb25uZWN0aW9uUmV1c2VkKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNldENv
bm5lY3Rpb25SZXVzZWQoYm9vbCk7CiAKLSAgICBXRUJLSVRfQVBJIFdlYlVSTExvYWRUaW1pbmcg
bG9hZFRpbWluZygpOworICAgIFdFQktJVF9BUEkgV2ViVVJMTG9hZFRpbWluZyBsb2FkVGltaW5n
KCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNldExvYWRUaW1pbmcoY29uc3QgV2ViVVJM
TG9hZFRpbWluZyYpOwogCisgICAgV0VCS0lUX0FQSSBXZWJDYWNoZWRNZXRhZGF0YSBjYWNoZWRN
ZXRhZGF0YSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRDYWNoZWRNZXRhZGF0YShj
b25zdCBXZWJDYWNoZWRNZXRhZGF0YSYpOworCiAgICAgV0VCS0lUX0FQSSBkb3VibGUgcmVzcG9u
c2VUaW1lKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNldFJlc3BvbnNlVGltZShkb3Vi
bGUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jlc291cmNlSGFuZGxlLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDg4ZjdmMzk4
ZTg2Y2YyNTZmM2UzNDhkYzgwYWRhZGUzZjljNmQxNzUuLjcyNjUzYjEzNmEwYzM2MDlhM2IyYmRj
YmU1YTRkMGIyODk0NGZkMTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3Vy
Y2VIYW5kbGUuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3Bw
CkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICAgICAgV2ViVVJMTG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxMb2FkZXIq
LCBjb25zdCBXZWJVUkxSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShXZWJVUkxMb2FkZXIqLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViVVJMTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViVVJM
TG9hZGVyKiwgY29uc3QgV2ViVVJMRXJyb3ImKTsKIApAQCAtMTczLDE1ICsxNzIsNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVEYXRhKAogICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShtX293bmVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEo
V2ViVVJMTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCi17Ci0gICAg
QVNTRVJUKG1fY2xpZW50KTsKLSAgICBpZiAobV9zdGF0ZSAhPSBDb25uZWN0aW9uU3RhdGVSZWNl
aXZlZFJlc3BvbnNlICYmIG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2aW5nRGF0YSkK
LSAgICAgICAgQ1JBU0goKTsKLQotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2FjaGVkTWV0YWRh
dGEobV9vd25lciwgZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbDo6ZGlkRmluaXNoTG9hZGluZyhXZWJVUkxMb2FkZXIqKQogewogICAgIEFTU0VSVCht
X2NsaWVudCk7CkBAIC0zMjgsOSArMzE4LDEwIEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OndpbGxM
b2FkRnJvbUNhY2hlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhbWUqKQogfQogCiAvLyBz
dGF0aWMKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhY2hlTWV0YWRhdGEoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkKK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNhY2hlTWV0YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgQ2hyb21pdW1CcmlkZ2U6OmNhY2hlTWV0YWRhdGEocmVzcG9uc2UudXJsKCksIHJl
c3BvbnNlLnJlc3BvbnNlVGltZSgpLCBkYXRhKTsKKyAgICBBU1NFUlQocmVzcG9uc2UuY2FjaGVk
TWV0YWRhdGEoKSk7CisgICAgQ2hyb21pdW1CcmlkZ2U6OmNhY2hlTWV0YWRhdGEocmVzcG9uc2Uu
dXJsKCksIHJlc3BvbnNlLnJlc3BvbnNlVGltZSgpLCByZXNwb25zZS5jYWNoZWRNZXRhZGF0YSgp
LT5zZXJpYWxpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ2FjaGVkTWV0YWRhdGEuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDYWNoZWRNZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0YmQ0OTRjMzJjY2Zi
NTI5ZmRlMzNkNGZjMjY1ZWM2OTVmYzcxOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ2FjaGVkTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ2FjaGVkTWV0YWRhdGEuaCIKKworI2luY2x1ZGUgIkNh
Y2hlZE1ldGFkYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViQ2FjaGVkTWV0YWRhdGE6On5XZWJDYWNoZWRNZXRhZGF0YSgpCit7Cisg
ICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYkNhY2hlZE1ldGFkYXRhOjpXZWJDYWNoZWRN
ZXRhZGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBtX3ByaXZhdGUg
PSBDYWNoZWRNZXRhZGF0YTo6ZGVzZXJpYWxpemUoZGF0YSwgc2l6ZSk7Cit9CisKK1dlYkNhY2hl
ZE1ldGFkYXRhOjpXZWJDYWNoZWRNZXRhZGF0YShjb25zdCBXZWJDYWNoZWRNZXRhZGF0YSYgYykK
K3sKKyAgICBtX3ByaXZhdGUgPSBjOworfQorCitXZWJDYWNoZWRNZXRhZGF0YSYgV2ViQ2FjaGVk
TWV0YWRhdGE6Om9wZXJhdG9yPShjb25zdCBXZWJDYWNoZWRNZXRhZGF0YSYgYykKK3sKKyAgICBt
X3ByaXZhdGUgPSBjOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViQ2FjaGVkTWV0YWRhdGE6
OldlYkNhY2hlZE1ldGFkYXRhKGNvbnN0IFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+JiB2YWx1
ZSkKKyAgICA6IG1fcHJpdmF0ZSh2YWx1ZSkKK3sKK30KKworV2ViQ2FjaGVkTWV0YWRhdGEmIFdl
YkNhY2hlZE1ldGFkYXRhOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0
YT4mIHZhbHVlKQoreworICAgIG1fcHJpdmF0ZSA9IHZhbHVlOworICAgIHJldHVybiAqdGhpczsK
K30KKworV2ViQ2FjaGVkTWV0YWRhdGE6Om9wZXJhdG9yIFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRh
dGE+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVz
cG9uc2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
YWFlNDEzYzdhMjc0ZWRmNGQ3NDQyM2Q2MDFkYTE1ZTI3ODc2MzY2MC4uMTBkZWY2Y2M1N2M4MTQz
ZjQ4MDZmYTFmNDczNzY0YWY4NDJhMTRmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNw
b25zZS5jcHAKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMUmVzcG9uc2UuaCIKIAorI2luY2x1ZGUgIkNhY2hlZE1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5o
IgogCisjaW5jbHVkZSAiV2ViQ2FjaGVkTWV0YWRhdGEuaCIKICNpbmNsdWRlICJXZWJIVFRQSGVh
ZGVyVmlzaXRvci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5o
IgpAQCAtMTE4LDcgKzEyMCw3IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldENvbm5lY3Rpb25S
ZXVzZWQoYm9vbCBjb25uZWN0aW9uUmV1c2VkKQogICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJl
c3BvbnNlLT5zZXRDb25uZWN0aW9uUmV1c2VkKGNvbm5lY3Rpb25SZXVzZWQpOwogfQogCi1XZWJV
UkxMb2FkVGltaW5nIFdlYlVSTFJlc3BvbnNlOjpsb2FkVGltaW5nKCkKK1dlYlVSTExvYWRUaW1p
bmcgV2ViVVJMUmVzcG9uc2U6OmxvYWRUaW1pbmcoKSBjb25zdAogewogICAgIHJldHVybiBXZWJV
UkxMb2FkVGltaW5nKG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5yZXNvdXJjZUxvYWRU
aW1pbmcoKSk7CiB9CkBAIC0xMjksNiArMTMxLDE3IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OnNl
dExvYWRUaW1pbmcoY29uc3QgV2ViVVJMTG9hZFRpbWluZyYgdGltaW5nKQogICAgIG1fcHJpdmF0
ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcobG9hZFRpbWluZy5y
ZWxlYXNlKCkpOwogfQogCitXZWJDYWNoZWRNZXRhZGF0YSBXZWJVUkxSZXNwb25zZTo6Y2FjaGVk
TWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJDYWNoZWRNZXRhZGF0YShtX3ByaXZh
dGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+Y2FjaGVkTWV0YWRhdGEoKSk7Cit9CisKK3ZvaWQgV2Vi
VVJMUmVzcG9uc2U6OnNldENhY2hlZE1ldGFkYXRhKGNvbnN0IFdlYkNhY2hlZE1ldGFkYXRhJiBt
ZXRhZGF0YSkKK3sKKyAgICBSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1ldGFkYXRhID0g
UGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4obWV0YWRhdGEpOworICAgIG1fcHJpdmF0ZS0+bV9y
ZXNvdXJjZVJlc3BvbnNlLT5zZXRDYWNoZWRNZXRhZGF0YShjYWNoZWRNZXRhZGF0YS5yZWxlYXNl
KCkpOworfQorCiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6OnJlc3BvbnNlVGltZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5yZXNwb25zZVRpbWUo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68403</attachid>
            <date>2010-09-22 11:31:25 -0700</date>
            <delta_ts>2010-12-14 15:00:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45486-20100922113124.patch</filename>
            <type>text/plain</type>
            <size>28372</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmNkODQ2ZGU5OTQ4ZDAxMWMyZDBiZjdlNmNjMzk2MWJkMTI4MzQ3NC4uMWI4MmVlZDliNjViZmJh
OWI1NDVmYTVkYzMyNDFiZDZmMTUzYzU4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wOS0yMiAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgQ2FjaGVkTWV0YWRhdGEgb24gUmVzb3Vy
Y2VSZXNwb25zZSBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgY2FsbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0ODYKKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cHJlY29tcGlsZVNj
cmlwdCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNZXRhZGF0YTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkTWV0YWRhdGE6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNZXRhZGF0
YTo6ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTWV0YWRhdGE6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTWV0YWRhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkTWV0YWRhdGE6OnJlYWRVbnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRNZXRhZGF0YTo6YXBwZW5kVW5zaWduZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTWV0
YWRhdGE6OkNhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRDYWNoZWRN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FjaGVkTWV0YWRh
dGEpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1CcmlkZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y2FjaGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldENhY2hlZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb21wYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmg6CisKIDIwMTAtMDktMjEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBRVCBidWlsZCBmaXguCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcAppbmRleCBhNzc2ZWU3ZDczZmI5MmQ0ODZlNjc3ZDA4NWRhZTE2Mzc5N2RiODRk
Li5jMmZlOTM0ODM0NDY4NGE4OWQzYjdmMWZhNmNmMTBlNjYwMzUzM2FiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBQYXNzT3duUHRyPHY4OjpTY3JpcHREYXRh
PiBWOFByb3h5OjpwcmVjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29kZQog
ICAgICAgICByZXR1cm4gdjg6OlNjcmlwdERhdGE6Ok5ldyhjYWNoZWRNZXRhZGF0YS0+ZGF0YSgp
LCBjYWNoZWRNZXRhZGF0YS0+c2l6ZSgpKTsKIAogICAgIE93blB0cjx2ODo6U2NyaXB0RGF0YT4g
c2NyaXB0RGF0YSh2ODo6U2NyaXB0RGF0YTo6UHJlQ29tcGlsZShjb2RlKSk7Ci0gICAgY2FjaGVk
U2NyaXB0LT5zZXRDYWNoZWRNZXRhZGF0YShkYXRhVHlwZUlELCBzY3JpcHREYXRhLT5EYXRhKCks
IHNjcmlwdERhdGEtPkxlbmd0aCgpKTsKKyAgICBjYWNoZWRTY3JpcHQtPnNldENhY2hlZE1ldGFk
YXRhKENhY2hlZE1ldGFkYXRhOjpjcmVhdGUoZGF0YVR5cGVJRCwgc2NyaXB0RGF0YS0+RGF0YSgp
LCBzY3JpcHREYXRhLT5MZW5ndGgoKSkpOwogCiAgICAgcmV0dXJuIHNjcmlwdERhdGEucmVsZWFz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTWV0YWRhdGEuaCBiL1dl
YkNvcmUvbG9hZGVyL0NhY2hlZE1ldGFkYXRhLmgKaW5kZXggMTIwZTRjMGJhMzc0ODU0MTk1Njdj
YzNkOGVlMzRiZmRmY2E5ODA3YS4uNzM3ZGU2NzNhMTIzYmRjZGIzMzNkMjA0YzVkNjc2OGRkOGMy
ZDA1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTWV0YWRhdGEuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9DYWNoZWRNZXRhZGF0YS5oCkBAIC0zMSw4ICszMSwxMCBAQAogI2lmbmRl
ZiBDYWNoZWRNZXRhZGF0YV9oCiAjZGVmaW5lIENhY2hlZE1ldGFkYXRhX2gKIAorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgorCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ3LDE4ICs0OSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2FjaGVkTWV0YWRhdGEoZGF0YVR5cGVJRCwgZGF0YSwgc2l6ZSkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBkZXNlcmlhbGl6ZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNoZWRN
ZXRhZGF0YT4gZGVzZXJpYWxpemUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FjaGVkTWV0YWRhdGEoZGF0YSwgc2l6
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhY2hlZE1ldGFkYXRhKGJ1ZmZlcikp
OwogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VyaWFsaXplKCkgY29uc3QKKyAg
ICBTaGFyZWRCdWZmZXIqIHNlcmlhbGl6ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9zZXJpYWxpemVkRGF0YTsKKyAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZERhdGEuZ2V0KCk7
CiAgICAgfQogCiAgICAgfkNhY2hlZE1ldGFkYXRhKCkgeyB9CiAKKyAgICBQYXNzUmVmUHRyPENh
Y2hlZE1ldGFkYXRhPiBkZWVwQ29weSgpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKGRh
dGFUeXBlSUQoKSwgZGF0YSgpLCBzaXplKCkpOworICAgIH0KKwogICAgIHVuc2lnbmVkIGRhdGFU
eXBlSUQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHJlYWRVbnNpZ25lZChkYXRhVHlw
ZUlEU3RhcnQpOwpAQCAtNjYsNDkgKzczLDQ5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IGNoYXIq
IGRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fc2VyaWFsaXplZERhdGEuc2l6ZSgp
IDwgZGF0YVN0YXJ0KQorICAgICAgICBpZiAobV9zZXJpYWxpemVkRGF0YS0+c2l6ZSgpIDwgZGF0
YVN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX3NlcmlhbGl6
ZWREYXRhLmRhdGEoKSArIGRhdGFTdGFydDsKKyAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZERh
dGEtPmRhdGEoKSArIGRhdGFTdGFydDsKICAgICB9CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiAobV9zZXJpYWxpemVkRGF0YS5zaXplKCkgPCBkYXRhU3RhcnQp
CisgICAgICAgIGlmIChtX3NlcmlhbGl6ZWREYXRhLT5zaXplKCkgPCBkYXRhU3RhcnQpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1fc2VyaWFsaXplZERhdGEuc2l6ZSgp
IC0gZGF0YVN0YXJ0OworICAgICAgICByZXR1cm4gbV9zZXJpYWxpemVkRGF0YS0+c2l6ZSgpIC0g
ZGF0YVN0YXJ0OwogICAgIH0KIAogcHJpdmF0ZToKICAgICAvLyBSZWFkcyBhbiB1bnNpZ25lZCB2
YWx1ZSBhdCBwb3NpdGlvbi4gUmV0dXJucyAwIG9uIGVycm9yLgogICAgIHVuc2lnbmVkIHJlYWRV
bnNpZ25lZChzaXplX3QgcG9zaXRpb24pIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9zZXJp
YWxpemVkRGF0YS5zaXplKCkgPCBwb3NpdGlvbiArIHNpemVvZih1bnNpZ25lZCkpCisgICAgICAg
IGlmIChtX3NlcmlhbGl6ZWREYXRhLT5zaXplKCkgPCBwb3NpdGlvbiArIHNpemVvZih1bnNpZ25l
ZCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0X3B0cjx1bnNpZ25lZCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KG1fc2VyaWFsaXplZERhdGEuZGF0
YSgpICsgcG9zaXRpb24pKTsKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0X3B0cjx1
bnNpZ25lZCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KG1fc2VyaWFsaXplZERhdGEtPmRhdGEoKSArIHBv
c2l0aW9uKSk7CiAgICAgfQogCiAgICAgLy8gQXBwZW5kcyBhbiB1bnNpZ25lZCB2YWx1ZSB0byB0
aGUgZW5kIG9mIHRoZSBzZXJpYWxpemVkIGRhdGEuCiAgICAgdm9pZCBhcHBlbmRVbnNpZ25lZCh1
bnNpZ25lZCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIG1fc2VyaWFsaXplZERhdGEuYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZ2YWx1ZSksIHNpemVvZih1bnNpZ25lZCkpOwor
ICAgICAgICBtX3NlcmlhbGl6ZWREYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oJnZhbHVlKSwgc2l6ZW9mKHVuc2lnbmVkKSk7CiAgICAgfQogCi0gICAgQ2FjaGVkTWV0
YWRhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgQ2FjaGVkTWV0YWRhdGEo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikKKyAgICAgICAgOiBtX3NlcmlhbGl6ZWRE
YXRhKGJ1ZmZlci5yZWxlYXNlUmVmKCkpCiAgICAgewogICAgICAgICAvLyBTZXJpYWxpemVkIG1l
dGFkYXRhIHNob3VsZCBoYXZlIG5vbi1lbXB0eSBkYXRhLgotICAgICAgICBBU1NFUlQoc2l6ZSA+
IGRhdGFTdGFydCk7Ci0KLSAgICAgICAgbV9zZXJpYWxpemVkRGF0YS5hcHBlbmQoZGF0YSwgc2l6
ZSk7CisgICAgICAgIEFTU0VSVChidWZmZXItPnNpemUoKSA+IGRhdGFTdGFydCk7CiAgICAgfQog
CiAgICAgQ2FjaGVkTWV0YWRhdGEodW5zaWduZWQgZGF0YVR5cGVJRCwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9zZXJpYWxpemVkRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgYW4gSUQgb2YgMCwgaXQg
aXMgdXNlZCBpbnRlcm5hbGx5IHRvIGluZGljYXRlIGVycm9ycy4KICAgICAgICAgQVNTRVJUKGRh
dGFUeXBlSUQpOwogICAgICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICAgICAgYXBwZW5kVW5zaWdu
ZWQoZGF0YVR5cGVJRCk7Ci0gICAgICAgIG1fc2VyaWFsaXplZERhdGEuYXBwZW5kKGRhdGEsIHNp
emUpOworICAgICAgICBtX3NlcmlhbGl6ZWREYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CiAgICAg
fQogCiAgICAgLy8gU2VyaWFsaXphdGlvbiBvZmZzZXRzLiBGb3JtYXQ6IFtEQVRBX1RZUEVfSURd
W0RBVEFdLgpAQCAtMTE3LDkgKzEyNCwxOSBAQCBwcml2YXRlOgogCiAgICAgLy8gU2luY2UgdGhl
IHNlcmlhbGl6YXRpb24gZm9ybWF0IHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3MsIHN0b3JpbmcgaXQg
aW4KICAgICAvLyBzZXJpYWxpemVkIGZvcm0gYXZvaWRzIG5lZWQgZm9yIGEgY29weSBkdXJpbmcg
c2VyaWFsaXphdGlvbi4KLSAgICBWZWN0b3I8Y2hhcj4gbV9zZXJpYWxpemVkRGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcmlhbGl6ZWREYXRhOwogfTsKIAoraW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDYWNoZWRNZXRhZGF0YSYgYSwgY29uc3QgQ2FjaGVkTWV0YWRhdGEm
IGIpCit7CisgICAgcmV0dXJuIGEuc2VyaWFsaXplKCkgPT0gYi5zZXJpYWxpemUoKTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWNoZWRNZXRhZGF0YSYgYSwgY29uc3QgQ2Fj
aGVkTWV0YWRhdGEmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBhNmZmMGZmMjk0MzAxMDAwZGM2OTEy
MGY4YjUwYjlkMjczN2E0MmVkLi44MDZjMDczM2UyZWQ4YmZhMzM1NmU3MzkzYWYzOGVlZmVhZjI3
ZDg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0xNzMsMzIgKzE3MywyMiBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjpzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIHJlY2Vp
dmUgY2FjaGVkIG1ldGFkYXRhIGZyb20gdGhlIHBsYXRmb3JtIG9uY2UuCi0gICAgLy8gSWYgdGhp
cyB0cmlnZ2VycywgaXQgaW5kaWNhdGVzIGFuIGVmZmljaWVuY3kgcHJvYmxlbSB3aGljaCBpcyBt
b3N0Ci0gICAgLy8gbGlrZWx5IHVuZXhwZWN0ZWQgaW4gY29kZSBkZXNpZ25lZCB0byBpbXByb3Zl
IHBlcmZvcm1hbmNlLgotICAgIEFTU0VSVCghbV9jYWNoZWRNZXRhZGF0YSk7Ci0KLSAgICBtX2Nh
Y2hlZE1ldGFkYXRhID0gQ2FjaGVkTWV0YWRhdGE6OmRlc2VyaWFsaXplKGRhdGEsIHNpemUpOwot
fQotCi12b2lkIENhY2hlZFJlc291cmNlOjpzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRh
VHlwZUlELCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnNldENhY2hlZE1ldGFkYXRhKFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1l
dGFkYXRhKQogewogICAgIC8vIEN1cnJlbnRseSwgb25seSBvbmUgdHlwZSBvZiBjYWNoZWQgbWV0
YWRhdGEgcGVyIHJlc291cmNlIGlzIHN1cHBvcnRlZC4KICAgICAvLyBJZiB0aGUgbmVlZCBhcmlz
ZXMgZm9yIG11bHRpcGxlIHR5cGVzIG9mIG1ldGFkYXRhIHBlciByZXNvdXJjZSB0aGlzIGNvdWxk
CiAgICAgLy8gYmUgZW5oYW5jZWQgdG8gc3RvcmUgdHlwZXMgb2YgbWV0YWRhdGEgaW4gYSBtYXAu
Ci0gICAgQVNTRVJUKCFtX2NhY2hlZE1ldGFkYXRhKTsKLQotICAgIG1fY2FjaGVkTWV0YWRhdGEg
PSBDYWNoZWRNZXRhZGF0YTo6Y3JlYXRlKGRhdGFUeXBlSUQsIGRhdGEsIHNpemUpOwotICAgIFJl
c291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKG1fcmVzcG9uc2UsIG1fY2FjaGVkTWV0YWRhdGEt
PnNlcmlhbGl6ZSgpKTsKKyAgICBBU1NFUlQoIW1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKSk7
CisgICAgbV9yZXNwb25zZS5zZXRDYWNoZWRNZXRhZGF0YShjYWNoZWRNZXRhZGF0YSk7CisgICAg
UmVzb3VyY2VIYW5kbGU6OmNhY2hlTWV0YWRhdGEobV9yZXNwb25zZSk7CiB9CiAKIENhY2hlZE1l
dGFkYXRhKiBDYWNoZWRSZXNvdXJjZTo6Y2FjaGVkTWV0YWRhdGEodW5zaWduZWQgZGF0YVR5cGVJ
RCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2FjaGVkTWV0YWRhdGEgfHwgbV9jYWNoZWRNZXRhZGF0
YS0+ZGF0YVR5cGVJRCgpICE9IGRhdGFUeXBlSUQpCisgICAgUmVmUHRyPENhY2hlZE1ldGFkYXRh
PiBjYWNoZWRNZXRhZGF0YSA9IG1fcmVzcG9uc2UuY2FjaGVkTWV0YWRhdGEoKTsKKyAgICBpZiAo
IWNhY2hlZE1ldGFkYXRhIHx8IGNhY2hlZE1ldGFkYXRhLT5kYXRhVHlwZUlEKCkgIT0gZGF0YVR5
cGVJRCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY2FjaGVkTWV0YWRhdGEuZ2V0
KCk7CisgICAgcmV0dXJuIGNhY2hlZE1ldGFkYXRhLmdldCgpOwogfQogCiB2b2lkIENhY2hlZFJl
c291cmNlOjpzZXRSZXF1ZXN0KFJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
aAppbmRleCA5NThjOGZkMGNjMTUwYmVjZmFiNzcwYmQ5YWRkMWU2MDlkNzVlNzM5Li5lOWE0NDJm
ZGJmMmU2YjE5NjY1NmI1MGZiOTNmMzkxNTM4Y2NmYjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNl
LmgKQEAgLTE1NSwxNSArMTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgLy8gU2V0cyB0aGUgc2Vy
aWFsaXplZCBtZXRhZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgcGxhdGZvcm0ncyBjYWNoZS4KLSAg
ICB2b2lkIHNldFNlcmlhbGl6ZWRDYWNoZWRNZXRhZGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
LQotICAgIC8vIENhY2hlcyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0
aGlzIHJlc291cmNlIGFuZCBzdWdnZXN0cwotICAgIC8vIHRoYXQgdGhlIHBsYXRmb3JtIHBlcnNp
c3QgaXQuIFRoZSBkYXRhVHlwZUlEIGlzIGEgcHNldWRvLXJhbmRvbWx5IGNob3NlbgotICAgIC8v
IGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGRhdGEgZ2VuZXJhdGVkIGJ5
IHRoZSBjYWxsZXIuCi0gICAgdm9pZCBzZXRDYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlw
ZUlELCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKLQotICAgIC8vIFJldHVybnMgY2FjaGVkIG1ldGFk
YXRhIG9mIHRoZSBnaXZlbiB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlLgorICAg
IC8vIENhY2hlcyB0aGUgZ2l2ZW4gbWV0YWRhdGEgaW4gYXNzb2NpYXRpb24gd2l0aCB0aGlzIHJl
c291cmNlIGFuZCBzdWdnZXN0cyB0aGF0IHRoZSBwbGF0Zm9ybSBwZXJzaXN0IGl0LgorICAgIHZv
aWQgc2V0Q2FjaGVkTWV0YWRhdGEoUGFzc1JlZlB0cjxDYWNoZWRNZXRhZGF0YT4pOwogICAgIENh
Y2hlZE1ldGFkYXRhKiBjYWNoZWRNZXRhZGF0YSh1bnNpZ25lZCBkYXRhVHlwZUlEKSBjb25zdDsK
IAogICAgIGJvb2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0NsaWVudHMoKSAmJiAh
bV9yZXF1ZXN0ICYmICFtX3ByZWxvYWRDb3VudCAmJiAhbV9oYW5kbGVDb3VudCAmJiAhbV9yZXNv
dXJjZVRvUmV2YWxpZGF0ZSAmJiAhbV9wcm94eVJlc291cmNlOyB9CkBAIC0yMzUsOCArMjI4LDYg
QEAgcHJpdmF0ZToKICAgICBkb3VibGUgY3VycmVudEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBm
cmVzaG5lc3NMaWZldGltZSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPENhY2hlZE1ldGFkYXRhPiBt
X2NhY2hlZE1ldGFkYXRhOwotCiAgICAgZG91YmxlIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAv
LyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCiAKICAgICB1bnNpZ25lZCBt
X2VuY29kZWRTaXplOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOTIwZTNjMjRmMjMxNjFh
NWE0MDQxMTcyYjJmMjc3NzVlZjlmYjE2OC4uZTRjZjU1NTRiMTVkZDEyYWMyY2I1N2RhNjE1NWVk
NzcyM2MxZjdjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC04MCw3ICs4MCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZyBsZW5ndGhSZWNlaXZlZCwgYm9vbCBhbGxBdE9uY2Up
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGNvbnN0IGNo
YXIqLCBpbnQpIHsgfQogICAgICAgICB2b2lkIHdpbGxTdG9wQnVmZmVyaW5nRGF0YShjb25zdCBj
aGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91Ymxl
IGZpbmlzaFRpbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CkBAIC05OCw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBsZW5ndGhSZWNlaXZl
ZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRpZFJlY2VpdmVDYWNo
ZWRNZXRhZGF0YShkYXRhLCBsZW5ndGgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3ZTFlYThiYzI4YThiZTU0ODFlN2Mz
ZDFkYjdkNGJkZDA5MTU0Y2RiLi42YjVkOTEwZjAyZDcxMGM0ZmFkNjZiMmM0MmE1MjdhOWEyNWFh
OTg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTgsMTYgKzE1OCw2
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsK
LSAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1v
dmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRo
aXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhp
cyk7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZUNhY2hlZE1ldGFkYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYg
KGNhbmNlbGxlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggY2I3ZWQ4MWVj
NGE4ZWI3NDU5MDljYzZlMGQzYWI2YWYwYTJkMGQ2My4uZDYwNWY4NTRmOTM4M2YyN2ZjNDQyMmVk
YjE1NDEwNDc1MDAxODliYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC01MSw3
ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZyBsZW5ndGhSZWNlaXZlZCwgYm9v
bCBhbGxBdE9uY2UpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFk
YXRhKGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlckNsaWVudC5oIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaApp
bmRleCBlMThhYmUzOGQ2MTllMzc2M2E0ZmFlMjE1NmYxZDViODA3MTFhOThiLi43NmZkZTQ3NTYw
MTgyMjYxOWQxYjQzZmM0NzZhY2U4YzFiYjljMDMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQqLykgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YShTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciopIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAKaW5kZXggM2Y2ZmFkMjYwOTc5NTA0NmI5ZTAzNmQxY2Q3NGEx
YWMyYmRhNzU3OC4uMDNmY2RiYzRhZmJlMTBjZjZhMGU4MmExY2YzZTJkNjY1YzNlNWI3NiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCkBAIC01NTksMjEgKzU1OSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRSZWNl
aXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpCiAg
ICAgfSBlbHNlIGlmIChyZXF1ZXN0LT5pc0luY3JlbWVudGFsKCkpCiAgICAgICAgIHJlc291cmNl
LT5kYXRhKGxvYWRlci0+cmVzb3VyY2VEYXRhKCksIGZhbHNlKTsKIH0KLSAgICAKLXZvaWQgTG9h
ZGVyOjpIb3N0OjpkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoU3VicmVzb3VyY2VMb2FkZXIqIGxv
YWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpCi17Ci0gICAgUmVmUHRyPEhvc3Q+IHBy
b3RlY3Rvcih0aGlzKTsKLQotICAgIFJlcXVlc3QqIHJlcXVlc3QgPSBtX3JlcXVlc3RzTG9hZGlu
Zy5nZXQobG9hZGVyKTsKLSAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7ICAg
IAotICAgIEFTU0VSVCghcmVzb3VyY2UtPmlzQ2FjaGVWYWxpZGF0b3IoKSk7CiAKLSAgICByZXNv
dXJjZS0+c2V0U2VyaWFsaXplZENhY2hlZE1ldGFkYXRhKGRhdGEsIHNpemUpOwotfQotICAgIAog
dm9pZCBMb2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cyhSZXF1ZXN0UXVldWUmIHJl
cXVlc3RzUGVuZGluZywgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVy
KQogewogICAgIFJlcXVlc3RRdWV1ZSByZW1haW5pbmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9sb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5oCmluZGV4IDRkMzUzZTA5MDJk
ZWJjY2I0MWU5ZmM4YWQ4MDA5ZjFlYTE5MTZlZTcuLjgzYmI2N2QzY2ZkZjY3NTY5NzkxNGUyNWE5
YWVhYWM1NjAwODAyNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5oCisrKyBi
L1dlYkNvcmUvbG9hZGVyL2xvYWRlci5oCkBAIC04Nyw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0
YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqKTsKICAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtQnJpZGdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKaW5kZXggODk0Nzk5Y2E3YTE0NDJjZDZjMDI0MWUzNTQxNTlkOWU5OTRmODI3
NC4uYzBiYzUyY2MxYzg1MGRlOWE3N2VhMjk0YThiMjRhNzVmYWFhOTAwYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlBhc3NSZWZQdHIuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDk5MTBhYzFjNTM5NzRiMzhj
OWUwNTczNTExMzMyNjhlOWZhNTQ5OWYuLjMzODJlOTMxNWFkZWIwZGIzYTM0YjNlZTI1NjFmOGRj
N2U3YTVkZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnByZXBhcmVGb3JVUkwo
Y29uc3QgS1VSTCYgdXJsKQogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhY2hl
TWV0YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYpCit2
b2lkIFJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KQogewogICAgIC8vIE9wdGlvbmFsbHkgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm0uCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDE3ZDE0NzIyMjM0MTRl
NGExMTg2Y2VlZDFjMDI1MDIzOTUyODI5ZDcuLjVlZGYzYjEwNjc5ZTBjZTA4ODMzOWY3NmRmYjkx
MzM3Y2FiZjU3ZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcHJlcGFyZUZv
clVSTChjb25zdCBLVVJMJik7CiAgICAgc3RhdGljIGJvb2wgd2lsbExvYWRGcm9tQ2FjaGUoUmVz
b3VyY2VSZXF1ZXN0JiwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBjYWNoZU1ldGFkYXRhKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKyAgICBzdGF0aWMg
dm9pZCBjYWNoZU1ldGFkYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgc3RhdGljIGJvb2wgZGlkU2VuZEJvZHlEYXRhRGVsZWdhdGVFeGlzdHMoKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAppbmRleCBkOTM1MGVlMjkwMDcxNjBkNzlhZTNjNjQxY2RmMDY0N2Y2OTU5NTMyLi5kMjQ1
Zjg2YzgwYmQzZGVhM2I2ZDcxYTcyY2Y1ZTRlNmY5Y2Y2OGZkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNzIsNyArNzIsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIGludCwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
aW50KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VI
YW5kbGUqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSB7IH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGUy
MzE2NTI3MTgzNzAxMWMzYzhmOTgyYzIyMzlhMjE1NjI4OTdkOTUuLjBhZDVmYzEyYjJjMTYwODcy
ZTRlNWU3Y2JkZGEzNzEzMmMyMWU2ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFBhc3NPd25Q
dHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSCiAgICAgcmVzcG9uc2UtPm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChk
YXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CiAgICAgcmVzcG9uc2UtPnNldExhc3RNb2Rp
ZmllZERhdGUoZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlKTsKICAgICByZXNwb25zZS0+c2V0UmVz
b3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nLnJlbGVhc2UoKSk7Cisg
ICAgcmVzcG9uc2UtPnNldENhY2hlZE1ldGFkYXRhKGRhdGEtPm1fY2FjaGVkTWV0YWRhdGEucmVs
ZWFzZSgpKTsKIAogICAgIHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7CiB9CkBAIC0xMjUsNiAr
MTI2LDggQEAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEoKSBjb24KICAgICBkYXRhLT5tX2xhc3RNb2RpZmll
ZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlKCk7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkVGltaW5n
KQogICAgICAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IG1fcmVzb3VyY2VMb2FkVGlt
aW5nLT5kZWVwQ29weSgpOworICAgIGlmIChtX2NhY2hlZE1ldGFkYXRhKQorICAgICAgICBkYXRh
LT5tX2NhY2hlZE1ldGFkYXRhID0gbV9jYWNoZWRNZXRhZGF0YS0+ZGVlcENvcHkoKTsKICAgICBy
ZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKQEAgLTUxNSw2ICs1MTgsMjAgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3Vy
Y2VMb2FkVGltaW5nPgogICAgIG1fcmVzb3VyY2VMb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkVGlt
aW5nOwogfQogCitDYWNoZWRNZXRhZGF0YSogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlZE1l
dGFkYXRhKCkgY29uc3QKK3sKKyAgICBsYXp5SW5pdCgpOworCisgICAgcmV0dXJuIG1fY2FjaGVk
TWV0YWRhdGEuZ2V0KCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENhY2hl
ZE1ldGFkYXRhKFBhc3NSZWZQdHI8Q2FjaGVkTWV0YWRhdGE+IGNhY2hlZE1ldGFkYXRhKQorewor
ICAgIGxhenlJbml0KCk7CisKKyAgICBtX2NhY2hlZE1ldGFkYXRhID0gY2FjaGVkTWV0YWRhdGE7
Cit9CisKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KCkgY29uc3QKIHsKICAg
ICBjb25zdF9jYXN0PFJlc291cmNlUmVzcG9uc2UqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlKj4odGhpcykpLT5wbGF0Zm9ybUxhenlJbml0KCk7CkBAIC01NDQsNiArNTYxLDEw
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiAgICAgaWYgKGEucmVzb3VyY2VMb2FkVGltaW5n
KCkgIT0gYi5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChhLmNhY2hlZE1ldGFkYXRhKCkgJiYgYi5jYWNoZWRNZXRhZGF0YSgpICYmICphLmNhY2hl
ZE1ldGFkYXRhKCkgPT0gKmIuY2FjaGVkTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKKyAgICBpZiAoYS5jYWNoZWRNZXRh
ZGF0YSgpICE9IGIuY2FjaGVkTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXgg
NjVlMjRhZDE1ZjM3MjQ1MzRjZWUyNDc4OGFjNjdjNDUyYTc3YjMzNS4uYzZjZWI4ZDhiNjEyYjYz
Y2I4MjFlYzA2ZjI0NThiZmRiMmE2NjM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVz
b3VyY2VSZXNwb25zZUJhc2VfaAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKKyNp
bmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCkBAIC0xMDks
NiArMTEwLDkgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2Fk
VGltaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmcoUGFzc1JlZlB0
cjxSZXNvdXJjZUxvYWRUaW1pbmc+KTsKIAorICAgIENhY2hlZE1ldGFkYXRhKiBjYWNoZWRNZXRh
ZGF0YSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVkTWV0YWRhdGEoUGFzc1JlZlB0cjxDYWNo
ZWRNZXRhZGF0YT4pOworCiAgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5
ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIHByb3ZpZGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVtb3J5
IHVzYWdlIGluZm9ybWF0aW9uCiAgICAgdW5zaWduZWQgbWVtb3J5VXNhZ2UoKSBjb25zdAogICAg
IHsKQEAgLTE0Myw2ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0
aW9uSUQ7CiAgICAgYm9vbCBtX2Nvbm5lY3Rpb25SZXVzZWQgOiAxOwogICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIFJlZlB0cjxDYWNoZWRN
ZXRhZGF0YT4gbV9jYWNoZWRNZXRhZGF0YTsKIAogICAgIGJvb2wgbV9pc051bGwgOiAxOwogICAg
IApAQCAtMTgwLDYgKzE4NSw3IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhIDogTm9uY29weWFibGUgewogICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBE
YXRhPiBtX2h0dHBIZWFkZXJzOwogICAgIHRpbWVfdCBtX2xhc3RNb2RpZmllZERhdGU7CiAgICAg
UmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CisgICAgUmVm
UHRyPENhY2hlZE1ldGFkYXRhPiBtX2NhY2hlZE1ldGFkYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjllNzI0ZDQ1ODk1MmM4YzM3YjU2YTU5NzJkMjBk
NGJkNWViYzRmMi4uYjJmYThmYTVhNDBiZmJjN2VlYmViODNiZjM4Njk2YmQ0MmQ0YmVkNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDktMjIgIFRvbnkgR2VudGlsY29yZSAg
PHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQYXNzIENhY2hlZE1ldGFkYXRhIG9uIFJlc291cmNlUmVzcG9uc2UgaW5z
dGVhZCBvZiBpbiBhIHNlcGFyYXRlIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1NDg2CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICog
c3JjL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjYWNoZU1ldGFkYXRhKToKKyAgICAgICAgKiBzcmMvV2ViVVJMUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6bG9hZFRpbWluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFJlc3BvbnNlOjpjYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFJlc3BvbnNlOjpzZXRDYWNoZWRNZXRhZGF0YSk6CisKIDIwMTAtMDktMjEgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBD
aGFwaW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNs
aWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaAppbmRl
eCA3NjE0ZWEzZDFjYzRhY2RmYWM3MWNlZDZjYTU1NjZjNDNjMDlkYjEwLi4wZWM4YTY1ZDY4MDI4
NjAyYjk1YjE4ZTkyNTNiNTk0MDQ4NjA4ZGQzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVVJMTG9hZGVyQ2xpZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8vIENh
bGxlZCB3aGVuIGEgY2h1bmsgb2YgcmVzcG9uc2UgZGF0YSBpcyByZWNlaXZlZC4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViVVJMTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiByZW5k
ZXJlci1nZW5lcmF0ZWQgbWV0YWRhdGEgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgY2FjaGUuCisgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gdGhlIGNocm9taXVtIHBvcnQgbm8gbG9uZ2VyIGNh
bGxzIGl0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViVVJM
TG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIHsgfQogCiAgICAgLy8g
Q2FsbGVkIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaAppbmRleCBhYzc1ZDRjNjRiOWYzY2RjMDI1ZDEzZmNm
MWQ5ZGNhOWI5NTczZjcyLi5jYjcxNjY3MTI3ZTA4YTIyMmUzN2Y2MzA5YWNjZTU1MzNmOTg0YTc5
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCkBAIC00MCw2ICs0MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsgfQogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNTdHJpbmc7CitjbGFzcyBXZWJEYXRhOwogY2xhc3Mg
V2ViSFRUUEhlYWRlclZpc2l0b3I7CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkw7CkBA
IC03OSw5ICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBib29sIGNvbm5lY3Rpb25S
ZXVzZWQoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0Q29ubmVjdGlvblJldXNlZChi
b29sKTsKIAotICAgIFdFQktJVF9BUEkgV2ViVVJMTG9hZFRpbWluZyBsb2FkVGltaW5nKCk7Cisg
ICAgV0VCS0lUX0FQSSBXZWJVUkxMb2FkVGltaW5nIGxvYWRUaW1pbmcoKSBjb25zdDsKICAgICBX
RUJLSVRfQVBJIHZvaWQgc2V0TG9hZFRpbWluZyhjb25zdCBXZWJVUkxMb2FkVGltaW5nJik7CiAK
KyAgICBXRUJLSVRfQVBJIFdlYkRhdGEgY2FjaGVkTWV0YWRhdGEoKSBjb25zdDsKKyAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0Q2FjaGVkTWV0YWRhdGEoY29uc3QgV2ViRGF0YSYpOworCiAgICAgV0VC
S0lUX0FQSSBkb3VibGUgcmVzcG9uc2VUaW1lKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lk
IHNldFJlc3BvbnNlVGltZShkb3VibGUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1Jlc291cmNlSGFuZGxlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IDgzZTAwMTc5YTE4NjBlMmUxZDk4OTJjZGU3ZjQ4OWRlYmI0NjNkYzcuLjM2
YzcxMTU5Yjc5ZjkyNmI0OTMxMjk4YzQ1MmUxZGViZThiNDYwNzcgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICAgICAg
V2ViVVJMTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJVUkxMb2FkZXIqLCBjb25zdCBXZWJVUkxSZXNwb25zZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0
YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlz
aFRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYlVSTExvYWRlciosIGNvbnN0IFdl
YlVSTEVycm9yJik7CiAKQEAgLTE3MywxNSArMTcyLDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOjpkaWRSZWNlaXZlRGF0YSgKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9v
d25lciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7
Ci0gICAgaWYgKG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNwb25zZSAmJiBt
X3N0YXRlICE9IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGEpCi0gICAgICAgIENSQVNIKCk7
Ci0KLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKG1fb3duZXIsIGRhdGEs
IGRhdGFMZW5ndGgpOwotfQotCiB2b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZEZpbmlz
aExvYWRpbmcoV2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgQVNTRVJU
KG1fY2xpZW50KTsKQEAgLTMyOCw5ICszMTgsMTAgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2ls
bExvYWRGcm9tQ2FjaGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSopCiB9CiAKIC8v
IHN0YXRpYwotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FjaGVNZXRhZGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y2FjaGVNZXRhZGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBDaHJvbWl1bUJyaWRnZTo6Y2FjaGVNZXRhZGF0YShyZXNwb25zZS51cmwoKSwg
cmVzcG9uc2UucmVzcG9uc2VUaW1lKCksIGRhdGEpOworICAgIEFTU0VSVChyZXNwb25zZS5jYWNo
ZWRNZXRhZGF0YSgpKTsKKyAgICBDaHJvbWl1bUJyaWRnZTo6Y2FjaGVNZXRhZGF0YShyZXNwb25z
ZS51cmwoKSwgcmVzcG9uc2UucmVzcG9uc2VUaW1lKCksIHJlc3BvbnNlLmNhY2hlZE1ldGFkYXRh
KCktPnNlcmlhbGl6ZSgpLT5idWZmZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYWFlNDEzYzdhMjc0ZWRm
NGQ3NDQyM2Q2MDFkYTE1ZTI3ODc2MzY2MC4uZGY4ZWQ5YzBmMzllNzM2MzNhMWMyMDA2YjI1OTJm
MjUyZTVhY2M2OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25z
ZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTMx
LDkgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9u
c2UuaCIKIAorI2luY2x1ZGUgIkNhY2hlZE1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5oIgogCisjaW5jbHVkZSAi
V2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYkhUVFBIZWFkZXJWaXNpdG9yLmgiCiAjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCkBAIC0xMTgsNyArMTIwLDcgQEAgdm9p
ZCBXZWJVUkxSZXNwb25zZTo6c2V0Q29ubmVjdGlvblJldXNlZChib29sIGNvbm5lY3Rpb25SZXVz
ZWQpCiAgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNldENvbm5lY3Rpb25SZXVz
ZWQoY29ubmVjdGlvblJldXNlZCk7CiB9CiAKLVdlYlVSTExvYWRUaW1pbmcgV2ViVVJMUmVzcG9u
c2U6OmxvYWRUaW1pbmcoKQorV2ViVVJMTG9hZFRpbWluZyBXZWJVUkxSZXNwb25zZTo6bG9hZFRp
bWluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlVSTExvYWRUaW1pbmcobV9wcml2YXRlLT5t
X3Jlc291cmNlUmVzcG9uc2UtPnJlc291cmNlTG9hZFRpbWluZygpKTsKIH0KQEAgLTEyOSw2ICsx
MzEsMTcgQEAgdm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0TG9hZFRpbWluZyhjb25zdCBXZWJVUkxM
b2FkVGltaW5nJiB0aW1pbmcpCiAgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNl
dFJlc291cmNlTG9hZFRpbWluZyhsb2FkVGltaW5nLnJlbGVhc2UoKSk7CiB9CiAKK1dlYkRhdGEg
V2ViVVJMUmVzcG9uc2U6OmNhY2hlZE1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhKG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5jYWNoZWRNZXRh
ZGF0YSgpLT5zZXJpYWxpemUoKSk7CisgICAgcmV0dXJuIFdlYkRhdGEoZGF0YSk7Cit9CisKK3Zv
aWQgV2ViVVJMUmVzcG9uc2U6OnNldENhY2hlZE1ldGFkYXRhKGNvbnN0IFdlYkRhdGEmIG1ldGFk
YXRhKQoreworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5zZXRDYWNoZWRNZXRh
ZGF0YShDYWNoZWRNZXRhZGF0YTo6ZGVzZXJpYWxpemUobWV0YWRhdGEpKTsKK30KKwogZG91Ymxl
IFdlYlVSTFJlc3BvbnNlOjpyZXNwb25zZVRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX3By
aXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+cmVzcG9uc2VUaW1lKCk7Cg==
</data>
<flag name="review"
          id="57915"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>