<?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>222634</bug_id>
          
          <creation_ts>2021-03-02 16:22:13 -0800</creation_ts>
          <short_desc>Use adoptNS() right away after calling [obj copy] / [obj mutableCopy]</short_desc>
          <delta_ts>2021-03-03 15:08:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>mifenton</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735114</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-02 16:22:13 -0800</bug_when>
    <thetext>Use adoptNS() right away after calling [obj copy] / [obj mutableCopy] to minimize the chance of leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735119</commentid>
    <comment_count>1</comment_count>
      <attachid>422020</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-02 16:29:07 -0800</bug_when>
    <thetext>Created attachment 422020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735462</commentid>
    <comment_count>2</comment_count>
      <attachid>422020</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-03 13:02:18 -0800</bug_when>
    <thetext>Comment on attachment 422020
Patch

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

&gt; Source/WebCore/platform/cocoa/SystemVersion.mm:40
&gt; -    return [[systemVersionInfo objectForKey:@&quot;ProductVersion&quot;] copy];
&gt; +    return [systemVersionInfo objectForKey:@&quot;ProductVersion&quot;];

What’s the rationale for moving from copy to retain here?

I’m not saying it’s wrong, but we are removing the copy. That means if it happens to be a mutable dictionary we will keep a pointer to it rather than making an immutable copy. I could imagine making the copy in an effort to avoid things being mutated under us or perhaps to optimize memory use since the immutable copy could be smaller.

&gt; Source/WebKit/Shared/ApplePay/ApplePayPaymentSetupFeatures.mm:74
&gt; +        allowedClasses.get() = WTFMove(allowed);

What’s the rationale for moving from copy to retain here?

&gt; Source/WebKit/Shared/ApplePay/PaymentSetupConfiguration.mm:93
&gt; +        allowedClasses.get() = WTFMove(allowed);

What’s the rationale for moving from copy to retain here?

&gt; Source/WebKit/Shared/ApplePay/cocoa/PaymentSetupConfiguration.mm:70
&gt; +        allowedClasses.get() = WTFMove(allowed);

What’s the rationale for moving from copy to retain here?

&gt; Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm:110
&gt; -    }() copy];
&gt; +    }());

What’s the rationale for moving from copy to retain here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735464</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-03 13:03:50 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 422020 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422020&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/SystemVersion.mm:40
&gt; &gt; -    return [[systemVersionInfo objectForKey:@&quot;ProductVersion&quot;] copy];
&gt; &gt; +    return [systemVersionInfo objectForKey:@&quot;ProductVersion&quot;];
&gt; 
&gt; What’s the rationale for moving from copy to retain here?
&gt; 
&gt; I’m not saying it’s wrong, but we are removing the copy. That means if it
&gt; happens to be a mutable dictionary we will keep a pointer to it rather than
&gt; making an immutable copy. I could imagine making the copy in an effort to
&gt; avoid things being mutated under us or perhaps to optimize memory use since
&gt; the immutable copy could be smaller.

I did not realize the benefits of calling [obj copy] here. I will re-introduce those then.

&gt; 
&gt; &gt; Source/WebKit/Shared/ApplePay/ApplePayPaymentSetupFeatures.mm:74
&gt; &gt; +        allowedClasses.get() = WTFMove(allowed);
&gt; 
&gt; What’s the rationale for moving from copy to retain here?
&gt; 
&gt; &gt; Source/WebKit/Shared/ApplePay/PaymentSetupConfiguration.mm:93
&gt; &gt; +        allowedClasses.get() = WTFMove(allowed);
&gt; 
&gt; What’s the rationale for moving from copy to retain here?
&gt; 
&gt; &gt; Source/WebKit/Shared/ApplePay/cocoa/PaymentSetupConfiguration.mm:70
&gt; &gt; +        allowedClasses.get() = WTFMove(allowed);
&gt; 
&gt; What’s the rationale for moving from copy to retain here?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm:110
&gt; &gt; -    }() copy];
&gt; &gt; +    }());
&gt; 
&gt; What’s the rationale for moving from copy to retain here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735469</commentid>
    <comment_count>4</comment_count>
      <attachid>422020</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-03 13:05:52 -0800</bug_when>
    <thetext>Comment on attachment 422020
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/cocoa/SystemVersion.mm:40
&gt;&gt;&gt; +    return [systemVersionInfo objectForKey:@&quot;ProductVersion&quot;];
&gt;&gt; 
&gt;&gt; What’s the rationale for moving from copy to retain here?
&gt;&gt; 
&gt;&gt; I’m not saying it’s wrong, but we are removing the copy. That means if it happens to be a mutable dictionary we will keep a pointer to it rather than making an immutable copy. I could imagine making the copy in an effort to avoid things being mutated under us or perhaps to optimize memory use since the immutable copy could be smaller.
&gt; 
&gt; I did not realize the benefits of calling [obj copy] here. I will re-introduce those then.

These are *possible* benefits. Also possible that someone had a choice of typing &quot;retain&quot; or &quot;copy&quot; and selected copy without thinking deeply about tradeoffs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735477</commentid>
    <comment_count>5</comment_count>
      <attachid>422142</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-03 13:15:57 -0800</bug_when>
    <thetext>Created attachment 422142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735552</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-03 15:07:13 -0800</bug_when>
    <thetext>Committed r273848: &lt;https://commits.webkit.org/r273848&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422142.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735553</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-03 15:08:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/75005651&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422020</attachid>
            <date>2021-03-02 16:29:07 -0800</date>
            <delta_ts>2021-03-03 13:15:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222634-20210302162906.patch</filename>
            <type>text/plain</type>
            <size>22073</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NmM3ZGFhYWZhNTNj
