<?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>147008</bug_id>
          
          <creation_ts>2015-07-16 11:12:14 -0700</creation_ts>
          <short_desc>Media Session: add support for platform-specific interruption providers</short_desc>
          <delta_ts>2015-07-16 16:28:42 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>conrad_shultz</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>mrajca</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109919</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-07-16 11:12:14 -0700</bug_when>
    <thetext>Interruption providers will notify media sessions of start/end-of-interruption events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109924</commentid>
    <comment_count>1</comment_count>
      <attachid>256916</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-07-16 11:27:54 -0700</bug_when>
    <thetext>Created attachment 256916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109925</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-16 11:29:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/21858652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109929</commentid>
    <comment_count>3</comment_count>
      <attachid>256916</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-07-16 11:40:14 -0700</bug_when>
    <thetext>Comment on attachment 256916
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        * platform/audio/MediaSessionInterruptionProvider.cpp: Added base class to be used by MediaSessionManager to

Nit: This isn&apos;t audio-specific, so why don&apos;t you put it into a new &quot;platform/mediasession&quot; directory?

&gt; Source/WebCore/platform/audio/MediaSessionInterruptionProvider.cpp:37
&gt; +MediaSessionInterruptionProvider::MediaSessionInterruptionProvider(MediaSessionInterruptionProviderClient&amp; client)
&gt; +    : m_client(&amp;client)
&gt; +{
&gt; +    beginListeningForInterruptions();
&gt; +}

Will there ever be more than one interruption provider? If so, what is the lifetime of an object - who creates it?

If there will only ever be one, you need a static accessor method and you need a way to add/remove clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109944</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-07-16 13:43:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 256916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        * platform/audio/MediaSessionInterruptionProvider.cpp: Added base class to be used by MediaSessionManager to
&gt; 
&gt; Nit: This isn&apos;t audio-specific, so why don&apos;t you put it into a new
&gt; &quot;platform/mediasession&quot; directory?

Will do.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/MediaSessionInterruptionProvider.cpp:37
&gt; &gt; +MediaSessionInterruptionProvider::MediaSessionInterruptionProvider(MediaSessionInterruptionProviderClient&amp; client)
&gt; &gt; +    : m_client(&amp;client)
&gt; &gt; +{
&gt; &gt; +    beginListeningForInterruptions();
&gt; &gt; +}
&gt; 
&gt; Will there ever be more than one interruption provider? If so, what is the
&gt; lifetime of an object - who creates it?

The interruption provider will only be used by the MediaSessionManager singleton (there will only be one client).

&gt; 
&gt; If there will only ever be one, you need a static accessor method and you
&gt; need a way to add/remove clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109961</commentid>
    <comment_count>5</comment_count>
      <attachid>256916</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-07-16 14:11:54 -0700</bug_when>
    <thetext>Comment on attachment 256916
Patch

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

&gt; Source/WebCore/platform/audio/MediaSessionInterruptionProvider.h:57
&gt; +    // To be overriden by subclasses.
&gt; +    virtual void beginListeningForInterruptions();
&gt; +    virtual void stopListeningForInterruptions();

If these must be overridden, why not make the pure-virtual?

&gt; Source/WebCore/platform/audio/mac/MediaSessionInterruptionProviderMac.h:37
&gt; +    using MediaSessionInterruptionProvider::MediaSessionInterruptionProvider;

Is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110022</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-07-16 16:19:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 256916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/MediaSessionInterruptionProvider.h:57
&gt; &gt; +    // To be overriden by subclasses.
&gt; &gt; +    virtual void beginListeningForInterruptions();
&gt; &gt; +    virtual void stopListeningForInterruptions();
&gt; 
&gt; If these must be overridden, why not make the pure-virtual?

These methods are called from the base class&apos;s constructor and destructor so they cannot be pure virtual.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/mac/MediaSessionInterruptionProviderMac.h:37
&gt; &gt; +    using MediaSessionInterruptionProvider::MediaSessionInterruptionProvider;
&gt; 
&gt; Is this necessary?

Yes, constructors aren&apos;t inherited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110027</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-07-16 16:28:42 -0700</bug_when>
    <thetext>Committed r186917: &lt;http://trac.webkit.org/changeset/186917&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256916</attachid>
            <date>2015-07-16 11:27:54 -0700</date>
            <delta_ts>2015-07-16 14:11:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147008-20150716112645.patch</filename>
            <type>text/plain</type>
            <size>18905</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU2NzFlYWQ3MTYzOWFk
