<?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>40424</bug_id>
          
          <creation_ts>2010-06-10 06:56:48 -0700</creation_ts>
          <short_desc>Implement more of IndexedDB&apos;s Indexes and ObjectStores</short_desc>
          <delta_ts>2010-06-11 07:03:03 -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="Jeremy Orlow">jorlow</assigned_to>
          <cc>andreip</cc>
    
    <cc>fishd</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236343</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-10 06:56:48 -0700</bug_when>
    <thetext>Implement more of IndexedDB&apos;s Indexes and ObjectStores</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236352</commentid>
    <comment_count>1</comment_count>
      <attachid>58374</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-10 07:07:46 -0700</bug_when>
    <thetext>Created attachment 58374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236369</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-10 08:00:14 -0700</bug_when>
    <thetext>Looks good, one comment below:

&gt; PassRefPtr&lt;IDBObjectStoreRequest&gt; IDBDatabaseRequest::objectStore(const String&amp; name, unsigned short mode)
&gt; {
&gt;     RefPtr&lt;IDBObjectStore&gt; objectStore = m_database-&gt;objectStore(name, mode);
&gt;     ASSERT(objectStore); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
&gt;     return IDBObjectStoreRequest::create(objectStore.release());
&gt; }

The spec says about this:

// Simple shorthand for transaction([name], mode).objectStore(name);
// Returns object immediately.

So simply returning an object is incorrect, we should also call transaction(). Add a FIXME?

Furthermore, why not raise NOT_FOUND_ERR if an object store with that name doesn&apos;t exist rather than the ASSERT + FIXME? It&apos;s just a one-liner, right? Or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236375</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-10 08:34:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Looks good, one comment below:
&gt; 
&gt; &gt; PassRefPtr&lt;IDBObjectStoreRequest&gt; IDBDatabaseRequest::objectStore(const String&amp; name, unsigned short mode)
&gt; &gt; {
&gt; &gt;     RefPtr&lt;IDBObjectStore&gt; objectStore = m_database-&gt;objectStore(name, mode);
&gt; &gt;     ASSERT(objectStore); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
&gt; &gt;     return IDBObjectStoreRequest::create(objectStore.release());
&gt; &gt; }
&gt; 
&gt; The spec says about this:
&gt; 
&gt; // Simple shorthand for transaction([name], mode).objectStore(name);
&gt; // Returns object immediately.
&gt; 
&gt; So simply returning an object is incorrect, we should also call transaction(). Add a FIXME?

k.
 
&gt; Furthermore, why not raise NOT_FOUND_ERR if an object store with that name doesn&apos;t exist rather than the ASSERT + FIXME? It&apos;s just a one-liner, right? Or am I missing something?

I need to add a bunch of code to support IDBDatabaseExceptions.  Best left to its own patch, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236801</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-11 06:28:13 -0700</bug_when>
    <thetext>Ping.  Given that Andrei has done an unofficial review of the meat (he&apos;s working with me on implementing it), it should be a really easy r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236807</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-11 07:03:03 -0700</bug_when>
    <thetext>Committed r61015: &lt;http://trac.webkit.org/changeset/61015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58374</attachid>
            <date>2010-06-10 07:07:46 -0700</date>
            <delta_ts>2010-06-11 06:38:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40424-20100610150744.patch</filename>
            <type>text/plain</type>
            <size>40538</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGRlYzNkMWVjOTVkZmNhMzNhZjJjNmE0ZDVmNDNiMWVhOWVjZTYyYS4uODQ1OWRhZDJlMTJkZGZi