ZGRhOGQ3ZThjYjc0MDVlZWFiOWY2Y2I2OC4uMjVlMDBjNTgyZDk4YjEzYTU5MzI4NjUzOTBmZGZl
NDJkNTIxYWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdo
dCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBjb3B5XSAvIFtvYmogbXV0YWJsZUNvcHldCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYWRvcHROUygp
IHJpZ2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2JqIGNvcHldIC8gW29iaiBtdXRhYmxlQ29weV0g
dG8gbWluaW1pemUgdGhlIGNoYW5jZSBvZiBsZWFrcy4KKworICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGRlZmF1bHRQYXJhZ3JhcGhTdHlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3lz
dGVtTWFya2V0aW5nVmVyc2lvbik6CisKIDIwMjEtMDMtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBNRURJQV9TT1VSQ0UgaW4gSU9TIFNpbXVs
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA1ODM5MTlkZTAyNGIwZTA1YTVkNTQ2ZjgwZGVkZTQ0OWFlMzFiZWI0
Li45MWUxNmMzY2YxOGJiOWVkY2RlYjFkNjY3MWIzMDVlMGFmZjZmMjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIxLTAzLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdodCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBj
b3B5XSAvIFtvYmogbXV0YWJsZUNvcHldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgYWRvcHROUygpIHJpZ2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBb
b2JqIGNvcHldIC8gW29iaiBtdXRhYmxlQ29weV0gdG8gbWluaW1pemUgdGhlIGNoYW5jZSBvZiBs
ZWFrcy4KKworICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLm1tOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bi5tbToKKyAgICAgICAgKFdlYktpdEFkZGl0aW9uczo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVu
Y2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtRGlyZWN0b3J5UGF0aCk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4aXN0aW5nU2VydmljZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojp0
ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoKToKKwogMjAyMS0wMy0wMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lz
dGVtIGxhbmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAxODBmYzQ3MjdiMDE0MTdkZTk2YTczNzIyYzU4OWIyNzdl
MjZiMjgzLi44MDg4NWQ4Y2ZjNTFlNTg3MTIyMjU4MGMzM2QzZTE2Y2IzOTJiYzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMDIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYWRvcHROUygpIHJpZ2h0
IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2JqIGNvcHldIC8gW29iaiBtdXRhYmxlQ29weV0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhZG9wdE5TKCkg
cmlnaHQgYXdheSBhZnRlciBjYWxsaW5nIFtvYmogY29weV0gLyBbb2JqIG11dGFibGVDb3B5XSB0
byBtaW5pbWl6ZSB0aGUgY2hhbmNlIG9mIGxlYWtzLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bh
c3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgIChfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFy
Y2hpdmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06
CisgICAgICAgIChvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICAoK1tXZWJBcHBs
aWNhdGlvbkNhY2hlIGluaXRpYWxpemVXaXRoQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAg
KGFwcGxpY2F0aW9uQ2FjaGVCdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoY2xhc3NJQkNyZWF0b3JJRCk6CisgICAgICAgICgr
W1dlYlByZWZlcmVuY2VzIF9zZXRJQkNyZWF0b3JJRDpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVy
ZW5jZXMgX0lCQ3JlYXRvcklEXSk6CisKIDIwMjEtMDMtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBs
YW5ndWFnZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMTk0ZDNkNTJhOWM5MGEw
MTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNC4uNjVlODU1MjUyNTBkNDBiYWMwYzNmMzg1NmI3ODM5
ODM2MGMwYjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtNTE3LDEzICs1MTcsMTMgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnRG
b3JOYW1lQW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwgTlNNdXQKIAog
c3RhdGljIE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgpCiB7Ci0gICAg
c3RhdGljIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlICpkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBu
aWw7Ci0gICAgaWYgKCFkZWZhdWx0UGFyYWdyYXBoU3R5bGUpIHsKLSAgICAgICAgZGVmYXVsdFBh
cmFncmFwaFN0eWxlID0gW1tQbGF0Zm9ybU5TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFw
aFN0eWxlXSBtdXRhYmxlQ29weV07CisgICAgc3RhdGljIGF1dG8gZGVmYXVsdFBhcmFncmFwaFN0
eWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgYXV0byBkZWZhdWx0UGFyYWdy
YXBoU3R5bGUgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJh
Z3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKICAgICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHls
ZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwogICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0
eWxlIHNldFRhYlN0b3BzOkBbXV07Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBo
U3R5bGU7CisgICAgICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7CisgICAgfSgpKTsK
KyAgICByZXR1cm4gZGVmYXVsdFBhcmFncmFwaFN0eWxlLmdldCgpLmdldCgpOwogfQogCiBSZWZQ
dHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24ubW0KaW5kZXggZGI0
MmVmZWY2OGY1NTdjZmVlNDUyNmU1MGY1MjRiOTc3M2IzMDk1ZS4uNjVjYTlkNTAxYTcwYjY3NDYz
ZGNmOTRhMWI3NmY5NGFlNDI2MzVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TeXN0ZW1WZXJzaW9uLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIE5TU3RyaW5nICpjcmVhdGVTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uKCkK
K3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24o
KQogewogICAgIC8vIENhbid0IHVzZSAtW05TUHJvY2Vzc0luZm8gb3BlcmF0aW5nU3lzdGVtVmVy
c2lvblN0cmluZ10gYmVjYXVzZSBpdCBoYXMgdG9vIG11Y2ggc3R1ZmYgd2UgZG9uJ3Qgd2FudC4K
ICAgICBOU1N0cmluZyAqc3lzdGVtTGlicmFyeVBhdGggPSBbTlNTZWFyY2hQYXRoRm9yRGlyZWN0
b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1N5c3RlbURvbWFpbk1hc2ssIFlF
Uykgb2JqZWN0QXRJbmRleDowXTsKQEAgLTM3LDEzICszNywxMyBAQCBzdGF0aWMgTlNTdHJpbmcg
KmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKQogI2VuZGlmCiAgICAgTlNTdHJpbmcgKnN5
c3RlbVZlcnNpb25QbGlzdFBhdGggPSBbc3lzdGVtTGlicmFyeVBhdGggc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QiXTsKICAg
ICBOU0RpY3Rpb25hcnkgKnN5c3RlbVZlcnNpb25JbmZvID0gW05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aENvbnRlbnRzT2ZGaWxlOnN5c3RlbVZlcnNpb25QbGlzdFBhdGhdOwotICAgIHJldHVy
biBbW3N5c3RlbVZlcnNpb25JbmZvIG9iamVjdEZvcktleTpAIlByb2R1Y3RWZXJzaW9uIl0gY29w
eV07CisgICAgcmV0dXJuIFtzeXN0ZW1WZXJzaW9uSW5mbyBvYmplY3RGb3JLZXk6QCJQcm9kdWN0
VmVyc2lvbiJdOwogfQogCiBOU1N0cmluZyAqc3lzdGVtTWFya2V0aW5nVmVyc2lvbigpCiB7Ci0g
ICAgc3RhdGljIE5TU3RyaW5nICp2ZXJzaW9uID0gY3JlYXRlU3lzdGVtTWFya2V0aW5nVmVyc2lv
bigpOwotICAgIHJldHVybiB2ZXJzaW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNTdHJpbmc+PiB2ZXJzaW9uID0gY3JlYXRlU3lzdGVtTWFya2V0aW5nVmVyc2lvbigp
OworICAgIHJldHVybiB2ZXJzaW9uLmdldCgpLmdldCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBG
ZWF0dXJlcy5tbQppbmRleCBjY2VlZWM0MDQ1MDY3YjI5M2Y5ODU4M2JhOWQ4ZDkzYjExNGUzMTkw
Li5mOWVlZmUwYjBmZWQ1NzJhODg5OThkZmNmZTAyYTQ1MDU1MGEyNWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNl
dHVwRmVhdHVyZXMubW0KQEAgLTY0LDE3ICs2NCwxNyBAQCB2b2lkIFBheW1lbnRTZXR1cEZlYXR1
cmVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBPcHRpb25hbDxQYXlt
ZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVyZXM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2VzOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGFsbG93ZWRDbGFzc2Vz
OwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewogICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml0pOwogICAgICAgICBbYWxsb3dlZCBh
ZGRPYmplY3Q6W05TQXJyYXkgY2xhc3NdXTsKICAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0
dXBGZWF0dXJlQ2xhc3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwRmVhdHVyZUNsYXNzKCkpCiAg
ICAgICAgICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBGZWF0dXJlQ2xhc3Nd
OwotICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgICAgICBhbGxv
d2VkQ2xhc3Nlcy5nZXQoKSA9IFdURk1vdmUoYWxsb3dlZCk7CiAgICAgfSk7CiAKLSAgICBhdXRv
IHBsYXRmb3JtRmVhdHVyZXMgPSBJUEM6OmRlY29kZTxOU0FycmF5PFBLUGF5bWVudFNldHVwRmVh
dHVyZSAqPj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAgIGF1dG8gcGxhdGZvcm1GZWF0
dXJlcyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+PihkZWNv
ZGVyLCBhbGxvd2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUZlYXR1
cmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpp
bmRleCBlZmFmZDQxNGVlNTg3ZTU5ZWZjMzRiMTQ4YzkwZDA0MzkzY2NiZjlkLi5kNzEyMzI1YzJm
OWEyZjY2ZGY3MzJlNzU2MTQ5NmFiMzM5MzRlZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KQEAg
LTg0LDE2ICs4NCwxNiBAQCB2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIE9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKmFsbG93ZWRDbGFzc2VzOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGFsbG93ZWRDbGFzc2VzOwog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewogICAgICAgICBhdXRvIGFsbG93ZWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6MV0pOwogICAgICAgICBpZiAoYXV0byBwa1Bh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzcyA9IFBBTDo6Z2V0UEtQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uQ2xhc3MoKSkKICAgICAgICAgICAgIFthbGxvd2VkIGFkZE9iamVjdDpwa1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb25DbGFzc107Ci0gICAgICAgIGFsbG93ZWRDbGFzc2VzID0gW2Fs
bG93ZWQgY29weV07CisgICAgICAgIGFsbG93ZWRDbGFzc2VzLmdldCgpID0gV1RGTW92ZShhbGxv
d2VkKTsKICAgICB9KTsKIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMuZ2V0KCkuZ2V0KCkpOwogICAgIGlmICghY29u
ZmlndXJhdGlvbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggNmY2ZTRlYWY4MjBlNDYwNTUyOWJjMzYwMmI4MWVjODc5
YzUwZTUwNy4uNzBkNTcwOWY0N2JlMDEyOWMyMzIxMDA1YzJjZjIzMjNiOTY0YjdjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCkBAIC02MSwxNiArNjEsMTYgQEAgdm9pZCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogCiBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHN0YXRpYyBO
U0FycmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgYXV0
byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OjFdKTsKICAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCiAgICAgICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3Nd
OwotICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgICAgICBhbGxv
d2VkQ2xhc3Nlcy5nZXQoKSA9IFdURk1vdmUoYWxsb3dlZCk7CiAgICAgfSk7CiAKLSAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+
KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6
OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFz
c2VzLmdldCgpLmdldCgpKTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IGJmNzJiZjI1MjJiYWMy
ZmViNjFkZjNjODg5MDJlNDk2MzY4ZDlhZmUuLjNmYjM1ZjEzMGUxZmIwM2NlZTAxNWMyMDA5MTBk
MmMxNjMzOTQ5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtMTAwLDE2ICsxMDAsMTYgQEAg
c3RhdGljIGJvb2wgc2hvdWxkTGVha0Jvb3N0KGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIAogc3RhdGljIE5TU3RyaW5nICpzeXN0ZW1EaXJlY3Rv
cnlQYXRoKCkKIHsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKnBhdGggPSBbXnsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gcGF0aCA9IHJldGFpblB0ciheewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgICAgICBjaGFyICpzaW11bGF0
b3JSb290ID0gZ2V0ZW52KCJTSU1VTEFUT1JfUk9PVCIpOwogICAgICAgICByZXR1cm4gc2ltdWxh
dG9yUm9vdCA/IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMvU3lzdGVtLyIsIHNpbXVs
YXRvclJvb3RdIDogQCIvU3lzdGVtLyI7CiAjZWxzZQogICAgICAgICByZXR1cm4gQCIvU3lzdGVt
LyI7CiAjZW5kaWYKLSAgICB9KCkgY29weV07CisgICAgfSgpKTsKIAotICAgIHJldHVybiBwYXRo
OworICAgIHJldHVybiBwYXRoLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvU2VydmljZXNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Nl
cnZpY2VzQ29udHJvbGxlci5tbQppbmRleCAxM2VhNGEwYjJiNTE5ZTkyMDMzNjRmMjBkZDNhMjQ3
YWM4ZjQ4ZDM2Li5lYTVjMzIzOTJkNzFjZjNkNzJkZGU0NTJkYzRjYjI2ODg2MzliZGE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0K
QEAgLTEwMSwxOSArMTAxLDIwIEBAIHZvaWQgU2VydmljZXNDb250cm9sbGVyOjpyZWZyZXNoRXhp
c3RpbmdTZXJ2aWNlcyhib29sIHJlZnJlc2hJbW1lZGlhdGVseSkKICAgICAgICAgICAgIG1faGFz
U2VsZWN0aW9uU2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
c3RhdGljIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ1dpdGhSaWNoQ29udGVu
dCA9IFtdIHsKLSAgICAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnJpY2hTdHJp
bmc7Ci0gICAgICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFsmcmljaFN0cmluZ10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXR0cmlidXRlZFN0cmluZz4+IGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQ7Cisg
ICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250
ZW50T25jZUZsYWc7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKGF0dHJpYnV0ZWRTdHJpbmdXaXRo
UmljaENvbnRlbnRPbmNlRmxhZywgWyZdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIHsKICAgICAgICAgICAgICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdF0pOwogICAgICAg
ICAgICAgICAgIGF1dG8gY2VsbCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50Q2VsbCBhbGxv
Y10gaW5pdEltYWdlQ2VsbDppbWFnZV0pOwogICAgICAgICAgICAgICAgIFthdHRhY2htZW50IHNl
dEF0dGFjaG1lbnRDZWxsOmNlbGwuZ2V0KCldOwotICAgICAgICAgICAgICAgIHJpY2hTdHJpbmcg
PSBbW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0
YWNobWVudC5nZXQoKV0gbXV0YWJsZUNvcHldOworICAgICAgICAgICAgICAgIGF1dG8gcmljaFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhB
dHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCldIG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICAg
ICAgW3JpY2hTdHJpbmcgYXBwZW5kQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXTsK
KyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50LmdldCgpID0g
V1RGTW92ZShyaWNoU3RyaW5nKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJu
IHJpY2hTdHJpbmc7Ci0gICAgICAgIH0oKTsKKyAgICAgICAgfSk7CiAKLSAgICAgICAgaGFzQ29t
cGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoc2VydmljZUxvb2t1cEdyb3VwLmdldCgpLCBAWyBhdHRy
aWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50IF0sIFt0aGlzXSAoYm9vbCBoYXNTZXJ2aWNlcykg
eworICAgICAgICBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhzZXJ2aWNlTG9va3VwR3Jv
dXAuZ2V0KCksIEBbIGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQuZ2V0KCkuZ2V0KCkg
XSwgW3RoaXNdIChib29sIGhhc1NlcnZpY2VzKSB7CiAgICAgICAgICAgICBtX2hhc1JpY2hDb250
ZW50U2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGQyYjA0MTAxNzUxYzcz
NjdlZGJiZmE3ZWYzODE2OWNkZmFkYWY3MTMuLmYxYjFmZmZjMjFhMjhjMWRkZDFiMjAxNTJhNzU0
M2I4YjYzM2UxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQpAQCAtNDExLDE3ICs0MTEsMTYgQEAgQ0FMYXllciAqV2ViUGFnZVByb3h5Ojph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKIAogc3RhdGljIE5TU3RyaW5n
ICp0ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKnRl
bXBvcmFyeVBERkRpcmVjdG9yeVBhdGg7Ci0KLSAgICBpZiAoIXRlbXBvcmFyeVBERkRpcmVjdG9y
eVBhdGgpIHsKKyAgICBzdGF0aWMgYXV0byB0ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9y
eVRlbXBsYXRlID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0UERGcy1YWFhYWFgiXTsKICAgICAgICAgQ1N0cmluZyB0ZW1wbGF0
ZVJlcHJlc2VudGF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeVRlbXBsYXRlIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbl07CiAKICAgICAgICAgaWYgKG1rZHRlbXAodGVtcGxhdGVSZXByZXNlbnRh
dGlvbi5tdXRhYmxlRGF0YSgpKSkKLSAgICAgICAgICAgIHRlbXBvcmFyeVBERkRpcmVjdG9yeVBh
dGggPSBbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uOnRlbXBsYXRlUmVwcmVzZW50YXRpb24uZGF0YSgpIGxlbmd0aDp0ZW1w
bGF0ZVJlcHJlc2VudGF0aW9uLmxlbmd0aCgpXSBjb3B5XTsKLSAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRo
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOnRlbXBsYXRlUmVwcmVzZW50YXRpb24uZGF0YSgpIGxl
bmd0aDp0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uLmxlbmd0aCgpXSBjb3B5XSk7CisgICAgICAgIHJl
dHVybiBSZXRhaW5QdHI8aWQ+IHsgfTsKKyAgICB9KCkpOwogCi0gICAgcmV0dXJuIHRlbXBvcmFy
eVBERkRpcmVjdG9yeVBhdGg7CisgICAgcmV0dXJuIHRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGgu
Z2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IGZlNmE1Nzc3MzA5YTEw
YzI5MjgwNGFmMjYyMGE3MGQ5Yzc2N2NhMjIuLjc4ODU3NzQzODc3NmYyYTk3ODQwNGRlYmVmZWRi
MDVjYzBhY2Q0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC04MSwxOCArODEsMTUgQEAgc3RhdGljIE5TQXJy
YXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKICAgICByZXR1
cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0
ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkKLXsKLSAgICBOU011dGFibGVBcnJh
eSAqdHlwZXMgPSBbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkgbXV0YWJs
ZUNvcHldOwotICAgIFt0eXBlcyBhZGRPYmplY3Q6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCld
OwotICAgIFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwotICAgIHJldHVy
biB0eXBlczsKLX0KLQogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRo
QXJjaGl2ZSAodm9pZCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSBfY3JlYXRlV3Jp
dGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKTsKLSAgICByZXR1cm4gdHlwZXM7CisgICAg
c3RhdGljIGF1dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBhdXRv
IHR5cGVzID0gYWRvcHROUyhbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkg
bXV0YWJsZUNvcHldKTsKKyAgICAgICAgW3R5cGVzIGFkZE9iamVjdDpsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5
cGVdOworICAgICAgICByZXR1cm4gdHlwZXM7CisgICAgfSgpKTsKKyAgICByZXR1cm4gdHlwZXMu
Z2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxlVHlwZXNGb3JJbWFn
ZUluY2x1ZGluZ0FyY2hpdmU6KEJPT0wpaGFzQXJjaGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUu
bW0KaW5kZXggNTgxNDJmNGE3Yjk2MTViYTc1ODViZGVlYTM3YjE2NjM3MTNlMjNjOS4uZGFkNmJk
OTBiZjlmYzVlYjE3Zjc3YTcwNTFhM2VkZDY0MmZmYWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tCkBAIC00Miw3ICs0MiwxMSBAQAogQGltcGxlbWVudGF0aW9uIFdlYkFwcGxpY2F0aW9u
Q2FjaGUKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgTlNTdHJpbmcgKm92ZXJy
aWRlQnVuZGxlSWRlbnRpZmllcjsKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+JiBvdmVycmlk
ZUJ1bmRsZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNTdHJpbmc+PiBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIG92ZXJy
aWRlQnVuZGxlSWRlbnRpZmllcjsKK30KIAogLy8gRklYTUU6IFRoaXMgd2lsbCBiZSByZW1vdmVk
IHdoZW4gV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRoSWZOZWNlc3NhcnkoKQog
Ly8gaXMgbW92ZWQgZnJvbSBXZWJWaWV3Lm1tIHRvIFdlYktpdEluaXRpYWxpemVBcHBsaWNhdGlv
bkNhY2hlSWZOZWNlc3NhcnkoKSBpbiB0aGlzIGZpbGUuCkBAIC01NSw4ICs1OSw4IEBAICsgKHZv
aWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50
aWZpZXIKIAogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KCZX
ZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlckNsaWVudCgpKTsKIAotICAgIEFTU0VSVCghb3ZlcnJpZGVCdW5kbGVJZGVu
dGlmaWVyKTsKLSAgICBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIgPSBbYnVuZGxlSWRlbnRpZmll
ciBjb3B5XTsKKyAgICBBU1NFUlQoIW92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcigpKTsKKyAgICBv
dmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoKSA9IGFkb3B0TlMoW2J1bmRsZUlkZW50aWZpZXIgY29w
eV0pOwogCiAgICAgaW5pdGlhbGl6ZWQgPSBZRVM7CiB9CkBAIC02NSw4ICs2OSw4IEBAICsgKHZv
aWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50
aWZpZXIKIHN0YXRpYyBOU1N0cmluZyAqYXBwbGljYXRpb25DYWNoZUJ1bmRsZUlkZW50aWZpZXIo
KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKG92ZXJyaWRlQnVuZGxlSWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcjsKKyAgICBp
ZiAob3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZUJ1
bmRsZUlkZW50aWZpZXIoKS5nZXQoKTsKICAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246
OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybiBAImNvbS5hcHBsZS5XZWJBcHBDYWNo
ZSI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCmluZGV4IGZiOTJjMTYxNTI0ZmQ5ZTc0ZGY2ZTRjOTY0ZmNkNzIxZDVkNTBi
NmQuLmYyNjI3NzY1M2NlYmJlYzViNGNkMjYxYzJlN2ZmYzIwMTc0MjEzMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMTY1
NCwxMiArMTY1NCwxNSBAQCArICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1Rv
U3lzdGVtRW5jb2RpbmcKICAgICAgICAgQHsgV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQ
cmVmZXJlbmNlS2V5OiBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3RlbUxhbmd1YWdlKCkg
fV07CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKK3N0YXRp
YyBSZXRhaW5QdHI8TlNTdHJpbmc+JiBjbGFzc0lCQ3JlYXRvcklEKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gY2xhc3NJQkNyZWF0b3JJRDsKKyAg
ICByZXR1cm4gY2xhc3NJQkNyZWF0b3JJRDsKK30KIAogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6
KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgYXV0byBvbGQgPSBhZG9wdE5TKGNsYXNzSUJDcmVh
dG9ySUQpOwotICAgIGNsYXNzSUJDcmVhdG9ySUQgPSBbc3RyaW5nIGNvcHldOworICAgIGNsYXNz
SUJDcmVhdG9ySUQoKSA9IGFkb3B0TlMoW3N0cmluZyBjb3B5XSk7CiB9CiAKIC0gKEJPT0wpaXNE
T01QYXN0ZUFsbG93ZWQKQEAgLTI5NTQsNyArMjk1Nyw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJQ
cmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwpCiAKICsgKE5TU3RyaW5nICopX0lCQ3JlYXRvcklECiB7
Ci0gICAgcmV0dXJuIGNsYXNzSUJDcmVhdG9ySUQ7CisgICAgcmV0dXJuIGNsYXNzSUJDcmVhdG9y
SUQoKS5nZXQoKTsKIH0KIAogKyAoTlNTdHJpbmcgKilfY29uY2F0ZW5hdGVLZXlXaXRoSUJDcmVh
dG9ySUQ6KE5TU3RyaW5nICopa2V5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNGM1OTNlNWJhMWUyOGQwNWUzN2E1NTVkMDBiYzUxYjdmNzJmMGEw
Ny4uMzkxNDVlYzUxOTBlYzQ4YjAyZWMzNTQ5MDU0ODBhMjhhNGY3MGFhNSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTAzLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IGFkb3B0TlMoKSByaWdodCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBjb3B5XSAvIFtvYmogbXV0
YWJsZUNvcHldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjI2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgYWRvcHROUygpIHJpZ2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2JqIGNvcHldIC8gW29i
aiBtdXRhYmxlQ29weV0gdG8gbWluaW1pemUgdGhlIGNoYW5jZSBvZiBsZWFrcy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudU1vdXNlRXZlbnRz
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuVGVzdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAg
ICAgIChURVNUKToKKwogMjAyMS0wMy0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxhbmd1YWdlIGRv
ZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudU1vdXNlRXZlbnRzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VFdmVudHMu
bW0KaW5kZXggMzY4MjJjZjJmY2Q0NDY3YThmYWUwYTZmNTU2NDFhOGIyNDc4YzAyNC4uYTUyYjUx
ZTdlZmMwYmE3OWUzNTdmMmYzZGEyMTY4OGE1MzI4MjdjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VFdmVudHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VF
dmVudHMubW0KQEAgLTU1LDEwICs1NSwxMCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KE5TRXZlbnRN
b2RpZmllckZsYWdzIGZsYWdzLCBOU0V2ZW50VHlwZSBtb3VzZURvd25UeXBlLCBOU0V2ZQogICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIF9fYmxvY2sgdm9pZCheY29tcGxldGlvbkhhbmRsZXJD
b3B5KShOU01lbnUgKik7CisgICAgX19ibG9jayBCbG9ja1B0cjx2b2lkKE5TTWVudSAqKT4gY29t
cGxldGlvbkhhbmRsZXJDb3B5OwogICAgIFt1aURlbGVnYXRlIHNldEdldENvbnRleHRNZW51RnJv
bVByb3Bvc2VkTWVudTpeKE5TTWVudSAqLCBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvICosIGlk
IDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNNZW51ICopKSB7
CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBbY29tcGxldGlvbkhhbmRsZXIgY29w
eV07CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBjb21wbGV0aW9uSGFuZGxl
cjsKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9KTsKICAgICB9XTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0KaW5kZXggYTU5ZGM0ZjZhM2M5OTI3Y2Q1OGNjYWYwZjI4ODI1
ODk1NTVlODM5Ni4uOWUxZTUxY2M3OTBmMWM2ZDg4MDMyZDViMzYyMmZkMWE1Njg3M2MyNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCBURVNUKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVk
V29ybGQpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmln
YXRpb24pOwogCiAgICAgX19ibG9jayBib29sIGlzRG9uZUV2YWx1YXRpbmdTY3JpcHQgPSBmYWxz
ZTsKLSAgICBfX2Jsb2NrIE5TU3RyaW5nICpyZXN1bHRWYWx1ZSA9IEAiIjsKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0VmFsdWUgPSBAIiI7CiAgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OgogICAgICAgICBAInZhciByZXN1bHQ7IgogICAgICAgICAgImlmICh3
aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyKSB7IgpAQCAtMTQyLDEzICsxNDIsMTMg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNp
Y1Bvc3RJc29sYXRlZFdvcmxkKQogICAgICAgICAgIn0gIiAKICAgICAgICAgICJyZXN1bHQ7Igog
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3IpIHsK
LSAgICAgICAgICAgIHJlc3VsdFZhbHVlID0gWygoTlNEaWN0aW9uYXJ5ICopdmFsdWUpW0AicmVz
dWx0Il0gY29weV07CisgICAgICAgICAgICByZXN1bHRWYWx1ZSA9ICgoTlNEaWN0aW9uYXJ5ICop
dmFsdWUpW0AicmVzdWx0Il07CiAgICAgICAgICAgICBpc0RvbmVFdmFsdWF0aW5nU2NyaXB0ID0g
dHJ1ZTsKICAgICAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZUV2YWx1YXRpbmdTY3JpcHQpOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIHJlc3Vs
dFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgcmVzdWx0VmFsdWUuZ2V0KCkp
OwogfQogCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxl
ckJhc2ljUmVtb3ZlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422142</attachid>
            <date>2021-03-03 13:15:57 -0800</date>
            <delta_ts>2021-03-03 15:07:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222634-20210303131556.patch</filename>
            <type>text/plain</type>
            <size>22064</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY1NjQ2ZjBhNmNiOGU3
