<?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>36770</bug_id>
          
          <creation_ts>2010-03-29 12:18:26 -0700</creation_ts>
          <short_desc>More IndexedDB work</short_desc>
          <delta_ts>2011-05-13 12:30:37 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>205597</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-29 12:18:26 -0700</bug_when>
    <thetext>More IndexedDB work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205601</commentid>
    <comment_count>1</comment_count>
      <attachid>51946</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-29 12:26:38 -0700</bug_when>
    <thetext>Created attachment 51946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205602</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-29 12:30:45 -0700</bug_when>
    <thetext>Darin, if you have a few seconds...

Btw, I think this will require a re-baselining of our window enumeration layout test, but I haven&apos;t had a chance to run it yet.  That said, I think the rest of this patch is pretty much in order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205866</commentid>
    <comment_count>3</comment_count>
      <attachid>51946</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-29 23:13:19 -0700</bug_when>
    <thetext>Comment on attachment 51946
Patch

&gt; +++ b/WebCore/page/PageGroup.cpp
...
&gt; +#if ENABLE(INDEXED_DATABASE)
&gt; +IndexedDatabase* PageGroup::indexedDatabase()
&gt; +{
&gt; +    // Do NOT add page settings based access controls here (like in LocalStorage above).
&gt; +    // ChromeClient might be a good place.  Doing a check in DOMWindow::indexedDB (so this
&gt; +    // only gets called once we&apos;ve passed a check) might also be good.  But the way it
&gt; +    // was done originally was a mistake.

This comment could use some tidying.  It might help to explain
why adding settings based access controls here would be bad.
I think you could probably leave it at that.  The last sentence
is confusing since it seems to refer to some older implementation
of IndexedDB.  Comments like that don&apos;t stand the test of time
very well.


&gt; +++ b/WebCore/storage/IndexedDatabaseRequest.h
...
&gt;  class IndexedDatabaseRequest : public RefCounted&lt;IndexedDatabaseRequest&gt; {
&gt;  public:
&gt; +    static PassRefPtr&lt;IndexedDatabaseRequest&gt; create(Page* page)
&gt;      {
&gt; +        return adoptRef(new IndexedDatabaseRequest(page));
&gt;      }
&gt;      ~IndexedDatabaseRequest();
&gt;  
&gt;      void open(const String&amp; name, const String&amp; description, bool modifyDatabase, ExceptionCode&amp;);
&gt;  
&gt;  private:
&gt; +    IndexedDatabaseRequest(Page* page);

nit: do not name the param


&gt;  
&gt; +    PassRefPtr&lt;IndexedDatabase&gt; m_indexedDatabase;
&gt; +    Page* m_page;
&gt;  };

Hmm... you&apos;ve got a reference counted class holding a non-owning pointer
to Page.  That sounds like a recipe for trouble.  I would expect to at
least see a public method that ~Page() should call to clear m_page.


&gt; +++ b/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp
...
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;WebIndexedDatabaseImpl.h&quot;
&gt; +
&gt; +
&gt; +#include &quot;WebIDBDatabaseError.h&quot;

nit: only 1 new line between those includes.


r=me w/ these issues addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205942</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-30 04:36:30 -0700</bug_when>
    <thetext>Fixed up the comment, changed it to take a Frame and have a disconnectFrame function (like many others), and fix the extra new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205947</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-30 04:59:16 -0700</bug_when>
    <thetext>Committed r56777: &lt;http://trac.webkit.org/changeset/56777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403750</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-13 12:30:37 -0700</bug_when>
    <thetext>This patch was landed with some additional security FIXMEs:

http://trac.webkit.org/changeset/56777/trunk/WebCore/page/DOMWindow.cpp

The fix for that issue is in https://bugs.webkit.org/show_bug.cgi?id=60785.  In the future, please consider filing a security bug or dropping me an email when you add security FIXMEs.  Usually they&apos;re easy to fix, but losing track of them can be painful later.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51946</attachid>
            <date>2010-03-29 12:26:38 -0700</date>
            <delta_ts>2010-03-29 23:13:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36770-20100329202635.patch</filename>
            <type>text/plain</type>
            <size>33733</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDIwMjhmYy4uMzdkZmQzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wMy0yOSAgSmVyZW15IE9ybG93
ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3JlIEluZGV4ZWREQiB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc3MAorCisgICAgICAgIEFkZCB0aGUgInNp
bmdsZXRvbiIgSW5kZXhlZERhdGFiYXNlIG9iamVjdCB0byBQYWdlR3JvdXAKKyAgICAgICAgSW5k
ZXhlZERhdGFiYXNlIG5vdyBoYXMgYSBjcmVhdGUoKSBtZXRob2Qgc2luY2UgUGFnZUdyb3VwIGNh
biBvd24gdGhlIGluc3RhbmNlIChhdCBsZWFzdCBmb3Igbm93KQorICAgICAgICBSaXAgb3V0IHRo
ZSBJREJSZXF1ZXN0IHN0dWZmIChub3cgb2Jzb2xldGUpLgorICAgICAgICBET01XaW5kb3cgbm93
IGNhbiBpbnN0YW50aWF0ZSBpbmRleGVkRGF0YWJhc2Ugb2JqZWN0cyBvbiBkZW1hbmQuCisKKyAg
ICAgICAgTmV3IGxheW91dCB0ZXN0cyBzdGFydGluZyB3aXRoIHRoZSBuZXh0IHBhdGNoICh3aGlj
aCBzaG91bGQgbWFrZSBpbmRleGVkREIub3BlbigpICJ3b3JrIikuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCUmVxdWVzdEN1c3Rv
bS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjppbmRleGVkREIpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
Lmg6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjppbmRleGVkRGF0YWJhc2UpOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0
LmlkbDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlOjpjcmVhdGUpOgorICAgICAg
ICAqIHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVk
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFzZUltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VJbXBsOjpJbmRleGVk
RGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGV4ZWREYXRhYmFzZUltcGw6On5J
bmRleGVkRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZUlt
cGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVx
dWVzdCk6CisgICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAq
IHN0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5pZGw6CisgICAgICAgICogc3RvcmFnZS9j
aHJvbWl1bS9JbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhlZERh
dGFiYXNlOjpjcmVhdGUpOgorCiAyMDEwLTAzLTI0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGVi
ZTIxZi4uNTA5ZWQ4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTIxOCw3ICsyMTgsNiBAQAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJh
c2VFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVz
dC5pZGwnLAotICAgICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvU1FMRXJyb3IuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldC5p
ZGwnLApAQCAtNzUyLDcgKzc1MSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgnLAotICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQlJlcXVlc3RDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbmRleGVkRGF0YWJhc2VSZXF1ZXN0Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCcsCkBAIC0zMjczLDggKzMyNzEsNiBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VFcnJvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJhc2VS
ZXF1ZXN0LmgnLAotICAgICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAnLAotICAgICAg
ICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0luZGV4
ZWREYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmgn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAnLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJSZXF1ZXN0Q3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCUmVxdWVzdEN1c3RvbS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZjRkMGUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJREJSZXF1ZXN0Q3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSNpbmNsdWRlICJWOElEQlJlcXVlc3QuaCIKLQotI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJREJSZXF1ZXN0OjpyZXN1bHRBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKLXsKLSAgICBJREJSZXF1ZXN0KiByZXF1ZXN0ID0gVjhJREJSZXF1ZXN0Ojp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJlc3VsdCA9
IHJlcXVlc3QtPnJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6
Ok51bGwoKTsKLQotICAgIHJldHVybiByZXN1bHQtPmRlc2VyaWFsaXplKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDJhNDU5MDcuLmNm
NWU3MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlz
dG9yeS5oIgorI2luY2x1ZGUgIkluZGV4ZWREYXRhYmFzZS5oIgorI2luY2x1ZGUgIkluZGV4ZWRE
YXRhYmFzZVJlcXVlc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCkBA
IC02NDUsNyArNjQ3LDE5IEBAIE5vdGlmaWNhdGlvbkNlbnRlciogRE9NV2luZG93Ojp3ZWJraXRO
b3RpZmljYXRpb25zKCkgY29uc3QKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIEluZGV4
ZWREYXRhYmFzZVJlcXVlc3QqIERPTVdpbmRvdzo6aW5kZXhlZERCKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gMDsKKyAgICBpZiAobV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0KQorICAgICAgICByZXR1
cm4gbV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmdldCgpOworCisgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX2luZGV4ZWREYXRhYmFzZVJlcXVlc3QgPSBJ
bmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpjcmVhdGUocGFnZSk7CisgICAgcmV0dXJuIG1faW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYTcwNzEz
Yi4uYzNhNzgxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNDAxLDYgKzQwMSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbnM7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8SW5kZXhlZERhdGFiYXNl
UmVxdWVzdD4gbV9pbmRleGVkRGF0YWJhc2VSZXF1ZXN0OworI2VuZGlmCiAKICAgICAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4
IGYzNzZkNTIuLjA2ZmNmMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0zMCwxMiArMzAsMTAgQEAKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5j
bHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgotI2VuZGlmCiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgpAQCAtMjAxLDYgKzE5OSwxOSBAQCBTdG9y
YWdlTmFtZXNwYWNlKiBQYWdlR3JvdXA6OmxvY2FsU3RvcmFnZSgpCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorSW5kZXhlZERhdGFiYXNlKiBQYWdlR3JvdXA6Omlu
ZGV4ZWREYXRhYmFzZSgpCit7CisgICAgLy8gRG8gTk9UIGFkZCBwYWdlIHNldHRpbmdzIGJhc2Vk
IGFjY2VzcyBjb250cm9scyBoZXJlIChsaWtlIGluIExvY2FsU3RvcmFnZSBhYm92ZSkuCisgICAg
Ly8gQ2hyb21lQ2xpZW50IG1pZ2h0IGJlIGEgZ29vZCBwbGFjZS4gIERvaW5nIGEgY2hlY2sgaW4g
RE9NV2luZG93OjppbmRleGVkREIgKHNvIHRoaXMKKyAgICAvLyBvbmx5IGdldHMgY2FsbGVkIG9u
Y2Ugd2UndmUgcGFzc2VkIGEgY2hlY2spIG1pZ2h0IGFsc28gYmUgZ29vZC4gIEJ1dCB0aGUgd2F5
IGl0CisgICAgLy8gd2FzIGRvbmUgb3JpZ2luYWxseSB3YXMgYSBtaXN0YWtlLgorICAgIGlmICgh
bV9pbmRleGVkRGF0YWJhc2UpCisgICAgICAgIG1faW5kZXhlZERhdGFiYXNlID0gSW5kZXhlZERh
dGFiYXNlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gbV9pbmRleGVkRGF0YWJhc2UuZ2V0KCk7Cit9
CisjZW5kaWYKKwogdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsICBQ
YXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBibGFja2xpc3Qs
IFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmggYi9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXgg
NDQ2ZjBjNy4uYzFkMjVmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisr
KyBiL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBJbmRleGVkRGF0YWJhc2U7
CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogCkBAIC02OSw2
ICs3MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RvcmFnZU5hbWVzcGFjZSog
bG9jYWxTdG9yYWdlKCk7CiAgICAgICAgIGJvb2wgaGFzTG9jYWxTdG9yYWdlKCkgeyByZXR1cm4g
bV9sb2NhbFN0b3JhZ2U7IH0KICNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAgICAg
ICAgSW5kZXhlZERhdGFiYXNlKiBpbmRleGVkRGF0YWJhc2UoKTsKKyNlbmRpZgogCiAgICAgICAg
IHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IEtVUkwmLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRyPFZlY3Rv
cjxTdHJpbmc+ID4gYmxhY2tsaXN0LApAQCAtMTAxLDYgKzEwNSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBtX2xvY2FsU3RvcmFnZTsKICNlbmRpZgorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorICAgICAgICBSZWZQdHI8SW5kZXhlZERhdGFiYXNlPiBtX2luZGV4ZWREYXRhYmFzZTsK
KyNlbmRpZgogCiAgICAgICAgIE93blB0cjxVc2VyU2NyaXB0TWFwPiBtX3VzZXJTY3JpcHRzOwog
ICAgICAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRNYXA+IG1fdXNlclN0eWxlU2hlZXRzOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggZTY5ZGUyOS4uZjNmMzU0ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IklEQkRhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogV3JpdGUuCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VSZXF1ZXN0LmgKaW5kZXggODU5YWFlNC4uMjNmNWExMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZVJlcXVlc3QuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBJREJEYXRhYmFzZVJl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZVJlcXVlc3Q+IHsKIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogV3JpdGUuCiAgICAgSURCUmVxdWVzdCogcmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpIHsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlUmVxdWVzdC5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0Lmlk
bAppbmRleCAwMzBiYjZlLi5iZTAzMWQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VSZXF1ZXN0LmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1
ZXN0LmlkbApAQCAtMzAsOCArMzAsMTAgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFj
ZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQkRhdGFi
YXNlUmVxdWVzdCB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJSZXF1ZXN0IHJlcXVl
c3Q7Ci0gICAgICAgIC8vIEZJWE1FOiBXcml0ZS4KKyAgICAgICAgLy8gRklYTUU6IEJvb2xlYW4g
c2hvdWxkIGJlIG9wdGlvbmFsIGFuZCBrZXlQYXRoIHNob3VsZCB0YWtlIG51bGxzLgorICAgICAg
ICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcg
a2V5UGF0aCwgaW4gYm9vbGVhbiBhdXRvSW5jcmVtZW50KTsKKworICAgICAgICAvLyBGSVhNRTog
RmluaXNoLgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWEyMDQ5OS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKLQotI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JREJSZXF1ZXN0OjpJ
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKLXsKLX0KLQotSURCUmVxdWVzdDo6fklEQlJlcXVlc3Qo
KQotewotfQotCi12b2lkIElEQlJlcXVlc3Q6OmFib3J0KCkKLXsKLX0KLQotRXZlbnRUYXJnZXRE
YXRhKiBJREJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAwOwotfQot
Ci1FdmVudFRhcmdldERhdGEqIElEQlJlcXVlc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWYwMGFhOC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0jaWZuZGVmIElEQlJl
cXVlc3RfaAotI2RlZmluZSBJREJSZXF1ZXN0X2gKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIElEQkRhdGFiYXNlRXJyb3I7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci0K
LWNsYXNzIElEQlJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJSZXF1ZXN0PiwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCUmVxdWVzdChj
b250ZXh0KSk7Ci0gICAgfQotICAgIH5JREJSZXF1ZXN0KCk7Ci0KLSAgICB2b2lkIGFib3J0KCk7
Ci0gICAgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlT
dGF0ZTsgfQotICAgIElEQkRhdGFiYXNlRXJyb3IqIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvci5nZXQoKTsgfQotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXN1bHQuZ2V0KCk7IH0KLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoc3VjY2Vzcyk7Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihl
cnJvcik7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+OjpyZWY7Ci0gICAgdXNp
bmcgUmVmQ291bnRlZDxJREJSZXF1ZXN0Pjo6ZGVyZWY7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBp
bnRlcmZhY2UKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQotICAgIHZpcnR1YWwgSURCUmVxdWVzdCogdG9JREJSZXF1ZXN0KCkg
eyByZXR1cm4gdGhpczsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IElEQlJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbnRl
cmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwotCi0gICAgdW5zaWduZWQgc2hvcnQg
bV9yZWFkeVN0YXRlOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBtX2Vycm9yOwotICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fcmVzdWx0OwotCi0gICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIElEQlJlcXVlc3RfaAotCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNDE4NGMuLjAwMDAwMDAKLS0tIGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci1tb2R1bGUgc3RvcmFnZSB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFLAotICAgICAgICBFdmVudFRhcmdldAotICAgIF0gSURCUmVxdWVz
dCB7Ci0gICAgICAgIHZvaWQgYWJvcnQoKTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
SU5JVElBTCA9IDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExPQURJTkcgPSAxOwot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBET05FID0gMjsKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7Ci0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBJREJEYXRhYmFzZUVycm9yIGVycm9yOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW0N1c3RvbUdldHRlcl0gYW55IHJlc3VsdDsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25zdWNjZXNzOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9y
OwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJh
c2UuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggMTY3NDk0
ZS4uYTIwOTc0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5j
cHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTM4LDkgKzM4
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFz
ZT4gSW5kZXhlZERhdGFiYXNlOjpnZXQoKQorUGFzc1JlZlB0cjxJbmRleGVkRGF0YWJhc2U+IElu
ZGV4ZWREYXRhYmFzZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gSW5kZXhlZERhdGFiYXNlSW1w
bDo6Z2V0KCk7CisgICAgcmV0dXJuIEluZGV4ZWREYXRhYmFzZUltcGw6OmNyZWF0ZSgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSW5k
ZXhlZERhdGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlLmgKaW5kZXgg
NDkyOGYzNi4uNjgwZTQ4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRh
YmFzZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2UuaApAQCAtNDcsNyAr
NDcsNyBAQCB0eXBlZGVmIElEQkNhbGxiYWNrczxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2VDYWxs
YmFja3M7CiAvLyB0cmlnZ2VyIHdvcmsgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBpZiBuZWNlc3Nh
cnkuCiBjbGFzcyBJbmRleGVkRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxJbmRl
eGVkRGF0YWJhc2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmRleGVkRGF0
YWJhc2U+IGdldCgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZT4gY3Jl
YXRlKCk7CiAgICAgdmlydHVhbCB+SW5kZXhlZERhdGFiYXNlKCkgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGJvb2wgbW9kaWZ5RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPikgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZUltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3Bw
CmluZGV4IDY2YjQzMjQuLjk1NGUyMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRl
eGVkRGF0YWJhc2VJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
SW1wbC5jcHAKQEAgLTM2LDI4ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlu
ZGV4ZWREYXRhYmFzZUltcGwqIEluZGV4ZWREYXRhYmFzZUltcGw6OmluZGV4ZWREYXRhYmFzZUlt
cGwgPSAwOwotCi1QYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZUltcGw+IEluZGV4ZWREYXRhYmFz
ZUltcGw6OmdldCgpCitQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZUltcGw+IEluZGV4ZWREYXRh
YmFzZUltcGw6OmNyZWF0ZSgpCiB7Ci0gICAgaWYgKCFpbmRleGVkRGF0YWJhc2VJbXBsKQotICAg
ICAgICBpbmRleGVkRGF0YWJhc2VJbXBsID0gbmV3IEluZGV4ZWREYXRhYmFzZUltcGwoKTsKLSAg
ICBBU1NFUlQoaW5kZXhlZERhdGFiYXNlSW1wbCk7Ci0gICAgcmV0dXJuIGluZGV4ZWREYXRhYmFz
ZUltcGw7CisgICAgcmV0dXJuIG5ldyBJbmRleGVkRGF0YWJhc2VJbXBsKCk7CiB9CiAKIEluZGV4
ZWREYXRhYmFzZUltcGw6OkluZGV4ZWREYXRhYmFzZUltcGwoKQogewotICAgIC8vIEZJWE1FOiBN
YWtlIHRoaXMgdGhyZWFkIHNhZmUgYmVmb3JlIGltcGxlbWVudGluZyBhIHN5bmMgaW50ZXJmYWNl
LgotICAgIEFTU0VSVCghaW5kZXhlZERhdGFiYXNlSW1wbCk7Ci0gICAgaW5kZXhlZERhdGFiYXNl
SW1wbCA9IHRoaXM7CiB9CiAKIEluZGV4ZWREYXRhYmFzZUltcGw6On5JbmRleGVkRGF0YWJhc2VJ
bXBsKCkKIHsKLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRocmVhZCBzYWZlIGJlZm9yZSBpbXBs
ZW1lbnRpbmcgYSBzeW5jIGludGVyZmFjZS4KLSAgICBBU1NFUlQoaW5kZXhlZERhdGFiYXNlSW1w
bCA9PSB0aGlzKTsKLSAgICBpbmRleGVkRGF0YWJhc2VJbXBsID0gMDsKIH0KIAogdm9pZCBJbmRl
eGVkRGF0YWJhc2VJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgYm9vbCBtb2RpZnlEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZUltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBs
LmgKaW5kZXggOWQ3ZDM4Ni4uOGQ4NzRmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZUltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
SW1wbC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5k
ZXhlZERhdGFiYXNlSW1wbCA6IHB1YmxpYyBJbmRleGVkRGF0YWJhc2UgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZUltcGw+IGdldCgpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZUltcGw+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwg
fkluZGV4ZWREYXRhYmFzZUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9vbCBtb2RpZnlEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPElEQkRhdGFiYXNlPiA+
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmNwcAppbmRleCBkNjE0
MDZkLi5kZThkODYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNl
UmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3Qu
Y3BwCkBAIC0yOCwxNCArMjgsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LQogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiSW5kZXhlZERhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBhZ2VHcm91cC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW5kZXhlZERhdGFiYXNlUmVxdWVzdDo6SW5kZXhlZERhdGFiYXNlUmVx
dWVzdCgpCitJbmRleGVkRGF0YWJhc2VSZXF1ZXN0OjpJbmRleGVkRGF0YWJhc2VSZXF1ZXN0KFBh
Z2UqIHBhZ2UpCisgICAgOiBtX2luZGV4ZWREYXRhYmFzZShwYWdlLT5ncm91cCgpLmluZGV4ZWRE
YXRhYmFzZSgpKQorICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmggYi9XZWJDb3JlL3N0b3JhZ2UvSW5k
ZXhlZERhdGFiYXNlUmVxdWVzdC5oCmluZGV4IDc0YWFkYTMuLmVhY2ZlMDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaApAQCAtMzgsMjMgKzM4LDI0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIEluZGV4ZWREYXRh
YmFzZTsKK2NsYXNzIFBhZ2U7CiAKIGNsYXNzIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxJbmRleGVkRGF0YWJhc2VSZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5kZXhlZERhdGFiYXNlUmVxdWVzdD4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmRleGVkRGF0YWJhc2VSZXF1ZXN0PiBjcmVhdGUoUGFnZSogcGFnZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhlZERhdGFiYXNlUmVxdWVz
dCgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0
KHBhZ2UpKTsKICAgICB9CiAgICAgfkluZGV4ZWREYXRhYmFzZVJlcXVlc3QoKTsKIAotICAgIElE
QlJlcXVlc3QqIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3QuZ2V0KCk7IH0KICAg
ICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBib29sIG1vZGlmeURhdGFiYXNlLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAg
SW5kZXhlZERhdGFiYXNlUmVxdWVzdCgpOworICAgIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QoUGFn
ZSogcGFnZSk7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG1fcmVxdWVzdDsKKyAgICBQ
YXNzUmVmUHRyPEluZGV4ZWREYXRhYmFzZT4gbV9pbmRleGVkRGF0YWJhc2U7CisgICAgUGFnZSog
bV9wYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lu
ZGV4ZWREYXRhYmFzZVJlcXVlc3QuaWRsCmluZGV4IDVmM2I2M2UuLjJjMmE5MGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmlkbAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5pZGwKQEAgLTMwLDcgKzMwLDYgQEAg
bW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKICAgICBdIEluZGV4ZWREYXRhYmFzZVJlcXVlc3QgewotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSURCUmVxdWVzdCByZXF1ZXN0OwogICAgICAgICBbQ3VzdG9tXSB2
b2lkIG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBkZXNjcmlwdGlvbiwgaW4g
b3B0aW9uYWwgYm9vbGVhbiBtb2RpZnlEYXRhYmFzZSwgSURCRGF0YWJhc2VFcnJvckNhbGxiYWNr
IG9uZXJyb3IsIElEQkRhdGFiYXNlUmVxdWVzdENhbGxiYWNrIG9uc3VjY2VzcykKICAgICAgICAg
ICAgIHJhaXNlcyhJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JbmRleGVkRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9zdG9y
YWdlL2Nocm9taXVtL0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggMzQxYTY4OS4uNmY1M2Y5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0luZGV4ZWREYXRhYmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEluZGV4ZWRE
YXRhYmFzZT4gSW5kZXhlZERhdGFiYXNlOjpnZXQoKQorUGFzc1JlZlB0cjxJbmRleGVkRGF0YWJh
c2U+IEluZGV4ZWREYXRhYmFzZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gQ2hyb21pdW1Ccmlk
Z2U6OmluZGV4ZWREYXRhYmFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmRkMjEwOC4uMWU0NmJm
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMtMjkgIEplcmVteSBPcmxv
dyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW9yZSBJbmRleGVkREIgd29yaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3NzAKKworICAgICAgICBTdGFydCB0aGUg
aW1wbGVtZW50YXRpb24gb2YgV2ViSW5kZXhlZERhdGFiYXNlIChmb3IgZW50cmFuY2UgYmFjayBp
bnRvIFdlYktpdCkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJJbmRleGVkRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1w
bC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbmRleGVkRGF0YWJhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluZGV4ZWREYXRhYmFzZUltcGw6On5XZWJJbmRleGVk
RGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6
b3Blbik6CisgICAgICAgICogc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuaDogQWRkZWQuCisK
IDIwMTAtMDMtMjQgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiODQ4NGYwLi5l
ZjZkMGZkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzMzLDYgKzMzMyw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbWFnZUNHLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZURl
Y29kZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkltYWdlU2tpYS5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViSW5kZXhlZERhdGFiYXNlSW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRF
dmVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5kZXhlZERhdGFi
YXNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkluZGV4ZWREYXRhYmFzZS5oCmluZGV4
IDgwMmJiYTUuLjhhYTNjMjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SW5kZXhlZERhdGFiYXNlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbmRleGVk
RGF0YWJhc2UuaApAQCAtMjUsNiArMjUsNyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCisKICNpZm5kZWYgV2ViSW5kZXhlZERhdGFiYXNlX2gKICNkZWZpbmUgV2ViSW5k
ZXhlZERhdGFiYXNlX2gKIApAQCAtNDEsNyArNDIsNyBAQCBjbGFzcyBXZWJTdHJpbmc7CiAvLyBo
dHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9XZWJTaW1wbGVEQi8KIGNsYXNzIFdlYkluZGV4
ZWREYXRhYmFzZSB7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBlbnRyeSBiYWNr
IGludG8gV2ViS2l0IGZvciB0aGlzIEFQSS4KKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJJbmRl
eGVkRGF0YWJhc2UqIGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCB+V2ViSW5kZXhlZERhdGFiYXNl
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5kZXhlZERhdGFi
YXNlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYWFlMjMKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuY3Bw
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5kZXhl
ZERhdGFiYXNlSW1wbC5oIgorCisKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJbmRleGVkRGF0YWJhc2UqIFdlYkluZGV4ZWREYXRh
YmFzZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluZGV4ZWREYXRhYmFzZUltcGwo
KTsKK30KKworV2ViSW5kZXhlZERhdGFiYXNlSW1wbDo6fldlYkluZGV4ZWREYXRhYmFzZUltcGwo
KQoreworfQorCit2b2lkIFdlYkluZGV4ZWREYXRhYmFzZUltcGw6Om9wZW4oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBib29sIG1vZGlmeURhdGFi
YXNlLCBpbnQmIGV4Y2VwdGlvbkNvZGUsIFdlYklEQkNhbGxiYWNrczxXZWJJREJEYXRhYmFzZT4q
IGNhbGxiYWNrc1B0cikKK3sKKyAgICBPd25QdHI8V2ViSURCQ2FsbGJhY2tzPFdlYklEQkRhdGFi
YXNlPio+IGNhbGxiYWNrcyhjYWxsYmFja3NQdHIpOworICAgIGNhbGxiYWNrcy0+b25FcnJvcihX
ZWJJREJEYXRhYmFzZUVycm9yKDAsICJOb3QgaW1wbGVtZW50ZWQiKSk7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgcmVhbHouCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkluZGV4ZWREYXRhYmFzZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5kZXhlZERhdGFiYXNlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY2MmM3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkluZGV4
ZWREYXRhYmFzZUltcGwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbmRleGVkRGF0
YWJhc2VJbXBsX2gKKyNkZWZpbmUgV2ViSW5kZXhlZERhdGFiYXNlSW1wbF9oCisKKyNpbmNsdWRl
ICJXZWJJbmRleGVkRGF0YWJhc2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkluZGV4ZWREYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSW5kZXhlZERhdGFiYXNlIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5XZWJJbmRleGVkRGF0YWJhc2VJbXBsKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3Jp
cHRpb24sIGJvb2wgbW9kaWZ5RGF0YWJhc2UsIGludCYgZXhjZXB0aW9uQ29kZSwgV2ViSURCQ2Fs
bGJhY2tzPFdlYklEQkRhdGFiYXNlPiogY2FsbGJhY2tzKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViSW5kZXhlZERhdGFiYXNlSW1wbF9oCg==
</data>
<flag name="review"
          id="35330"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="35392"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>