MTZjMzM3MzhmMTZmZmMzZjkyYzQxMjY3Yi4uYjk5ZTliZDI2ZDQyNTZiZDgzMWVkZmQ5ZWI3ZDcx
YmE1NTY5ODdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA3LTE2ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAorICAgICAgICBNZWRpYSBTZXNzaW9uOiBhZGQg
c3VwcG9ydCBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgaW50ZXJydXB0aW9uIHByb3ZpZGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEluY2x1ZGUgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHA6
IEFkZGVkIGJhc2UgY2xhc3MgdG8gYmUgdXNlZCBieSBNZWRpYVNlc3Npb25NYW5hZ2VyIHRvCisg
ICAgICAgICAgbGlzdGVuIGZvciBpbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlcik6IEJlZ2luIGxpc3RlbmluZyBmb3IgaW50ZXJydXB0aW9ucwor
ICAgICAgICAgIHVwb24gY29uc3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
cik6IFN0b3AgbGlzdGVuaW5nIGZvciBpbnRlcnJ1cHRpb25zCisgICAgICAgICAgYmVmb3JlIGRl
c3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXI6OmJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucyk6IFRvIGJlIG92ZXJyaWRkZW4g
Ynkgc3ViY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyOjpzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucyk6IFRvIGJlIG92ZXJyaWRk
ZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50Ojp+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXI6OmNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmg6IEFkZGVkIGZvciBwcm92aWRpbmcgTWFj
LXNwZWNpZmljIGludGVycnVwdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYzo6fk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
TWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW06IEFkZGVkIHN0dWJzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYzo6c3RvcExpc3RlbmluZ0ZvckludGVycnVwdGlvbnMpOgorCisyMDE1LTA3LTE2ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KKwogICAgICAgICBNZWRpYSBTZXNzaW9uOiByZW1v
dmUgcGx1bWJpbmcgZm9yIGRlbGl2ZXJpbmcgc3RhcnQvZW5kLW9mLWludGVycnVwdGlvbiBldmVu
dHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzAw
NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWVmNzUwYzZmNjk5YThmZWE4ZGRjYTgwODM1YWMwMTVmZGRmZDdhMC4uY2UyMDll
YTVmMjhiYWQ0ZjhmOTY5MjY5ZDQzYWE2OThjMTlhMGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcxOCw2ICs1NzE4LDEw
IEBACiAJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTBGNjU1NDFC
MjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyB9OwogCQlDOTM3RkU4
RDFCMUY2ODIxMDA4RUNDNUQgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2OEIyRTYxQjFFNzJG
NzAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLzsgfTsKIAkJQzk2
OEIyRTgxQjFFNzc4MTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2OEIyRTcx
QjFFNzc4MTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwICovOyB9
OworCQlDOUFBNjA0MDFCNTZERTFGMDA3RkVGNDkgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzlBQTYwM0UxQjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyLmNwcCAqLzsgfTsKKwkJQzlBQTYwNDExQjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDOUFBNjAzRjFCNTZERTFGMDA3RkVGNDkgLyogTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXIuaCAqLzsgfTsKKwkJQzlBQTYwNDQxQjU2RTJEOTAwN0ZFRjQ5
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlBQTYwNDIxQjU2RTJEOTAwN0ZFRjQ5
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tICovOyB9OworCQlDOUFB
NjA0NTFCNTZFMkQ5MDA3RkVGNDkgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5QUE2
MDQzMUI1NkUyRDkwMDdGRUY0OSAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1h
Yy5oICovOyB9OwogCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5
RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM5REFEQkNCMUIxRDNC
OTcwMDFGMTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRp
YVNlc3Npb24uY3BwICovOyB9OwogCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFT
ZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMzEwLDYg
KzEzMzE0LDExIEBACiAJCUM5NjhCMkU1MUIxRTcwNDUwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVt
ZW50TWVkaWFTZXNzaW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgx
IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE1l
ZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
OTY4QjJFNzFCMUU3NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzlBQTYwM0Ux
QjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvblByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzlBQTYwM0Yx
QjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM5QUE2MDQyMUI1NkUyRDkw
MDdGRUY0OSAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOUFBNjA0MzFC
NTZFMkQ5MDA3RkVGNDkgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzlBQTYwNDYxQjU2
RjFEODAwN0ZFRjQ5IC8qIFRVQ2FsbENlbnRlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUVUNhbGxD
ZW50ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlEODUxRUUxQjM5REM3
ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM5REFEQkM5MUIxRDNCMjUwMDFGMTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAv
KiBKU01lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01l
ZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2NjUsNiArMjM2
NzQsOCBAQAogCQkJCUZEMzE2MDY5MTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGS2VybmVsLmggKi8s
CiAJCQkJRkQzMTYwNkExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuY3BwICovLAogCQkJ
CUZEMzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8sCisJCQkJQzlBQTYw
M0UxQjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNw
cCAqLywKKwkJCQlDOUFBNjAzRjFCNTZERTFGMDA3RkVGNDkgLyogTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1RDkgLyogTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmNwcCAqLywKIAkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkg
LyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFB
MzU5IC8qIFBhbm5lci5jcHAgKi8sCkBAIC0yMzcwOSw2ICsyMzcyMCw4IEBACiAJCQkJQ0RDNzM0
MTIxOTc3ODk2QzAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5jcHAgKi8sCiAJCQkJQ0RDNzM0MTMx
OTc3ODk2QzAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3
MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCisJCQkJQzlBQTYwNDIxQjU2RTJEOTAw
N0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tICovLAorCQkJ
CUM5QUE2MDQzMUI1NkUyRDkwMDdGRUY0OSAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYy5oICovLAogCQkJCTA3RURDM0VEMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjU5MzIsNiAr
MjU5NDUsOCBAQAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZC
RkVGIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlGODdDRkUxQjI4RjQw
RTAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzlB
QTYwNDExQjU2REUxRjAwN0ZFRjQ5IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDOUFBNjA0NTFCNTZFMkQ5MDA3RkVGNDkgLyogTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5MEY2
NTU2MUIyMjUzQkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NTI4LDYgKzI5NTQzLDggQEAK
IAkJCQlDRUVGQ0Q3OTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxl
Y3Rpb25Hcm91cEFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDOTAyN0Y0MTFCMUQwQUQy
MDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM5QUE2MDQw
MUI1NkRFMUYwMDdGRUY0OSAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDOUFBNjA0NDFCNTZFMkQ5MDA3RkVGNDkgLyogTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDOTBGNjU1
NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3RURDM0VFMUFBQ0I3NUQwMDk4M0VCNSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NTJhYjgzNWMyYmE1ZjY0Y2M2YWZkNzA0YTY0
YWVhNTA1ODk4NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6
Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQoreworICAg
IGJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpOworfQorCitNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlcjo6fk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKCkKK3sK
KyAgICBzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpOworfQorCit2b2lkIE1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMo
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyOjpzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3Zp
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjc5OGU1MGI0ZjgwYWY1MTc2MzdkNzVjNDgwZWI5ODA5MmM1MWIy
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJfaAorI2RlZmluZSBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSB7CisgICAg
Q29udGVudCwKKyAgICBUcmFuc2llbnQsCisgICAgVHJhbnNpZW50U29sbworfTsKKworY2xhc3Mg
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW5nQ2F0ZWdvcnkpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lv
bkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXIoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGll
bnQmKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpOwor
CisgICAgLy8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgdmlydHVhbCB2b2lk
IGJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9w
TGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpOworCisgICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQor
Citwcml2YXRlOgorICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBt
X2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TRVNTSU9OKQorCisjZW5kaWYgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYTUzMTM3NGRiMmYzYzk0NzMxMjg4ZGU1N2EzZDk1YzQyNGQ3NmUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAorI2RlZmlu
ZSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oCisKKyNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlciB7CitwdWJsaWM6CisgICAgdXNpbmcgTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXI6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOworCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpIG92ZXJyaWRl
OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCisKKyNlbmRpZiAvKiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJmMDZlM2YyYTIwY2YxNmNj
NzhjYjcyOWIyODNhZTU1MzQyZjg4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5t
bQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjOjpiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWM6OnN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBM
QVRGT1JNKE1BQykKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="282026"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>