ZDZkYjQzMTlmYmIzZTJlMjQ0MGVhNTljMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wNi0xMCAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbW9yZSBvZiBJbmRleGVkREIncyBJ
bmRleGVzIGFuZCBPYmplY3RTdG9yZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwNDI0CisKKyAgICAgICAgQ2xlYW4gdXAgYm90aCBvZiB0aGVzZSBj
bGFzc2VzIGEgYml0IGFuZCBhZGQgY3JlYXRlL29wZW4vcmVtb3ZlCisgICAgICAgIG1ldGhvZHMg
YXMgbmVlZGVkLgorCisgICAgICAgIFRlc3RzIGluIGEgZnV0dXJlIHBhdGNoIChwcm9taXNlKS4K
KworICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6Om9i
amVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6b2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbXBsOjpyZW1vdmVPYmplY3RTdG9y
ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlSW1wbDo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUltcGw6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSW1wbDo6
dmVyc2lvbik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0OjpJREJEYXRhYmFzZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0OjpjcmVhdGVPYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVJlcXVlc3Q6Om9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlUmVxdWVzdDo6cmVtb3ZlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZVJlcXVlc3Q6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0
OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVJlcXVlc3Q6OnZl
cnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VSZXF1ZXN0OjpvYmplY3RTdG9y
ZXMpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RT
dG9yZUltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZVJlcXVlc3Q6Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZVJlcXVlc3Q6OmFkZE9yTW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlUmVxdWVzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlUmVxdWVzdDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmVSZXF1ZXN0OjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZVJlcXVl
c3Q6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVz
dC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmlkbDoKKwogMjAx
MC0wNi0xMCAgTWlrZSBCZWxzaGUgIDxtYmVsc2hlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRleCBkMGQ1ZWZjYjRj
NjAwOGY2NWYxZTc0NDg3Y2UzZDliODFiOTBmNjk4Li4wMDU1YWQxZTA5MGZiMjM1ZDk3YzgxYmZi
YTFkYTBiYmI3OTlmNDI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2Uu
aAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtMzcsNiArMzcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBJREJDYWxsYmFja3M7CitjbGFzcyBJREJPYmplY3RTdG9yZTsKKwogLy8gVGhpcyBjbGFz
cyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2VSZXF1ZXN0IChhc3luYykgYW5kIElEQkRhdGFiYXNl
U3luYyAoc3luYykuCiAvLyBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IElEQkRhdGFiYXNlSW1wbCBh
bmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CiAvLyBjYWxscyBhY3Jvc3Mg
cHJvY2VzcyBiYXJyaWVycykuIEFsbCBjYWxscyB0byB0aGVzZSBjbGFzc2VzIHNob3VsZCBiZSBu
b24tYmxvY2tpbmcgYW5kCkBAIC00NSwxMSArNDcsMTYgQEAgY2xhc3MgSURCRGF0YWJhc2UgOiBw
dWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxJREJEYXRhYmFzZT4gewogcHVibGljOgogICAgIHZpcnR1
YWwgfklEQkRhdGFiYXNlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgPSAwOwot
ICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlcygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0ID0gMDsKKworICAgIC8vIEZJWE1FOiBBZGQg
dHJhbnNhY3Rpb24gYW5kIHNldFZlcnNpb24uCisKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUltcGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1w
bC5jcHAKaW5kZXggYzY0ODU2Y2FlOTA3YTg3ZDU0MGJhNzY3NzE1ZDY3OTlkMzcwZGQzMi4uZDE0
ZGZkZDlkYzdlNzMwODBkYjUxYzM2MmI1YTBkNmNmYTQyN2FjMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDE2ICs0NSwxOCBAQCBJREJEYXRhYmFzZUltcGw6On5JREJE
YXRhYmFzZUltcGwoKQogewogfQogCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFi
YXNlSW1wbDo6b2JqZWN0U3RvcmVzKCkKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2VJbXBsOjpvYmplY3RTdG9yZXMoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCByZXR1cm4gdGhlIGFjdHVhbCBsaXN0LgotICAgIHJldHVybiBET01TdHJpbmdMaXN0Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERP
TVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAoT2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZXMu
ZW5kKCk7ICsraXQpCisgICAgICAgIG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChpdC0+Zmlyc3Qp
OworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBJREJE
YXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUp
KSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiT2JqZWN0U3RvcmUgbmFtZSBh
bHJlYWR5IGV4aXN0cy4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiQW4g
b2JqZWN0U3RvcmUgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMuIikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02Myw2ICs2NSwyMiBAQCB2b2lkIElEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBh
dAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKG9iamVjdFN0b3JlLnJlbGVhc2UoKSk7CiB9CiAK
K1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlSW1wbDo6b2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQoreworICAgIEFTU0VSVCgh
bW9kZSk7IC8vIEZJWE1FOiBIYW5kbGUgbm9uLXN0YW5kYXJkIG1vZGVzLgorICAgIHJldHVybiBt
X29iamVjdFN0b3Jlcy5nZXQobmFtZSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VJbXBsOjpyZW1v
dmVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCit7CisgICAgaWYgKCFtX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkg
eworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSLCAiTm8gb2JqZWN0U3RvcmUgd2l0aCB0
aGF0IG5hbWUgZXhpc3RzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fb2Jq
ZWN0U3RvcmVzLnJlbW92ZShuYW1lKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOworfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUltcGwuaAppbmRl
eCBlYmY5ZmEyNDQ4ZmMyYTkzYzg1N2EyNmI5YTlkMmNiMjIyNDk0MjMxLi45M2ZiY2ZmY2Y4N2Q0
MzRmY2M5ZWVlMjM2NjUwMWY5OTUxMGU0YjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlSW1wbC5o
CkBAIC00MiwxMSArNDIsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlSW1w
bCgpOwogCiAgICAgLy8gSW1wbGVtZW50cyBJREJEYXRhYmFzZQotICAgIHZpcnR1YWwgU3RyaW5n
IG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bigpIHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KLSAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9u
KCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKIHBy
aXZhdGU6CiAgICAgSURCRGF0YWJhc2VJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlUmVxdWVzdC5jcHAKaW5kZXggZWZlYmYxMzRkZmY5NzJiYWJkYzI1MTA5MDUwOTNh
MjZiNTg3ZGJjNi4uYzYyMDI3OTg0MDVmYjRhZmFmMzNmZWFmMWRkN2FlN2Y2MTdkZmYxZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJJREJEYXRhYmFzZVJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIklEQkFueS5oIgorI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIK
ICNpbmNsdWRlICJJbmRleGVkRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCkBAIC0zNSw4ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURC
RGF0YWJhc2VSZXF1ZXN0OjpJREJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZT4gaWRiRGF0YWJhc2UpCi0gICAgOiBtX2lkYkRhdGFiYXNlKGlkYkRhdGFiYXNlKQorSURCRGF0
YWJhc2VSZXF1ZXN0OjpJREJEYXRhYmFzZVJlcXVlc3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4g
ZGF0YWJhc2UpCisgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQogewogICAgIG1fdGhpcyA9IElE
QkFueTo6Y3JlYXRlKCk7CiAgICAgbV90aGlzLT5zZXQodGhpcyk7CkBAIC00OCwxMyArNDksMjIg
QEAgSURCRGF0YWJhc2VSZXF1ZXN0Ojp+SURCRGF0YWJhc2VSZXF1ZXN0KCkKIAogUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJEYXRhYmFzZVJlcXVlc3Q6OmNyZWF0ZU9iamVjdFN0b3JlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBtX3RoaXMpOworICAgIG1fZGF0YWJhc2UtPmNyZWF0ZU9iamVj
dFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHJlcXVlc3QpOworICAgIHJldHVy
biByZXF1ZXN0OworfQogCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlUmVxdWVzdD4gSURCRGF0
YWJhc2VSZXF1ZXN0OjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpCit7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IG1f
ZGF0YWJhc2UtPm9iamVjdFN0b3JlKG5hbWUsIG1vZGUpOworICAgIEFTU0VSVChvYmplY3RTdG9y
ZSk7IC8vIEZJWE1FOiBJZiB0aGlzIGlzIG51bGwsIHdlIHNob3VsZCByYWlzZSBhIE5PVF9GT1VO
RF9FUlIuCisgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlUmVxdWVzdDo6Y3JlYXRlKG9iamVjdFN0
b3JlLnJlbGVhc2UoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRGF0YWJhc2VS
ZXF1ZXN0OjpyZW1vdmVPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgbV90aGlzKTsKLSAgICBtX2lkYkRhdGFiYXNl
LT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCByZXF1ZXN0
KTsKKyAgICBtX2RhdGFiYXNlLT5yZW1vdmVPYmplY3RTdG9yZShuYW1lLCByZXF1ZXN0KTsKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5oCmlu
ZGV4IGIwYTlkNjU1NjkxY2JmNGQwMWMwNzgxZDFlNWVmNjM1NThhNDUzMDkuLjZiOWUxMDczNjUz
YzZlOTI5NWMzZmQ2M2VhZTRjOGQ1MGZmZTZhMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VS
ZXF1ZXN0LmgKQEAgLTM3LDI5ICszNywzMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJREJBbnk7CitjbGFzcyBJREJPYmplY3RTdG9yZVJlcXVlc3Q7CiBjbGFzcyBJREJSZXF1ZXN0
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCRGF0YWJhc2VSZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VSZXF1ZXN0PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gZGF0YWJhc2UpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlUmVxdWVzdChpZGJE
YXRhYmFzZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlUmVxdWVz
dChkYXRhYmFzZSkpOwogICAgIH0KICAgICB+SURCRGF0YWJhc2VSZXF1ZXN0KCk7CiAKICAgICAv
LyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGJEYXRhYmFzZS0+bmFtZSgpOyB9Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGJEYXRhYmFzZS0+ZGVzY3JpcHRpb24oKTsgfQotICAgIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pZGJEYXRhYmFzZS0+dmVyc2lvbigpOyB9Ci0gICAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBtX2lkYkRh
dGFiYXNlLT5vYmplY3RTdG9yZXMoKTsgfQorICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhYmFzZS0+bmFtZSgpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZS0+ZGVzY3JpcHRpb24oKTsgfQorICAgIFN0cmluZyB2ZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZS0+dmVyc2lvbigpOyB9CisgICAgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNl
LT5vYmplY3RTdG9yZXMoKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVP
YmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGggPSAiIiwgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2UpOwor
ICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVSZXF1ZXN0PiBvYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0IG1vZGUgPSAwKTsgLy8gRklYTUU6IFVzZSBjb25z
dGFudCByYXRoZXIgdGhhbiAwLgorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlT2Jq
ZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
IHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VSZXF1ZXN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+
KTsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgUmVmUHRyPElEQkFueT4gbV90aGlzOwogfTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlUmVxdWVzdC5pZGwgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbAppbmRleCA0NDMwNDUzY2YzYzI0
YTUzYWVhMGU1MDE2ZGY0YzczOGU0Yzk3NjlmLi4wY2IxMzVmNDcxNmZlNjJkNTU3NWI1MGI3MTM5
NmE3MmE5N2RiMjVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1
ZXN0LmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VSZXF1ZXN0LmlkbApAQCAt
MjgsMTQgKzI4LDE4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiAgICAgXSBJREJEYXRhYmFzZVJlcXVlc3Qg
ewotICAgICAgICAvLyBGSVhNRTogQ29tcGxldGUgdGhpcyBmaWxlLgotCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgLy8gcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBkZXNjcmlwdGlvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlz
dCBvYmplY3RTdG9yZXM7CiAKKyAgICAgICAgLy8gRklYTUU6IEFkZCB0cmFuc2FjdGlvbi4KKyAg
ICAgICAgLy8gRklYTUU6IEFkZCBzZXRWZXJzaW9uLgorCiAgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNyZWF0ZU9iamVjdFN0b3JlKGluIERPTVN0
cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gYXV0b0luY3JlbWVudCk7CisgICAgICAgIC8vIEZJWE1FOiBvYmplY3RTdG9yZSBuZWVk
cyB0byBiZSBhYmxlIHRvIHJhaXNlIGFuIElEQkRhdGFiYXNlRXhjZXB0aW9uLgorICAgICAgICBJ
REJPYmplY3RTdG9yZVJlcXVlc3Qgb2JqZWN0U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtP
cHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9kZSk7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IHJlbW92ZU9iamVjdFN0b3JlKGluIERPTVN0cmlu
ZyBuYW1lKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCmluZGV4IDFiMmZi
ZGEyOTY0YjExODRmNTRmOWRlMTQ5YjhlMjQ3NjE1NTZlN2EuLjgzN2I2NWE1NjA5ZTk4NjExNWRh
ODdlNTI5NzM0MjU4ZDk3OWU1MWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC0yNyw4
ICsyNyw2IEBACiAjZGVmaW5lIElEQk9iamVjdFN0b3JlX2gKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCkBAIC00Niw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdCA9
IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlSW1wbC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlSW1wbC5oCmluZGV4IGQ0Njc4YjUxY2U5Zjg3NmRlMDA1YThiMWIwOGY1ODgyNWYw
ZjRlZTYuLjg5YTA2ZGJiNTRjZmJkY2Q4YWQxNTU0Zjk4YWUxMThiOWJjNzM4NjUgMTAwNzU1Ci0t
LSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgSURC
T2JqZWN0U3RvcmVJbXBsX2gKIAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVk
ZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0
LmNwcAppbmRleCA2OGE2NGE1MTVlYTg2NGNkZTI0OWRmNWFkNThlYTBiMDM0ZGY3NDhkLi5iMmMz
NmRjOWNmY2IyMTllOTIxNDEwZWQ5NDg4NDU0OWFhOWZlNTc0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcApAQCAtNTgsNjMgKzU4LDY4IEBAIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVSZXF1ZXN0OjppbmRleE5hbWVzKCkgY29uc3QK
ICAgICByZXR1cm4gbV9vYmplY3RTdG9yZS0+aW5kZXhOYW1lcygpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlUmVxdWVzdDo6Z2V0KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBrZXkpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlUmVxdWVzdDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBrZXkpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oa2V5KTsKICAg
ICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZVJl
cXVlc3Q6OmFkZChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBrZXkpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlUmVxdWVzdDo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGtleSkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGtleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmVSZXF1ZXN0Ojptb2RpZnkoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4ga2V5
KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZVJlcXVlc3Q6Om1vZGlmeShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBrZXkpCiB7
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShrZXkpOwogICAgIHJldHVy
biAwOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlUmVxdWVzdDo6
YWRkT3JNb2RpZnkoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4ga2V5KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZVJlcXVlc3Q6OmFkZE9yTW9kaWZ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGtleSkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGtleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmVSZXF1ZXN0OjpyZW1vdmUoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGtleSkKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmVSZXF1ZXN0OjpyZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGtleSkKIHsKICAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShr
ZXkpOwogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlUmVxdWVzdDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKSBjb25zdAorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZVJlcXVlc3Q6OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIFVOVVNFRF9QQVJBTShu
YW1lKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaXF1
ZSk7Ci0gICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgbV90aGlzKTsKKyAgICBtX29iamVjdFN0b3JlLT5jcmVh
dGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIHJlcXVlc3QpOworICAgIHJldHVybiByZXF1
ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4UmVxdWVzdD4gSURCT2JqZWN0U3RvcmVSZXF1
ZXN0OjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPElEQkluZGV4
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmVSZXF1ZXN0OjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgcmV0dXJuIElEQkluZGV4UmVxdWVzdDo6Y3JlYXRlKG1fb2JqZWN0U3RvcmUtPmlu
ZGV4KG5hbWUpKTsKKyAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+
aW5kZXgobmFtZSk7CisgICAgQVNTRVJUKGluZGV4KTsgLy8gRklYTUU6IElmIHRoaXMgaXMgbnVs
bCwgd2Ugc2hvdWxkIHJhaXNlIGEgTk9UX0ZPVU5EX0VSUi4KKyAgICByZXR1cm4gSURCSW5kZXhS
ZXF1ZXN0OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZVJlcXVlc3Q6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmVSZXF1ZXN0Ojpy
ZW1vdmVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICBVTlVTRURfUEFSQU0obmFt
ZSk7Ci0gICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgbV90aGlzKTsKKyAgICBtX29iamVjdFN0b3JlLT5yZW1v
dmVJbmRleChuYW1lLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlUmVxdWVzdC5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oCmlu
ZGV4IGMzYmIxYjQxMTlhMTNhYzI3MTcyNzIyZDE0MWZiZGQ2NDQzODc2NjkuLmYxYTlmNWJhNTQ5
NWYwMjJlZjRmZGI2YWQxMzJjMGI5MTQ4N2ViNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVSZXF1ZXN0LmgKQEAgLTU0LDE1ICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGtl
eVBhdGgoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMo
KSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBrZXkpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRk
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGtleSA9IDApOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
bW9kaWZ5KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGtleSA9IDApOwotICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gYWRkT3JNb2RpZnkoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4ga2V5ID0gMCk7Ci0gICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiByZW1vdmUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGtleSk7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBrZXkpOworICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBrZXkgPSAwKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG1vZGlmeShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4ga2V5ID0gMCk7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBhZGRPck1vZGlmeShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4ga2V5ID0gMCk7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBy
ZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBrZXkpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUgPSBm
YWxzZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJJbmRleFJlcXVlc3Q+IGluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZW1vdmVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gY3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSA9IGZhbHNlKTsKKyAgICBQYXNz
UmVmUHRyPElEQkluZGV4UmVxdWVzdD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlUmVx
dWVzdChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CkBAIC03NSw1ICs3NSw1IEBAIHByaXZh
dGU6CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gSURCRGF0YWJhc2VSZXF1ZXN0X2gKKyNlbmRpZiAv
LyBJREJPYmplY3RTdG9yZVJlcXVlc3RfaAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZVJlcXVlc3QuaWRsCmluZGV4IGMxMTU2ZjJkMjdlNGNiMGZkMWFjYmZjYTRlMTIxZDc4NGJmYzc5
ZTguLjg3MzYyOWQ1MGM3YTM3YWM3MjUyYjljMTEzOWNmMTMxMmM0NGE2YjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsCisrKyBiL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZVJlcXVlc3QuaWRsCkBAIC0yOCwxOCArMjgsMjAgQEAgbW9k
dWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKICAgICBdIElEQk9iamVjdFN0b3JlUmVxdWVzdCB7Ci0gICAgICAgIElEQlJl
cXVlc3QgZ2V0KGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBrZXkpOworICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXQoaW4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlIGtleSk7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogQ29tZSB0byBjb25j
ZW5zdXMgcmUgZ2V0QWxsLgogICAgICAgICAvLyBGSVhNRTogU2VyaWFsaXplZFNjcmlwdFZhbHVl
IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgeW91IHBhc3MgaW4gc29tZXRoaW5nIHRoYXQgY2FuJ3Qg
YmUgc2VyaWFsaXplZC4KICAgICAgICAgLy8gICAgICAgIFdlIG5lZWQgdG8gaW5zdGVhZCAicmFp
c2UiIHRoaXMgZXJyb3IgdmlhIGFuIGVycm9yIGNhbGxiYWNrLgotICAgICAgICBJREJSZXF1ZXN0
IGFkZChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdmFsdWUsIGluIFtPcHRpb25hbF0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlIGtleSk7Ci0gICAgICAgIElEQlJlcXVlc3QgbW9kaWZ5KGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSB2YWx1ZSwgaW4gW09wdGlvbmFsXSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUga2V5KTsKLSAgICAgICAgSURCUmVxdWVzdCBhZGRPck1vZGlmeShpbiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgdmFsdWUsIGluIFtPcHRpb25hbF0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIGtleSk7
Ci0gICAgICAgIElEQlJlcXVlc3QgcmVtb3ZlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBrZXkp
OworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBh
ZGQoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlLCBpbiBbT3B0aW9uYWxdIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBrZXkpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCUmVxdWVzdCBtb2RpZnkoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlLCBp
biBbT3B0aW9uYWxdIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBrZXkpOworICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBhZGRPck1vZGlmeShpbiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUgdmFsdWUsIGluIFtPcHRpb25hbF0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGtleSk7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IHJlbW92ZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUga2V5KTsKICAgICAgICAgLy8g
RklYTUU6IHdyaXRlIG9wZW5DdXJzb3IKLSAgICAgICAgSURCUmVxdWVzdCBjcmVhdGVJbmRleChp
biBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gYm9v
bGVhbiB1bmlxdWUpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCUmVxdWVzdCBjcmVhdGVJbmRleChpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtl
eVBhdGgsIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1bmlxdWUpOworICAgICAgICAvLyBGSVhNRTog
VGhpcyBuZWVkcyB0byByYWlzZSBhbiBJREJEYXRhYmFzZUV4Y2VwdGlvbiBvbiBlcnJvcnMuCiAg
ICAgICAgIElEQkluZGV4UmVxdWVzdCBpbmRleChpbiBET01TdHJpbmcgbmFtZSk7Ci0gICAgICAg
IElEQlJlcXVlc3QgcmVtb3ZlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCByZW1vdmVJbmRleChpbiBE
T01TdHJpbmcgbmFtZSk7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBu
YW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVBhdGg7CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBhZDE0ZjQ1YTEyMTAyZTc0OGQ5YzkwYzkyNWVkNWRiZDI4ZDAyMTlhLi5hNzY0
ZjRkNmQwOGQyZTlkNzc4MzYxNWY2OGU5OGFjMjliOTZhMDMzIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxMC0wNi0xMCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgbW9yZSBvZiBJbmRleGVkREIncyBJbmRleGVzIGFuZCBPYmplY3RTdG9yZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNDI0CisKKyAgICAg
ICAgQWRkIHBsdW1iaW5nIGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXMuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6ZGVzY3JpcHRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJEYXRhYmFzZTo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFz
ZTo6cmVtb3ZlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNl
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VQcm94eTo6bmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5OjpkZXNjcmlwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5Ojp2ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlUHJveHk6Om9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZVByb3h5OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZVByb3h5OjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJv
eHkuaDoKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZVByb3h5OjppbmRleE5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlUHJveHk6OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVQ
cm94eS5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlSW1wbDo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZUltcGw6OnZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUlt
cGw6Om9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6
Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpyZW1v
dmVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZUltcGw6OldlYklEQk9iamVjdFN0b3JlSW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9i
amVjdFN0b3JlSW1wbDo6aW5kZXhOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RT
dG9yZUltcGw6OmluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBs
OjpyZW1vdmVJbmRleCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oOgor
CiAyMDEwLTA2LTEwICBNaWtlIEJlbHNoZSAgPG1iZWxzaGVAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oCmluZGV4IGU4YThmMmQ4ZWVmNmJiODU4OGJmNmZhYzg1OTUxMjdkYTExMGViMWQuLmIw
ZDYwODZhZWI3OWY4ZGM2ZWU1ZTg2OGM5MzUxZWY2NGY2MWE3MzcgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTMzLDI4ICszMywyOSBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJREJDYWxsYmFja3M7CitjbGFzcyBX
ZWJJREJPYmplY3RTdG9yZTsKIAogLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNl
IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlc2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklE
QkRhdGFiYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZSgpIHsgfQog
Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpCisgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFt
ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKICAgICB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcg
ZGVzY3JpcHRpb24oKQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIFdlYlN0cmluZygpOwogICAgIH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkK
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwog
ICAgIH0KLSAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCkKKyAgICB2
aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVzKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdlYkRPTVN0
cmluZ0xpc3QoKTsKQEAgLTYzLDYgKzY0LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgLy8gVHJhbnNmZXJzIG93bmVy
c2hpcCBvZiB0aGUgV2ViSURCT2JqZWN0U3RvcmUgdG8gdGhlIGNhbGxlci4KKyAgICB2aXJ0dWFs
IFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVu
c2lnbmVkIHNob3J0IG1vZGUpCisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
T2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcykKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCT2JqZWN0U3RvcmUuaAppbmRleCAwMTI3NGU2YmI1N2NjYzI0YzA5ODQwMzE0NWQwZjY2NmNk
MDY2NjUyLi5mZWFkODgxMGY1ZTRmNmZiMmVkZjJiYjliOGM4NzM2NWQxMjhiMGFhIDEwMDc1NQot
LS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFdlYklEQk9iamVjdFN0b3JlX2gKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
I2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIApAQCAtNDcsNiArNDgsMjUgQEAgcHVibGljOgog
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXZWJT
dHJpbmcoKTsKICAgICB9CisgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IGluZGV4TmFtZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gV2ViRE9NU3RyaW5nTGlzdCgpOworICAgIH0KKyAgICB2b2lkIGNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKikKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUg
V2ViSURCSW5kZXggdG8gdGhlIGNhbGxlci4KKyAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdm9pZCByZW1vdmVJbmRleChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyopCisgICAgeworICAgICAgICBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIC8vIEZJWE1FOiBmaW5pc2guCiB9
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmNwcAppbmRleCBmY2MyNDZi
YjdkNGFmNzFlMjQ1NWI3ZGNiMmY1ZTJiNzk0NGYwOGYyLi45ZDAwOWMwZjc1ZmIxOTQ2MzNiNTJl
YTZhYjU5Yjk4YWI3YzdlOTIyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94
eS5jcHAKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgog
I2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHku
aCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmUuaCIKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCkBAIC01MSwyMiArNTMsMjIgQEAgSURCRGF0YWJhc2VQcm94
eTo6fklEQkRhdGFiYXNlUHJveHkoKQogewogfQogCi1TdHJpbmcgSURCRGF0YWJhc2VQcm94eTo6
bmFtZSgpCitTdHJpbmcgSURCRGF0YWJhc2VQcm94eTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fd2ViSURCRGF0YWJhc2UtPm5hbWUoKTsKIH0KIAotU3RyaW5nIElEQkRhdGFiYXNlUHJv
eHk6OmRlc2NyaXB0aW9uKCkKK1N0cmluZyBJREJEYXRhYmFzZVByb3h5OjpkZXNjcmlwdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPmRlc2NyaXB0aW9uKCk7CiB9
CiAKLVN0cmluZyBJREJEYXRhYmFzZVByb3h5Ojp2ZXJzaW9uKCkKK1N0cmluZyBJREJEYXRhYmFz
ZVByb3h5Ojp2ZXJzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+
dmVyc2lvbigpOwogfQogCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlUHJv
eHk6Om9iamVjdFN0b3JlcygpCitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNl
UHJveHk6Om9iamVjdFN0b3JlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJh
c2UtPm9iamVjdFN0b3JlcygpOwogfQpAQCAtNzYsNiArNzgsMTkgQEAgdm9pZCBJREJEYXRhYmFz
ZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGEKICAgICBtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
KTsKIH0KIAorUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2VQcm94eTo6b2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQoreworICAg
IFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJEYXRhYmFz
ZS0+b2JqZWN0U3RvcmUobmFtZSwgbW9kZSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZShvYmpl
Y3RTdG9yZSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
eworICAgIG1fd2ViSURCRGF0YWJhc2UtPnJlbW92ZU9iamVjdFN0b3JlKG5hbWUsIG5ldyBXZWJJ
REJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZVByb3h5LmgKaW5kZXggYzY1YzhmZmM3NTdjMzY1Zjg2ZTM3NGViYWExZWI5MmYz
ODdhZjhmNy4uMzY1ODhmMDgzYTkxMTk1NjMxZDJhODRhYWE3MTgwZTc4MTE0MjFmZSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVByb3h5LmgKQEAgLTQyLDEyICs0MiwxNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShQYXNzT3duUHRy
PFdlYktpdDo6V2ViSURCRGF0YWJhc2U+KTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZVByb3h5
KCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGVz
Y3JpcHRpb24oKTsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCk7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0
OworICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhN
RTogQWRkIHRyYW5zYWN0aW9uIGFuZCBzZXRWZXJzaW9uLgorCiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgLy8g
RklYTUU6IEFkZCBvdGhlciBtZXRob2RzLgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBt
b2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgogICAgIElEQkRhdGFi
YXNlUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlPik7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcAppbmRleCAyYjU3M2ZjZmFlMDU1NTc2
ZTM0ODk2NWMxMWQ5NWIzODQ1M2I2NDRlLi41OTQyZTJhYTVhMzhmNWRhYTBlZmVkYTk4YjAxZmRh
ZDg5NjNmNjRmIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
UHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5j
cHAKQEAgLTI4LDkgKzI4LDEwIEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5j
bHVkZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCSW5kZXhQcm94eS5oIgogI2luY2x1
ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJJbmRleC5oIgogI2lu
Y2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCi0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtNjIsMzMgKzYzLDI1IEBAIFN0
cmluZyBJREJPYmplY3RTdG9yZVByb3h5OjprZXlQYXRoKCkgY29uc3QKIAogUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZVByb3h5OjppbmRleE5hbWVzKCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX3dlYklEQk9iamVjdFN0b3JlLT5pbmRleE5hbWVzKCk7
CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pCit2b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
LgotICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHVuaXF1ZSk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
bV93ZWJJREJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBu
ZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJJ
bmRleD4gSURCT2JqZWN0U3RvcmVQcm94eTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKQogewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgVU5VU0VEX1BBUkFNKG5hbWUpOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIFdlYktpdDo6V2ViSURCSW5k
ZXgqIGluZGV4ID0gbV93ZWJJREJPYmplY3RTdG9yZS0+aW5kZXgobmFtZSk7CisgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4UHJveHk6OmNyZWF0
ZShpbmRleCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6cmVtb3ZlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCit2b2lkIElEQk9iamVj
dFN0b3JlUHJveHk6OnJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAg
IFVOVVNFRF9QQVJBTShuYW1lKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX3dl
YklEQk9iamVjdFN0b3JlLT5yZW1vdmVJbmRleChuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaAppbmRleCAwZmIyMDAzZDVmY2EyN2IzY2M4NWU5
MTkwMzFiYjBmZjNmYzA1OWVmLi43ODk4M2NiODYzM2RlNGI1ZjBlYmJjMjY3MzYwMjhlNDA0NTAz
YzNmIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHku
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaApAQCAtNDgs
NiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAzNTM4
OWY2NTcwODZlNzE0NzY2NzExMmMzNmU3NDQ2ZGVkMThkODRhLi5lMmY3NzFhMzFmMzZiNzM5M2M2
NjYxM2I0YWI3YmMwNWZjNmM1ZjYzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJv
eHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNr
cy5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlSW1wbC5oIgogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKQEAgLTM3LDggKzM4LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRh
dGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSkKLSAgICA6IG1f
aWRiRGF0YWJhc2UoaWRiRGF0YWJhc2UpCitXZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFi
YXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBkYXRhYmFzZSkKKyAgICA6IG1fZGF0YWJh
c2UoZGF0YWJhc2UpCiB7CiB9CiAKQEAgLTQ2LDI5ICs0Nyw0MiBAQCBXZWJJREJEYXRhYmFzZUlt
cGw6On5XZWJJREJEYXRhYmFzZUltcGwoKQogewogfQogCi1XZWJTdHJpbmcgV2ViSURCRGF0YWJh
c2VJbXBsOjpuYW1lKCkKK1dlYlN0cmluZyBXZWJJREJEYXRhYmFzZUltcGw6Om5hbWUoKSBjb25z
dAogewotICAgIHJldHVybiBtX2lkYkRhdGFiYXNlLT5uYW1lKCk7CisgICAgcmV0dXJuIG1fZGF0
YWJhc2UtPm5hbWUoKTsKIH0KIAotV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVzY3Jp
cHRpb24oKQorV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVzY3JpcHRpb24oKSBjb25z
dAogewotICAgIHJldHVybiBtX2lkYkRhdGFiYXNlLT5kZXNjcmlwdGlvbigpOworICAgIHJldHVy
biBtX2RhdGFiYXNlLT5kZXNjcmlwdGlvbigpOwogfQogCi1XZWJTdHJpbmcgV2ViSURCRGF0YWJh
c2VJbXBsOjp2ZXJzaW9uKCkKK1dlYlN0cmluZyBXZWJJREJEYXRhYmFzZUltcGw6OnZlcnNpb24o
KSBjb25zdAogewotICAgIHJldHVybiBtX2lkYkRhdGFiYXNlLT52ZXJzaW9uKCk7CisgICAgcmV0
dXJuIG1fZGF0YWJhc2UtPnZlcnNpb24oKTsKIH0KIAotV2ViRE9NU3RyaW5nTGlzdCBXZWJJREJE
YXRhYmFzZUltcGw6Om9iamVjdFN0b3JlcygpCitXZWJET01TdHJpbmdMaXN0IFdlYklEQkRhdGFi
YXNlSW1wbDo6b2JqZWN0U3RvcmVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pZGJEYXRhYmFz
ZS0+b2JqZWN0U3RvcmVzKCk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2UtPm9iamVjdFN0b3Jlcygp
OwogfQogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7Ci0gICAgbV9pZGJEYXRhYmFzZS0+
Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICBtX2RhdGFiYXNlLT5jcmVhdGVPYmpl
Y3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGNhbGxiYWNrcykpOworfQorCitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJh
c2VJbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIHNob3J0
IG1vZGUpCit7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IG1fZGF0
YWJhc2UtPm9iamVjdFN0b3JlKG5hbWUsIG1vZGUpOworICAgIGlmICghb2JqZWN0U3RvcmUpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgV2ViSURCT2JqZWN0U3RvcmVJbXBsKG9i
amVjdFN0b3JlKTsKK30KKwordm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OnJlbW92ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7
CisgICAgbV9kYXRhYmFzZS0+cmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMzZiMmM5ZjY4ZDc1NmE1
NzVjZjY4ZjRlODBmZDE4NjdkM2MzNzk1OC4uYzgzZDhkNzQzM2YyODc2MDI2MDE0NjJjMmEzNzJk
YmJjN2EzNDA3MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBA
IC0zNSwyMCArMzUsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZTsg
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CisKIC8v
IFNlZSBjb21tZW50IGluIFdlYkluZGV4ZWREYXRhYmFzZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2
aWV3IHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2Vi
SURCRGF0YWJhc2UgewogcHVibGljOgotICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKTsKKyAgICBXZWJJREJEYXRh
YmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBkYXRhYmFzZSk7
CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIFdlYlN0
cmluZyBuYW1lKCk7Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZGVzY3JpcHRpb24oKTsKLSAgICB2
aXJ0dWFsIFdlYlN0cmluZyB2ZXJzaW9uKCk7Ci0gICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0
IG9iamVjdFN0b3JlcygpOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFdlYlN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIHZlcnNpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2Jq
ZWN0U3RvcmVzKCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWdu
ZWQgc2hvcnQgbW9kZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogCiBwcml2YXRl
OgotICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOwor
ICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHAKaW5kZXggNTBiZjI3YjIzNDQ3OTA4M2ZlM2MzZDE1MjEyOGM2ZjM4M2Jj
MTU2OS4uYTQxMDEwYWI2MWM2MDBkN2Y0YTFjN2Q3OWYzZjk4MjIwOWNiNWI1NCAxMDA3NTUKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjYsOCArMjYs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUlt
cGwuaCIKIAorI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFj
a3NQcm94eS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVkZSAiV2ViSURC
SW5kZXhJbXBsLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApAQCAtMzUsOCAr
MzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVdlYklEQk9iamVjdFN0b3JlSW1wbDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsKFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKQotICAgIDogbV9pZGJPYmplY3RTdG9yZShp
ZGJPYmplY3RTdG9yZSkKK1dlYklEQk9iamVjdFN0b3JlSW1wbDo6V2ViSURCT2JqZWN0U3RvcmVJ
bXBsKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKQorICAgIDogbV9vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZSkKIHsKIH0KIApAQCAtNDYsMTIgKzQ4LDM1IEBAIFdlYklEQk9i
amVjdFN0b3JlSW1wbDo6fldlYklEQk9iamVjdFN0b3JlSW1wbCgpCiAKIFdlYlN0cmluZyBXZWJJ
REJPYmplY3RTdG9yZUltcGw6Om5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX2lkYk9iamVj
dFN0b3JlLT5uYW1lKCk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUtPm5hbWUoKTsKIH0KIAog
V2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKTsKKyAgICByZXR1cm4gbV9vYmplY3RT
dG9yZS0+a2V5UGF0aCgpOworfQorCitXZWJET01TdHJpbmdMaXN0IFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUtPmlu
ZGV4TmFtZXMoKTsKK30KKwordm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgbV9vYmplY3RTdG9yZS0+
Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGNhbGxiYWNrcykpOworfQorCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCit7CisgICAgUmVmUHRyPElEQkluZGV4PiBp
bmRleCA9IG1fb2JqZWN0U3RvcmUtPmluZGV4KG5hbWUpOworICAgIGlmICghaW5kZXgpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgV2ViSURCSW5kZXhJbXBsKGluZGV4KTsKK30K
Kwordm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OnJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit7CisgICAgbV9vYmplY3RTdG9y
ZS0+cmVtb3ZlSW5kZXgobmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3Mp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggMGY0NGFlNTI4MDAyY2JjMDU4NDI3NzMyYjRhMTRl
ZWYxNTZlZjRjMy4uZjU5ODQwZmZiN2Y2ODUzMWNjNWZlMGIxZWY5ODJkYmVlNjhhMTE2OCAxMDA3
NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC0zNSwxOCAr
MzUsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJPYmplY3RTdG9yZTsgfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViSURCSW5kZXg7CisKIC8vIFNlZSBjb21tZW50
IGluIFdlYkluZGV4ZWRPYmplY3RTdG9yZSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNl
IGNsYXNzZXMuCiBjbGFzcyBXZWJJREJPYmplY3RTdG9yZUltcGwgOiBwdWJsaWMgV2ViSURCT2Jq
ZWN0U3RvcmUgewogcHVibGljOgotICAgIFdlYklEQk9iamVjdFN0b3JlSW1wbChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKTsKKyAgICBXZWJJ
REJPYmplY3RTdG9yZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZSk7CiAgICAgdmlydHVhbCB+V2ViSURCT2JqZWN0U3RvcmVJbXBsKCk7CiAK
ICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJp
bmcga2V5UGF0aCgpIGNvbnN0OwotICAgIC8vIEZJWE1FOiBhZGQgaW5kZXggbWV0aG9kcy4KKyAg
ICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3QgaW5kZXhOYW1lcygpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwor
ICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MpOwogCiAgcHJpdmF0ZToKLSAgICBXVEY6OlJlZlB0cjxXZWJD
b3JlOjpJREJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKKyAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gbV9vYmplY3RTdG9yZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="43443"
          type_id="1"
          status="+"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>