MjIzY2QwNDY0MmUxYzEyY2ZlMDEzNjNkNS4uNzE1YTJhZTAxNzIwMWQyNTVkNzg1MzVkOGVlNDgz
NzhjODQxZjU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdo
dCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBjb3B5XSAvIFtvYmogbXV0YWJsZUNvcHldCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgYWRvcHROUygpIHJp
Z2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2JqIGNvcHldIC8gW29iaiBtdXRhYmxlQ29weV0gdG8g
bWluaW1pemUgdGhlIGNoYW5jZSBvZiBsZWFrcy4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGRlZmF1bHRQYXJhZ3JhcGhTdHlsZSk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVt
TWFya2V0aW5nVmVyc2lvbik6CisKIDIwMjEtMDMtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBMaW1pdCBIYXNoVGFibGUgZW50cnkgc2l6
ZSB0byA1MDAgYnl0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjhiNjVmZDJmNDMxNDU3ZDMxYWUyYjQ4MmQyYzg3
MjdmNjc4MjJjZC4uZTFkZGYzODFkNzFlZjYwOTY5ZDNmZWE0OGU3OWUzY2E5MGM5NjZkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMy0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhZG9wdE5TKCkgcmlnaHQgYXdheSBhZnRlciBjYWxs
aW5nIFtvYmogY29weV0gLyBbb2JqIG11dGFibGVDb3B5XQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdodCBhd2F5IGFmdGVyIGNh
bGxpbmcgW29iaiBjb3B5XSAvIFtvYmogbXV0YWJsZUNvcHldIHRvIG1pbmltaXplIHRoZSBjaGFu
Y2Ugb2YgbGVha3MuCisKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24ubW06CisgICAgICAgIChXZWJLaXRBZGRpdGlvbnM6OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnN5c3RlbURpcmVjdG9yeVBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6dGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aCk6CisKIDIwMjEtMDMtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIFdlYktp
dDIgUERGS2l0IHNvZnRsaW5raW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMWIz
NTllMmFjM2ViZWZhYjk1NGFhZGUxMThkN2NiMGE1N2RjYmM1NC4uMmU5MGRjODdjMjBjNzI4OWZm
ZmUwZGM4MjM5NjIxYjVkZDdmNmJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDIxLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdodCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBj
b3B5XSAvIFtvYmogbXV0YWJsZUNvcHldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBVc2UgYWRvcHROUygpIHJpZ2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2Jq
IGNvcHldIC8gW29iaiBtdXRhYmxlQ29weV0gdG8gbWluaW1pemUgdGhlIGNoYW5jZSBvZiBsZWFr
cy4KKworICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAo
X3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAob3ZlcnJpZGVCdW5kbGVJZGVu
dGlmaWVyKToKKyAgICAgICAgKCtbV2ViQXBwbGljYXRpb25DYWNoZSBpbml0aWFsaXplV2l0aEJ1
bmRsZUlkZW50aWZpZXI6XSk6CisgICAgICAgIChhcHBsaWNhdGlvbkNhY2hlQnVuZGxlSWRlbnRp
Zmllcik6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKGNs
YXNzSUJDcmVhdG9ySUQpOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc2V0SUJDcmVhdG9y
SUQ6XSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9JQkNyZWF0b3JJRF0pOgorCiAyMDIx
LTAzLTAzICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUHJlc2VydmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgYXBwIGhpZ2hs
aWdodCByZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggMTk0ZDNkNTJhOWM5MGEwMTZkOTQ4MTY2ODRmMTQ0OGM3ZWI5NGUzNC4uNjVl
ODU1MjUyNTBkNDBiYWMwYzNmMzg1NmI3ODM5ODM2MGMwYjkyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTE3LDEzICs1MTcsMTMgQEAg
c3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnRGb3JOYW1lQW5kU2l6ZShOU1N0cmluZyAqZm9udE5h
bWUsIENHRmxvYXQgc2l6ZSwgTlNNdXQKIAogc3RhdGljIE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1
bHRQYXJhZ3JhcGhTdHlsZSgpCiB7Ci0gICAgc3RhdGljIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxl
ICpkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBuaWw7Ci0gICAgaWYgKCFkZWZhdWx0UGFyYWdyYXBo
U3R5bGUpIHsKLSAgICAgICAgZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gW1tQbGF0Zm9ybU5TUGFy
YWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV07CisgICAgc3Rh
dGljIGF1dG8gZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgYXV0byBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbUGxhdGZvcm1O
U1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKICAg
ICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwog
ICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOkBbXV07Ci0gICAgfQot
ICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7CisgICAgICAgIHJldHVybiBkZWZhdWx0
UGFyYWdyYXBoU3R5bGU7CisgICAgfSgpKTsKKyAgICByZXR1cm4gZGVmYXVsdFBhcmFncmFwaFN0
eWxlLmdldCgpLmdldCgpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNo
ZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1N5c3RlbVZlcnNpb24ubW0KaW5kZXggZGI0MmVmZWY2OGY1NTdjZmVlNDUyNmU1MGY1MjRiOTc3
M2IzMDk1ZS4uN2QzYmY4Y2YyN2M0MDkyYjU2YzAyN2MxYTMwNzc0ZWEyMmY2ZTBjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLm1tCkBAIC0yNyw3
ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE5TU3RyaW5nICpjcmVh
dGVTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uKCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGNy
ZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKQogewogICAgIC8vIENhbid0IHVzZSAtW05TUHJv
Y2Vzc0luZm8gb3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZ10gYmVjYXVzZSBpdCBoYXMgdG9v
IG11Y2ggc3R1ZmYgd2UgZG9uJ3Qgd2FudC4KICAgICBOU1N0cmluZyAqc3lzdGVtTGlicmFyeVBh
dGggPSBbTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0
b3J5LCBOU1N5c3RlbURvbWFpbk1hc2ssIFlFUykgb2JqZWN0QXRJbmRleDowXTsKQEAgLTM3LDEz
ICszNywxMyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24o
KQogI2VuZGlmCiAgICAgTlNTdHJpbmcgKnN5c3RlbVZlcnNpb25QbGlzdFBhdGggPSBbc3lzdGVt
TGlicmFyeVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQ29yZVNlcnZpY2Vz
L1N5c3RlbVZlcnNpb24ucGxpc3QiXTsKICAgICBOU0RpY3Rpb25hcnkgKnN5c3RlbVZlcnNpb25J
bmZvID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENvbnRlbnRzT2ZGaWxlOnN5c3RlbVZl
cnNpb25QbGlzdFBhdGhdOwotICAgIHJldHVybiBbW3N5c3RlbVZlcnNpb25JbmZvIG9iamVjdEZv
cktleTpAIlByb2R1Y3RWZXJzaW9uIl0gY29weV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzeXN0
ZW1WZXJzaW9uSW5mbyBvYmplY3RGb3JLZXk6QCJQcm9kdWN0VmVyc2lvbiJdIGNvcHldKTsKIH0K
IAogTlNTdHJpbmcgKnN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKQogewotICAgIHN0YXRpYyBOU1N0
cmluZyAqdmVyc2lvbiA9IGNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKTsKLSAgICByZXR1
cm4gdmVyc2lvbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5n
Pj4gdmVyc2lvbiA9IGNyZWF0ZVN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKTsKKyAgICByZXR1cm4g
dmVyc2lvbi5nZXQoKS5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KaW5k
ZXggY2NlZWVjNDA0NTA2N2IyOTNmOTg1ODNiYTlkOGQ5M2IxMTRlMzE5MC4uMzM5ODEwMDJjMTAy
YzVlMGJiODE4YzViNDdmNWI1YWJiNDBlMzRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1t
CkBAIC02NCwxNyArNjQsMTcgQEAgdm9pZCBQYXltZW50U2V0dXBGZWF0dXJlczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogT3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVy
ZXM+IFBheW1lbnRTZXR1cEZlYXR1cmVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIHN0YXRpYyBOU0FycmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKICAgICAgICAgYXV0byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OjJdKTsKICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OltOU0Fy
cmF5IGNsYXNzXV07CiAgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNldHVwRmVhdHVyZUNsYXNz
ID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cEZlYXR1cmVDbGFzcygpKQogICAgICAgICAgICAgW2Fs
bG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVwRmVhdHVyZUNsYXNzXTsKLSAgICAgICAgYWxs
b3dlZENsYXNzZXMgPSBbYWxsb3dlZCBjb3B5XTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMuZ2V0
KCkgPSBhZG9wdE5TKFthbGxvd2VkIGNvcHldKTsKICAgICB9KTsKIAotICAgIGF1dG8gcGxhdGZv
cm1GZWF0dXJlcyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+
PihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0g
SVBDOjpkZWNvZGU8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFs
bG93ZWRDbGFzc2VzLmdldCgpLmdldCgpKTsKICAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4IGVm
YWZkNDE0ZWU1ODdlNTllZmMzNGIxNDhjOTBkMDQzOTNjY2JmOWQuLjA1ODc4OTY4NDVkN2I3Y2Yx
MzUwNmM5OWQ2MWJlOWI5ZTQzMWU2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtODQsMTYg
Kzg0LDE2IEBAIHZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIAogT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYWxsb3dlZENsYXNzZXM7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gYWxsb3dlZENsYXNzZXM7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CiAgICAgICAgIGF1dG8gYWxsb3dlZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eToxXSk7CiAgICAgICAgIGlmIChhdXRvIHBrUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbkNsYXNzID0gUEFMOjpnZXRQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b25DbGFzcygpKQogICAgICAgICAgICAgW2FsbG93ZWQgYWRkT2JqZWN0OnBrUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbkNsYXNzXTsKLSAgICAgICAgYWxsb3dlZENsYXNzZXMgPSBbYWxsb3dlZCBj
b3B5XTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMuZ2V0KCkgPSBhZG9wdE5TKFthbGxvd2VkIGNv
cHldKTsKICAgICB9KTsKIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBL
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMuZ2V0KCkuZ2V0KCkpOwogICAgIGlmICghY29u
ZmlndXJhdGlvbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggNmY2ZTRlYWY4MjBlNDYwNTUyOWJjMzYwMmI4MWVjODc5
YzUwZTUwNy4uMzFjODA1OTllOTcwMDJjNDAwMzE5ZjQ1ZGU2OTA0YzEzNDQwOTk3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCkBAIC02MSwxNiArNjEsMTYgQEAgdm9pZCBQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogCiBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHN0YXRpYyBO
U0FycmF5ICphbGxvd2VkQ2xhc3NlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgYXV0
byBhbGxvd2VkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5OjFdKTsKICAgICAgICAgaWYgKGF1dG8gcGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xh
c3MgPSBQQUw6OmdldFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbkNsYXNzKCkpCiAgICAgICAg
ICAgICBbYWxsb3dlZCBhZGRPYmplY3Q6cGtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uQ2xhc3Nd
OwotICAgICAgICBhbGxvd2VkQ2xhc3NlcyA9IFthbGxvd2VkIGNvcHldOworICAgICAgICBhbGxv
d2VkQ2xhc3Nlcy5nZXQoKSA9IGFkb3B0TlMoW2FsbG93ZWQgY29weV0pOwogICAgIH0pOwogCi0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxv
d2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRleCBiZjcyYmYy
NTIyYmFjMmZlYjYxZGYzYzg4OTAyZTQ5NjM2OGQ5YWZlLi42N2M2ZTk2Njk5NWQzNzQ2YTMxZmMz
MTNjZjNiZGJjNTY2MmM0MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTEwMCwxNiArMTAw
LDE2IEBAIHN0YXRpYyBib29sIHNob3VsZExlYWtCb29zdChjb25zdCBQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiAKIHN0YXRpYyBOU1N0cmluZyAqc3lzdGVt
RGlyZWN0b3J5UGF0aCgpCiB7Ci0gICAgc3RhdGljIE5TU3RyaW5nICpwYXRoID0gW157CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1N0cmluZz4+IHBhdGggPSBhZG9wdE5T
KFteewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgICAgICBjaGFyICpz
aW11bGF0b3JSb290ID0gZ2V0ZW52KCJTSU1VTEFUT1JfUk9PVCIpOwogICAgICAgICByZXR1cm4g
c2ltdWxhdG9yUm9vdCA/IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMvU3lzdGVtLyIs
IHNpbXVsYXRvclJvb3RdIDogQCIvU3lzdGVtLyI7CiAjZWxzZQogICAgICAgICByZXR1cm4gQCIv
U3lzdGVtLyI7CiAjZW5kaWYKLSAgICB9KCkgY29weV07CisgICAgfSgpIGNvcHldKTsKIAotICAg
IHJldHVybiBwYXRoOworICAgIHJldHVybiBwYXRoLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbQppbmRleCAxM2VhNGEwYjJiNTE5ZTkyMDMz
NjRmMjBkZDNhMjQ3YWM4ZjQ4ZDM2Li5lYTVjMzIzOTJkNzFjZjNkNzJkZGU0NTJkYzRjYjI2ODg2
MzliZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXND
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0Nv
bnRyb2xsZXIubW0KQEAgLTEwMSwxOSArMTAxLDIwIEBAIHZvaWQgU2VydmljZXNDb250cm9sbGVy
OjpyZWZyZXNoRXhpc3RpbmdTZXJ2aWNlcyhib29sIHJlZnJlc2hJbW1lZGlhdGVseSkKICAgICAg
ICAgICAgIG1faGFzU2VsZWN0aW9uU2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAgICAgICAgfSk7
CiAKLSAgICAgICAgc3RhdGljIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ1dp
dGhSaWNoQ29udGVudCA9IFtdIHsKLSAgICAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgKnJpY2hTdHJpbmc7Ci0gICAgICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFsmcmljaFN0cmluZ10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4+IGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmlj
aENvbnRlbnQ7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdHRyaWJ1dGVkU3RyaW5n
V2l0aFJpY2hDb250ZW50T25jZUZsYWc7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKGF0dHJpYnV0
ZWRTdHJpbmdXaXRoUmljaENvbnRlbnRPbmNlRmxhZywgWyZdIHsKKyAgICAgICAgICAgIGRpc3Bh
dGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIHsKICAgICAgICAgICAgICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5p
dF0pOwogICAgICAgICAgICAgICAgIGF1dG8gY2VsbCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2ht
ZW50Q2VsbCBhbGxvY10gaW5pdEltYWdlQ2VsbDppbWFnZV0pOwogICAgICAgICAgICAgICAgIFth
dHRhY2htZW50IHNldEF0dGFjaG1lbnRDZWxsOmNlbGwuZ2V0KCldOwotICAgICAgICAgICAgICAg
IHJpY2hTdHJpbmcgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0
dGFjaG1lbnQ6YXR0YWNobWVudC5nZXQoKV0gbXV0YWJsZUNvcHldOworICAgICAgICAgICAgICAg
IGF1dG8gcmljaFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRl
ZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCldIG11dGFibGVDb3B5XSk7CiAg
ICAgICAgICAgICAgICAgW3JpY2hTdHJpbmcgYXBwZW5kQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1
dGVkU3RyaW5nXTsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250
ZW50LmdldCgpID0gV1RGTW92ZShyaWNoU3RyaW5nKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcmV0dXJuIHJpY2hTdHJpbmc7Ci0gICAgICAgIH0oKTsKKyAgICAgICAgfSk7CiAKLSAg
ICAgICAgaGFzQ29tcGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoc2VydmljZUxvb2t1cEdyb3VwLmdl
dCgpLCBAWyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50IF0sIFt0aGlzXSAoYm9vbCBo
YXNTZXJ2aWNlcykgeworICAgICAgICBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhzZXJ2
aWNlTG9va3VwR3JvdXAuZ2V0KCksIEBbIGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQu
Z2V0KCkuZ2V0KCkgXSwgW3RoaXNdIChib29sIGhhc1NlcnZpY2VzKSB7CiAgICAgICAgICAgICBt
X2hhc1JpY2hDb250ZW50U2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAgICAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGQy
YjA0MTAxNzUxYzczNjdlZGJiZmE3ZWYzODE2OWNkZmFkYWY3MTMuLmYxYjFmZmZjMjFhMjhjMWRk
ZDFiMjAxNTJhNzU0M2I4YjYzM2UxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDExLDE3ICs0MTEsMTYgQEAgQ0FMYXllciAqV2Vi
UGFnZVByb3h5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKIAogc3Rh
dGljIE5TU3RyaW5nICp0ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICBzdGF0aWMg
TlNTdHJpbmcgKnRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGg7Ci0KLSAgICBpZiAoIXRlbXBvcmFy
eVBERkRpcmVjdG9yeVBhdGgpIHsKKyAgICBzdGF0aWMgYXV0byB0ZW1wb3JhcnlQREZEaXJlY3Rv
cnlQYXRoID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgTlNTdHJpbmcgKnRlbXBv
cmFyeURpcmVjdG9yeVRlbXBsYXRlID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0UERGcy1YWFhYWFgiXTsKICAgICAgICAgQ1N0
cmluZyB0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeVRlbXBsYXRl
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07CiAKICAgICAgICAgaWYgKG1rZHRlbXAodGVtcGxh
dGVSZXByZXNlbnRhdGlvbi5tdXRhYmxlRGF0YSgpKSkKLSAgICAgICAgICAgIHRlbXBvcmFyeVBE
RkRpcmVjdG9yeVBhdGggPSBbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdX
aXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOnRlbXBsYXRlUmVwcmVzZW50YXRpb24uZGF0YSgp
IGxlbmd0aDp0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uLmxlbmd0aCgpXSBjb3B5XTsKLSAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBzdHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOnRlbXBsYXRlUmVwcmVzZW50YXRp
b24uZGF0YSgpIGxlbmd0aDp0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uLmxlbmd0aCgpXSBjb3B5XSk7
CisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8aWQ+IHsgfTsKKyAgICB9KCkpOwogCi0gICAgcmV0
dXJuIHRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGg7CisgICAgcmV0dXJuIHRlbXBvcmFyeVBERkRp
cmVjdG9yeVBhdGguZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUERG
T25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IGZl
NmE1Nzc3MzA5YTEwYzI5MjgwNGFmMjYyMGE3MGQ5Yzc2N2NhMjIuLjc4ODU3NzQzODc3NmYyYTk3
ODQwNGRlYmVmZWRiMDVjYzBhY2Q0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC04MSwxOCArODEsMTUgQEAg
c3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9p
ZCkKICAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTlNB
cnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkKLXsKLSAgICBO
U011dGFibGVBcnJheSAqdHlwZXMgPSBbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNo
aXZlKCkgbXV0YWJsZUNvcHldOwotICAgIFt0eXBlcyBhZGRPYmplY3Q6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCldOwotICAgIFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVd
OwotICAgIHJldHVybiB0eXBlczsKLX0KLQogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVz
Rm9ySW1hZ2VXaXRoQXJjaGl2ZSAodm9pZCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSBfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKTsKLSAgICByZXR1cm4g
dHlwZXM7CisgICAgc3RhdGljIGF1dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhv
dXRBcmNoaXZlKCkgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgW3R5cGVzIGFkZE9iamVjdDpsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJj
aGl2ZVBib2FyZFR5cGVdOworICAgICAgICByZXR1cm4gdHlwZXM7CisgICAgfSgpKTsKKyAgICBy
ZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKilfd2ViX3dyaXRhYmxl
VHlwZXNGb3JJbWFnZUluY2x1ZGluZ0FyY2hpdmU6KEJPT0wpaGFzQXJjaGl2ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGUubW0KaW5kZXggNTgxNDJmNGE3Yjk2MTViYTc1ODViZGVlYTM3YjE2NjM3MTNl
MjNjOS4uZGFkNmJkOTBiZjlmYzVlYjE3Zjc3YTcwNTFhM2VkZDY0MmZmYWY4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJB
cHBsaWNhdGlvbkNhY2hlLm1tCkBAIC00Miw3ICs0MiwxMSBAQAogQGltcGxlbWVudGF0aW9uIFdl
YkFwcGxpY2F0aW9uQ2FjaGUKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgTlNT
dHJpbmcgKm92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcjsKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJp
bmc+JiBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXI7CisgICAg
cmV0dXJuIG92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcjsKK30KIAogLy8gRklYTUU6IFRoaXMgd2ls
bCBiZSByZW1vdmVkIHdoZW4gV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRoSWZO
ZWNlc3NhcnkoKQogLy8gaXMgbW92ZWQgZnJvbSBXZWJWaWV3Lm1tIHRvIFdlYktpdEluaXRpYWxp
emVBcHBsaWNhdGlvbkNhY2hlSWZOZWNlc3NhcnkoKSBpbiB0aGlzIGZpbGUuCkBAIC01NSw4ICs1
OSw4IEBAICsgKHZvaWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAq
KWJ1bmRsZUlkZW50aWZpZXIKIAogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6
c2V0Q2xpZW50KCZXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJl
ZFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCgpKTsKIAotICAgIEFTU0VSVCghb3ZlcnJp
ZGVCdW5kbGVJZGVudGlmaWVyKTsKLSAgICBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIgPSBbYnVu
ZGxlSWRlbnRpZmllciBjb3B5XTsKKyAgICBBU1NFUlQoIW92ZXJyaWRlQnVuZGxlSWRlbnRpZmll
cigpKTsKKyAgICBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoKSA9IGFkb3B0TlMoW2J1bmRsZUlk
ZW50aWZpZXIgY29weV0pOwogCiAgICAgaW5pdGlhbGl6ZWQgPSBZRVM7CiB9CkBAIC02NSw4ICs2
OSw4IEBAICsgKHZvaWQpaW5pdGlhbGl6ZVdpdGhCdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAq
KWJ1bmRsZUlkZW50aWZpZXIKIHN0YXRpYyBOU1N0cmluZyAqYXBwbGljYXRpb25DYWNoZUJ1bmRs
ZUlkZW50aWZpZXIoKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKG92ZXJy
aWRlQnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRlQnVuZGxlSWRlbnRp
ZmllcjsKKyAgICBpZiAob3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVy
biBvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoKS5nZXQoKTsKICAgICBpZiAoV2ViQ29yZTo6SU9T
QXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgIHJldHVybiBAImNvbS5hcHBs
ZS5XZWJBcHBDYWNoZSI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGZiOTJjMTYxNTI0ZmQ5ZTc0ZGY2ZTRjOTY0
ZmNkNzIxZDVkNTBiNmQuLmYyNjI3NzY1M2NlYmJlYzViNGNkMjYxYzJlN2ZmYzIwMTc0MjEzMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQpAQCAtMTY1NCwxMiArMTY1NCwxNSBAQCArICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRl
eHRFbmNvZGluZ1RvU3lzdGVtRW5jb2RpbmcKICAgICAgICAgQHsgV2ViS2l0RGVmYXVsdFRleHRF
bmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5OiBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3Rl
bUxhbmd1YWdlKCkgfV07CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9
IG5pbDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+JiBjbGFzc0lCQ3JlYXRvcklEKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gY2xhc3NJQkNy
ZWF0b3JJRDsKKyAgICByZXR1cm4gY2xhc3NJQkNyZWF0b3JJRDsKK30KIAogKyAodm9pZClfc2V0
SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgYXV0byBvbGQgPSBhZG9wdE5T
KGNsYXNzSUJDcmVhdG9ySUQpOwotICAgIGNsYXNzSUJDcmVhdG9ySUQgPSBbc3RyaW5nIGNvcHld
OworICAgIGNsYXNzSUJDcmVhdG9ySUQoKSA9IGFkb3B0TlMoW3N0cmluZyBjb3B5XSk7CiB9CiAK
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKQEAgLTI5NTQsNyArMjk1Nyw3IEBAIEBpbXBsZW1l
bnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwpCiAKICsgKE5TU3RyaW5nICopX0lC
Q3JlYXRvcklECiB7Ci0gICAgcmV0dXJuIGNsYXNzSUJDcmVhdG9ySUQ7CisgICAgcmV0dXJuIGNs
YXNzSUJDcmVhdG9ySUQoKS5nZXQoKTsKIH0KIAogKyAoTlNTdHJpbmcgKilfY29uY2F0ZW5hdGVL
ZXlXaXRoSUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopa2V5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjA4MTE3NDMzMmY0YjA0NWJmZDIwMGJmOWZh
NGY4NWU0MDQ3YmVmMC4uZTNmODUxNWYxODE1NGVlNjZlMzc0ZDRhMjA3MmU0ZGVlNjI2Y2M3ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGFkb3B0TlMoKSByaWdodCBhd2F5IGFmdGVyIGNhbGxpbmcgW29iaiBjb3B5
XSAvIFtvYmogbXV0YWJsZUNvcHldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI2MzQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgYWRvcHROUygpIHJpZ2h0IGF3YXkgYWZ0ZXIgY2FsbGluZyBbb2JqIGNv
cHldIC8gW29iaiBtdXRhYmxlQ29weV0gdG8gbWluaW1pemUgdGhlIGNoYW5jZSBvZiBsZWFrcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudU1v
dXNlRXZlbnRzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuVGVzdCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgIChURVNUKToKKwogMjAyMS0wMy0wMyAgSm9uYXRoYW4gQmVkYXJkICA8amJl
ZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHNkYnB5XSBNYWtlIHRlc3RpbmcgY29t
cGF0aWJsZSB3aXRoIFB5dGhvbiAzLjgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudU1vdXNlRXZlbnRzLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VFdmVudHMubW0KaW5kZXgg
MzY4MjJjZjJmY2Q0NDY3YThmYWUwYTZmNTU2NDFhOGIyNDc4YzAyNC4uYTUyYjUxZTdlZmMwYmE3
OWUzNTdmMmYzZGEyMTY4OGE1MzI4MjdjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VFdmVudHMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51TW91c2VFdmVudHMubW0K
QEAgLTU1LDEwICs1NSwxMCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KE5TRXZlbnRNb2RpZmllckZs
YWdzIGZsYWdzLCBOU0V2ZW50VHlwZSBtb3VzZURvd25UeXBlLCBOU0V2ZQogICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOwotICAgIF9fYmxvY2sgdm9pZCheY29tcGxldGlvbkhhbmRsZXJDb3B5KShOU01l
bnUgKik7CisgICAgX19ibG9jayBCbG9ja1B0cjx2b2lkKE5TTWVudSAqKT4gY29tcGxldGlvbkhh
bmRsZXJDb3B5OwogICAgIFt1aURlbGVnYXRlIHNldEdldENvbnRleHRNZW51RnJvbVByb3Bvc2Vk
TWVudTpeKE5TTWVudSAqLCBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvICosIGlkIDxOU1NlY3Vy
ZUNvZGluZz4sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNNZW51ICopKSB7CiAgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBjb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9KTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KaW5kZXggYTU5ZGM0ZjZhM2M5OTI3Y2Q1OGNjYWYwZjI4ODI1ODk1NTVlODM5
Ni4uOWUxZTUxY2M3OTBmMWM2ZDg4MDMyZDViMzYyMmZkMWE1Njg3M2MyNyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdElzb2xhdGVkV29ybGQpCiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwog
CiAgICAgX19ibG9jayBib29sIGlzRG9uZUV2YWx1YXRpbmdTY3JpcHQgPSBmYWxzZTsKLSAgICBf
X2Jsb2NrIE5TU3RyaW5nICpyZXN1bHRWYWx1ZSA9IEAiIjsKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU1N0cmluZz4gcmVzdWx0VmFsdWUgPSBAIiI7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OgogICAgICAgICBAInZhciByZXN1bHQ7IgogICAgICAgICAgImlmICh3aW5kb3cud2Vi
a2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyKSB7IgpAQCAtMTQyLDEzICsxNDIsMTMgQEAgVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3RJc29s
YXRlZFdvcmxkKQogICAgICAgICAgIn0gIiAKICAgICAgICAgICJyZXN1bHQ7IgogICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAg
ICAgIHJlc3VsdFZhbHVlID0gWygoTlNEaWN0aW9uYXJ5ICopdmFsdWUpW0AicmVzdWx0Il0gY29w
eV07CisgICAgICAgICAgICByZXN1bHRWYWx1ZSA9ICgoTlNEaWN0aW9uYXJ5ICopdmFsdWUpW0Ai
cmVzdWx0Il07CiAgICAgICAgICAgICBpc0RvbmVFdmFsdWF0aW5nU2NyaXB0ID0gdHJ1ZTsKICAg
ICAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZUV2YWx1YXRp
bmdTY3JpcHQpOwogCi0gICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIHJlc3VsdFZhbHVlKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgcmVzdWx0VmFsdWUuZ2V0KCkpOwogfQogCiBU
RVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUmVt
b3ZlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>