<?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>146550</bug_id>
          
          <creation_ts>2015-07-02 09:58:50 -0700</creation_ts>
          <short_desc>build-webkit --no-indexed-database fails due to missing guards</short_desc>
          <delta_ts>2015-09-02 04:59:12 -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>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emanuele Aina">emanuele.aina</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>andrunko</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106399</commentid>
    <comment_count>0</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2015-07-02 09:58:50 -0700</bug_when>
    <thetext>At the moment IndexedDatabase is the only user of the DatabaseProcess, which means that the usefulness of enabling the latter without the former is very low. They are however protected by different guards, ENABLE(INDEXED_DATABASE) and ENABLE(DATABASE_PROCESS) respectively, while it is technically possible to end up in that situation it&apos;s likely that everyone either disable them both or enable them. In such a situation, inevitably the two guards grew intermingled, with different levels on consistency.

Unfortunately, turning off ENABLE(INDEXED_DATABASE) while keeping ENABLE(DATABASE_PROCESS) is exactly what WebKit ends up doing when specifying the --no-indexed-database flag on `build-webkit` invocation, leading to build failures like the one below:

$ Tools/Scripts/build-webkit --gtk --release --no-indexed-database

[...]

In file included from ../../Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:27:0:
../../Source/WebKit2/DatabaseProcess/DatabaseProcess.h:56:70: error: ‘UniqueIDBDatabaseIdentifier’ does not name a type
     PassRefPtr&lt;UniqueIDBDatabase&gt; getOrCreateUniqueIDBDatabase(const UniqueIDBDatabaseIdentifier&amp;);
                                                                      ^
In file included from ../../Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:27:0:
../../Source/WebKit2/DatabaseProcess/DatabaseProcess.h:90:98: error: ‘SecurityOriginData’ was not declared in this scope
     void deleteWebsiteDataForOrigins(WebCore::SessionID, uint64_t websiteDataTypes, const Vector&lt;SecurityOriginData&gt;&amp; origins, uint64_t callbackID);

[...]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106401</commentid>
    <comment_count>1</comment_count>
      <attachid>256014</attachid>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2015-07-02 10:12:44 -0700</bug_when>
    <thetext>Created attachment 256014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106707</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-07-03 08:12:21 -0700</bug_when>
    <thetext>Is it useful for anything to enable DatabaseProcess without IndexedDB?
If no, it would be better to unify these guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106711</commentid>
    <comment_count>3</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2015-07-03 08:20:23 -0700</bug_when>
    <thetext>&gt; Is it useful for anything to enable DatabaseProcess without IndexedDB?
&gt; If no, it would be better to unify these guards.

As far as I can tell, at the moment IndexedDB seems to be the only user of DatabaseProcess, so merging those guards would make sense as the split will likely bitrot again.

On the other hand the DatabaseProcess code seems to be structured to handle multiple users, so in future we could need to split them again, redoing some work which has already been done.

I just needed to make the whole thing build (at the moment I&apos;m stuck to a GCC 4.8 toolchain and DatabaseProcess is the only thing that requires GCC 4.9) so both solutions work for me. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111228</commentid>
    <comment_count>4</comment_count>
      <attachid>257252</attachid>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2015-07-22 00:44:04 -0700</bug_when>
    <thetext>Created attachment 257252
Patch

Rebased on current trunk (r187148)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114174</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-03 05:57:08 -0700</bug_when>
    <thetext>Anders or Sam, what do you think about this patch? 

Do we need DatabaseProcess if IndexedDB feature is disabled?
- If yes, we need a patch like this to fix this build configuration.
- If no, we should unify the two guard or disable DatabaseProcess
automatically if IndexedDB is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114176</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-03 06:16:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Anders or Sam, what do you think about this patch? 
&gt; 
&gt; Do we need DatabaseProcess if IndexedDB feature is disabled?
&gt; - If yes, we need a patch like this to fix this build configuration.
&gt; - If no, we should unify the two guard or disable DatabaseProcess
&gt; automatically if IndexedDB is disabled.

just a note: We need one of these changes to fix the --minimal build
configuration on EFL to be able to catch broken ifdef guards again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115330</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-06 04:45:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Anders or Sam, what do you think about this patch? 
&gt; 
&gt; Do we need DatabaseProcess if IndexedDB feature is disabled?
&gt; - If yes, we need a patch like this to fix this build configuration.
&gt; - If no, we should unify the two guard or disable DatabaseProcess
&gt; automatically if IndexedDB is disabled.

ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115350</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-06 09:33:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Anders or Sam, what do you think about this patch? 
&gt; &gt; 
&gt; &gt; Do we need DatabaseProcess if IndexedDB feature is disabled?
&gt; &gt; - If yes, we need a patch like this to fix this build configuration.
&gt; &gt; - If no, we should unify the two guard or disable DatabaseProcess
&gt; &gt; automatically if IndexedDB is disabled.
&gt; 
&gt; ping?

The DatabaseProcess is only needed for IndexedDB right now. That may not always be the case however, so I prefer having two guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120277</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-24 09:02:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Anders or Sam, what do you think about this patch? 
&gt; &gt; &gt; 
&gt; &gt; &gt; Do we need DatabaseProcess if IndexedDB feature is disabled?
&gt; &gt; &gt; - If yes, we need a patch like this to fix this build configuration.
&gt; &gt; &gt; - If no, we should unify the two guard or disable DatabaseProcess
&gt; &gt; &gt; automatically if IndexedDB is disabled.
&gt; &gt; 
&gt; &gt; ping?
&gt; 
&gt; The DatabaseProcess is only needed for IndexedDB right now. That may not
&gt; always be the case however, so I prefer having two guards.

The proposed patch leaves the two guards untouched 
and adds the missing guards to be able to build with
disabled indexedDB support and enabled DatabaseProcess.

So could you possibly review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120557</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-08-25 02:43:57 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122512</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-01 02:41:57 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Anders or Sam, what do you think about this patch? 
&gt; &gt; &gt; 
&gt; &gt; &gt; Do we need DatabaseProcess if IndexedDB feature is disabled?
&gt; &gt; &gt; - If yes, we need a patch like this to fix this build configuration.
&gt; &gt; &gt; - If no, we should unify the two guard or disable DatabaseProcess
&gt; &gt; &gt; automatically if IndexedDB is disabled.
&gt; &gt; 
&gt; &gt; ping?
&gt; 
&gt; The DatabaseProcess is only needed for IndexedDB right now. That may not
&gt; always be the case however, so I prefer having two guards.

Could you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122543</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-01 08:47:24 -0700</bug_when>
    <thetext>I don&apos;t think we need owners to approve build fixes?

A good argument could be made that ENABLE_DATABASE_PROCESS should subsume the ENABLE_INDEXED_DATABASE option, but for the time being that&apos;s not the case, and it can always be changed later....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122805</commentid>
    <comment_count>13</comment_count>
      <attachid>257252</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-02 04:45:30 -0700</bug_when>
    <thetext>Comment on attachment 257252
Patch

Rejecting attachment 257252 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 257252, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 139 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
Authentication realm: &lt;http://svn.webkit.org:80&gt; Mac OS Forge
Password for &apos;commit-queue@webkit.org&apos;: 
Authentication realm: &lt;http://svn.webkit.org:80&gt; Mac OS Forge
Username: error: git-svn died of signal 11

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 139 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/132788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122806</commentid>
    <comment_count>14</comment_count>
      <attachid>257252</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-02 04:59:02 -0700</bug_when>
    <thetext>Comment on attachment 257252
Patch

Clearing flags on attachment: 257252

Committed r189244: &lt;http://trac.webkit.org/changeset/189244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122807</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-02 04:59:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256014</attachid>
            <date>2015-07-02 10:12:44 -0700</date>
            <delta_ts>2015-07-22 00:43:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146550-20150702191149.patch</filename>
            <type>text/plain</type>
            <size>19268</size>
            <attacher name="Emanuele Aina">emanuele.aina</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjI1CmRpZmYgLS1naXQgYy9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgdy9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDViN2E3NDFiOGE3MDU1
MThiMGZhNzM5ZGEzMmY0MDAzOTU0NWVhOC4uMThiZWI0ZDIxMjU3MGVjZjVkY2NmZTc0ZGY2ZTli
MGVhNGUyOWUxNyAxMDA2NDQKLS0tIGMvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyB3L1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA3LTAyICBFbWFu
dWVsZSBBaW5hICA8ZW1hbnVlbGUuYWluYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIEZpeCBi
dWlsZCB3aXRoIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKSBhbmQgIUVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2l2ZW4gdGhhdCBJTkRFWEVEX0RBVEFCQVNFIGF0IHRoZSBtb21lbnQgaXMgdGhlIG9ubHkgdXNl
ciBvZgorICAgICAgICBEQVRBQkFTRV9QUk9DRVNTLCB0aGVpciBndWFyZHMgZ290IGluZXZpdGFi
bHkgbWl4ZWQgdXAgd2l0aCB2YXJpb3VzCisgICAgICAgIGxldmVscyBvZiBjb25zaXN0ZW5jeS4g
U2luY2UgdGhlIC0tbm8taW5kZXhlZC1kYXRhYmFzZSBmbGFnIGZyb20KKyAgICAgICAgYnVpbGQt
d2Via2l0IGxlYXZlcyBEQVRBQkFTRV9QUk9DRVNTIGVuYWJsZWQsIHRoaXMgcmVzdWx0ZWQgaW4g
YnVpbGQKKyAgICAgICAgZmFpbHVyZXMuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL0RhdGFi
YXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIEFk
ZCBtaXNzaW5nIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSBndWFyZHMgYW5kIG1vdmVkIHRoZQor
ICAgICAgICBtaXNwbGFjZWQgb25lcy4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRh
YmFzZVByb2Nlc3MuaDoKKyAgICAgICAgRGl0dG8sIGFuZCBhbHNvIGFkZCBhIGZvcndhcmQgZGVj
bGFyYXRpb24gZm9yIFNlY3VyaXR5T3JpZ2luRGF0YSBzaW5jZQorICAgICAgICB3aXRoIElOREVY
RURfREFUQUJBU0Ugb2ZmIFNlY3VyaXR5T3JpZ2luRGF0YS5oIGlzIG5vIGxvbmdlciBpbmNsdWRl
ZAorICAgICAgICBieSB3YXkgb2YgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmguCisKIDIw
MTUtMDctMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFdlYlNRTCBkb2Vzbid0IHdvcmsgYmVjYXVzZSBvcGVuRGF0YWJhc2UgYWx3
YXlzIGZhaWxzIHdpdGggRE9NIEV4Y2VwdGlvbiAxOApkaWZmIC0tZ2l0IGMvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgdy9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCA0YzMxMDNkNWUyMDc3NzYx
YWU3YmMzZGI3YjhmMTg2NDQzZDU1NWUzLi41NjY0MjlmMjA1MTRiYWMwMGUwZmI1ZDA2MTMwNzUw
YTlkN2MxMzdlIDEwMDY0NAotLS0gYy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcAorKysgdy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVm
ZQogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIFBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vz
czo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFi
YXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CkBAIC0xMTQsOSArMTE1LDExIEBAIHZvaWQg
RGF0YWJhc2VQcm9jZXNzOjpyZW1vdmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJE
YXRhYmFzZSYgZGF0YWJhc2UpCiAKICAgICBtX2lkYkRhdGFiYXNlcy5yZW1vdmUoaWRlbnRpZmll
cik7CiB9CisjZW5kaWYKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRpYWxpemVEYXRhYmFz
ZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIC8vICoqKioqKioqKgog
ICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBm
b3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSBy
ZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoq
KioqKioqKgpAQCAtMTI1LDEyICsxMjgsMTUgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRp
YWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXIKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5pbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgZW5zdXJlSW5kZXhlZERh
dGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKFN0cmluZ0ltcGw6OmVtcHR5KCkpOworI2VuZGlmCiB9
CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpl
bnN1cmVJbmRleGVkRGF0YWJhc2VSZWxhdGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVBhdGgpCiB7CiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGFic29sdXRlSW5kZXhlZERhdGFi
YXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpKSk7CiB9CisjZW5k
aWYKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewpAQCAtMTQwLDEyICsxNDYsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmVu
c3VyZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBtYWtlIGFsbCBkaXJlY3RvcmllcyBmb3IgcGF0aCAnJXMnIiwgcGF0aC51dGY4KCku
ZGF0YSgpKTsKIH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogU3RyaW5nIERhdGFi
YXNlUHJvY2Vzczo6YWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFiYXNlUmVsYXRp
dmVQYXRoKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewogICAgIC8vIEZJWE1FOiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoKSB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCB0byBhcHBlbmQg
aW5kaXZpZHVhbCBhdG9taWMgY29tcG9uZW50cy4KICAgICAvLyBXZSBkb24ndCBoYXZlIGEgZnVu
Y3Rpb24gZGVzaWduZWQgdG8gYXBwZW5kIGEgbXVsdGktY29tcG9uZW50IHN1YnBhdGgsIGJ1dCB3
ZSBzaG91bGQuCiAgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2luZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeSwgcmVsYXRpdmVQYXRoKTsKIH0KKyNlbmRpZgogCiB2b2lkIERhdGFi
YXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0
YXNrKQogewpAQCAtMjI0LDYgKzIzMiw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgdWluCiAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQsIHdlYnNpdGVEYXRhKSwg
MCk7CiAgICAgfSkpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMpIHsKICAg
ICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRo
ZSBzZXNzaW9uIElELgogICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
QXN5bmNUYXNrPihbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7
CkBAIC0yMzYsNiArMjQ1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoU2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW4KICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KSk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNp
dGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTI2MCw2ICsyNzAsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCB3ZWJzaXRlRGF0YQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2Fs
bGJhY2tJRCksIDApOwogICAgIH0pKTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJh
c2VzKSB7CiAgICAgICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rh
c2s+KFt0aGlzLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKIApAQCAtMjY3
LDYgKzI3OCw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJD
b3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhCiAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgfSkp
OwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFU
eXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2luRGF0
YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0yOTEsNiArMzAzLDcgQEAgdm9pZCBEYXRhYmFz
ZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHcKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhjYWxsYmFja0lEKSwgMCk7CiAgICAgfSkpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJE
YXRhYmFzZXMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+IHNlY3VyaXR5T3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9y
aWdpbkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQpAQCAtMzAyLDggKzMxNSwxMCBAQCB2b2lk
IERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNl
c3Npb25JRCwgdWludDY0X3QgdwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0pKTsKICAgICB9CisjZW5kaWYK
IH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IERhdGFiYXNlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lu
cygpCiB7CiAgICAgaWYgKG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTMxOSw3ICszMzQsOSBAQCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
RGF0YWJhc2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKAogCiAgICAgcmV0dXJuIHNl
Y3VyaXR5T3JpZ2luczsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBjbG9zZS9pbnZhbGlk
YXRlIGFueSBsaXZlIGhhbmRsZXMgdG8gdGhlIGRhdGFiYXNlIGZpbGVzIHdlIGFyZSBhYm91dCB0
byBkZWxldGUuCkBAIC0zNzMsNiArMzkwLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0
ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXMKICAg
ICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmllZFNpbmNlKTsKIH0KKyNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
CmRpZmYgLS1naXQgYy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmggdy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgK
aW5kZXggNTlhNjE4YmU0MDU5NWMyOGMyMmJkYjJlOWNhMjE4MTc5NmQyM2M2OS4uZGM4NzVlNDBh
M2MwZDVlYWI0NmQzNDg2N2NmMzMyYzlmZDZhZGIwMCAxMDA2NDQKLS0tIGMvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyB3L1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFz
ZTsKIAogc3RydWN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKK3N0cnVjdCBT
ZWN1cml0eU9yaWdpbkRhdGE7CiAKIGNsYXNzIERhdGFiYXNlUHJvY2VzcyA6IHB1YmxpYyBDaGls
ZFByb2Nlc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNlUHJvY2Vzcyk7CkBA
IC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VQcm9jZXNzJiBzaW5n
bGV0b24oKTsKICAgICB+RGF0YWJhc2VQcm9jZXNzKCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKICAgICBQYXNzUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOwpAQCAtNTgsNiArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGVuc3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0aEV4aXN0cyhjb25z
dCBTdHJpbmcmKTsKICAgICBTdHJpbmcgYWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURh
dGFiYXNlUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAKICAgICBXb3JrUXVl
dWUmIHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCkBAIC04OSw5ICs5MiwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
LCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qg
d2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGluZGV4ZWREYXRh
YmFzZU9yaWdpbnMoKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNGb3JP
cmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOwog
ICAgIHZvaWQgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01vZGlmaWVkU2luY2Uoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyNlbmRpZgog
CiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3b3JrIHF1ZXVlIHRocmVhZCBvbmx5CiAgICAgdm9p
ZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpOwpAQCAtMTAxLDkgKzEwNiwxMSBAQCBwcml2YXRl
OgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogICAgIFN0cmluZyBtX2luZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKIAogICAgIEhh
c2hNYXA8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2U+PiBtX2lkYkRhdGFiYXNlczsKKyNlbmRpZgogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKICAgICBNdXRleCBtX2RhdGFiYXNlVGFza011
dGV4OwpkaWZmIC0tZ2l0IGMvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgdy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlNzY0NjcwMTk5NWI2
OGM4NzgzNmEzZmY5NzA5NTFmMzc0ZDliNjQzLi45ODhjMzE4MjQ3ZWZlZDY2YWFlZDAzZGFiMjYx
OGExODk3MTE2ZGFlIDEwMDY0NAotLS0gYy9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgdy9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNTks
MzMgKzU5LDM5IEBAIHZvaWQgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBJREJDb25uZWN0aW9uTWFwOjpp
dGVyYXRvciBiYWNrZW5kSXRlcmF0b3IgPSBtX2lkYkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBpZiAoYmFja2VuZEl0ZXJhdG9yICE9IG1faWRiQ29u
bmVjdGlvbnMuZW5kKCkpCiAgICAgICAgICAgICBiYWNrZW5kSXRlcmF0b3ItPnZhbHVlLT5kaWRS
ZWNlaXZlRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCiB2b2lkIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+
JiByZXBseSkKIHsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBJREJDb25uZWN0aW9u
TWFwOjppdGVyYXRvciBiYWNrZW5kSXRlcmF0b3IgPSBtX2lkYkNvbm5lY3Rpb25zLmZpbmQoZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBpZiAoYmFja2VuZEl0ZXJhdG9yICE9IG1f
aWRiQ29ubmVjdGlvbnMuZW5kKCkpCiAgICAgICAgICAgICBiYWNrZW5kSXRlcmF0b3ItPnZhbHVl
LT5kaWRSZWNlaXZlU3luY0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb25NZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogeworI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogICAgIC8vIFRoZSBXZWJQcm9jZXNzIGhhcyBkaXNjb25uZWN0ZWQs
IGNsb3NlIGFsbCBvZiB0aGUgY29ubmVjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0CiAgICAgd2hp
bGUgKCFtX2lkYkNvbm5lY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmVtb3ZlRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbihtX2lkYkNvbm5lY3Rpb25zLmJlZ2luKCktPmtleSk7CisjZW5k
aWYKIH0KIAogdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTkz
LDYgKzk5LDcgQEAgdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLAogCiB9CiAKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIHZvaWQgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3Rh
Ymxpc2hJREJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQog
ewogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBpZGJDb25uZWN0aW9u
ID0gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y3JlYXRlKCp0aGlzLCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcik7CkBAIC0xMDYsNiArMTEzLDcgQEAgdm9pZCBEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZURhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24odWlu
dDY0X3QKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gaWRiQ29ubmVj
dGlvbiA9IG1faWRiQ29ubmVjdGlvbnMudGFrZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7
CiAgICAgaWRiQ29ubmVjdGlvbi0+ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKIH0KKyNl
bmRpZgogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGMvU291cmNlL1dlYktp
dDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
IHcvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IDFiYTM5NzY3YjdjYWVkNzIyM2ZhZTk1NmU3MDE0Yjc0OGYw
YjIyMDYuLjJhYWYyYzJkMjk0YWNmODJlMDQwYTZkMTNiOGRmZTU0NDY2YjljOTAgMTAwNjQ0Ci0t
LSBjL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgdy9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0Rh
dGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKKyNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCiAKQEAgLTM4LDIwICszOCwyNCBAQCBEYXRhYmFzZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCiAKIHZv
aWQgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgZW5jb2RlciA8PCBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8
PCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisjZW5kaWYKIH0KIAog
Ym9vbCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBy
ZXN1bHQpCiB7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQor
I2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGMvU291cmNlL1dl
YktpdDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCB3L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggYjEwNDRmYTkyZTg5YjI4YjY3OWRhZjlmNGY0N2IwY2MxMjlk
YzUzYy4uMGFjNGEzNmU2ZjkxNzJkYTBmY2Y0NGQxNzhmMWM2NDAwODZkZWRkZSAxMDA2NDQKLS0t
IGMvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgdy9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKQEAgLTQ1LDExICs0NSwxMyBAQCBzdHJ1Y3QgRGF0YWJhc2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYsIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAgICAgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
KyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICNlbmRpZiAvLyBEYXRhYmFzZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNfaApkaWZmIC0tZ2l0IGMvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCB3L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggZmMxMThmNTAxNmRlODE3ZjdmODFlNmY3YjRjZjAzYWY5MDg1
MTQ5YS4uMjczNjY1MjVhMTg5NTlkMGQ0ZjNlNzA2YzAxNWRlZTAyYWY3MWUzZiAxMDA2NDQKLS0t
IGMvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgdy9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00NTcsMTUgKzQ1Nywx
NiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MoKQogCiAgICAg
bV9kYXRhYmFzZVByb2Nlc3MgPSBEYXRhYmFzZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOwog
Ci0gICAgQVNTRVJUKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKTsKLQogICAgIC8vICoqKioqKioqKgogICAgIC8vIElNUE9SVEFOVDogRG8g
bm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMg
b24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8
cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoqKioqKioqKgogICAgIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorICAgIEFTU0VSVCghbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpLmlzRW1wdHkoKSk7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7
CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyNlbmRpZgogCiAgICAgbV9kYXRh
YmFzZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzczo6SW5pdGlhbGl6ZURh
dGFiYXNlUHJvY2VzcyhwYXJhbWV0ZXJzKSwgMCk7CiB9CmRpZmYgLS1naXQgYy9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIHcvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmYzMzNmYzOTQwZWY2NzM5NDcyZTA4NmIyYzQ1ZDky
ZDUyZDc0NWZmLi4wMDU5YWUxMzRhODgyZDQzMDNmYmU5ZTI2NTJhMjNhMWJhM2FjODlhIDEwMDY0
NAotLS0gYy9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyB3L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAot
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTEsMTIgKzUxLDE0IEBAIFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bigpCiAKIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCiB7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbio+OjppdGVyYXRvciBjb25uZWN0aW9uSXRlcmF0b3IgPSBtX3dl
YklEQlNlcnZlckNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAg
ICAgICBpZiAoY29ubmVjdGlvbkl0ZXJhdG9yICE9IG1fd2ViSURCU2VydmVyQ29ubmVjdGlvbnMu
ZW5kKCkpCiAgICAgICAgICAgICBjb25uZWN0aW9uSXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZl
V2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KQEAgLTcwLDYgKzcyLDcgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLAogewogfQogCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiB2b2lkIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbjo6cmVnaXN0ZXJXZWJJREJTZXJ2ZXJDb25uZWN0aW9uKFdlYklEQlNlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3dlYklEQlNlcnZlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ubWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSkpOwpA
QCAtODUsNyArODgsOCBAQCB2b2lkIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6cmVt
b3ZlV2ViSURCU2VydmVyQ29ubmVjdGlvbihXZWJJREJTZXJ2ZXJDbwogCiAgICAgbV93ZWJJREJT
ZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5tZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGMvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2Vi
VG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmggdy9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBjMDUxNTg1
YzcwMjc0NzMxM2M1YWZmNTdjNDRmMWZhZWEzN2ViZGJhLi42MWE3Y2E0MTgzZjk5MjQzMmE2YTVj
ZjM4YzA3Mjk5MmVjNzhlZDVkIDEwMDY0NAotLS0gYy9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgdy9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00
OCw4ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKICAgICB2b2lkIHJlZ2lzdGVyV2ViSURCU2VydmVyQ29ubmVjdGlv
bihXZWJJREJTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uKFdlYklEQlNlcnZlckNvbm5lY3Rpb24mKTsKKyNlbmRpZgogCiBwcml2YXRlOgog
ICAgIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIpOwpAQCAtNjcsMTAgKzY5LDEyIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uKj4gbV93ZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykKICNlbmRpZiAvLyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25f
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257252</attachid>
            <date>2015-07-22 00:44:04 -0700</date>
            <delta_ts>2015-09-02 04:59:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146550-20150722094249.patch</filename>
            <type>text/plain</type>
            <size>19264</size>
            <attacher name="Emanuele Aina">emanuele.aina</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTYyZDE3MWU2NjBhYjU4
NTdkNmU3MzZlNjUzYjI2OWMyNjYwZTQ2OS4uNTQxMjNkMzc0Y2VhZWEwNjJjZjI2NGU2Njk1MTc1
YzIzMzc3NzkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA3LTAyICBFbWFu
dWVsZSBBaW5hICA8ZW1hbnVlbGUuYWluYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIEZpeCBi
dWlsZCB3aXRoIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKSBhbmQgIUVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2l2ZW4gdGhhdCBJTkRFWEVEX0RBVEFCQVNFIGF0IHRoZSBtb21lbnQgaXMgdGhlIG9ubHkgdXNl
ciBvZgorICAgICAgICBEQVRBQkFTRV9QUk9DRVNTLCB0aGVpciBndWFyZHMgZ290IGluZXZpdGFi
bHkgbWl4ZWQgdXAgd2l0aCB2YXJpb3VzCisgICAgICAgIGxldmVscyBvZiBjb25zaXN0ZW5jeS4g
U2luY2UgdGhlIC0tbm8taW5kZXhlZC1kYXRhYmFzZSBmbGFnIGZyb20KKyAgICAgICAgYnVpbGQt
d2Via2l0IGxlYXZlcyBEQVRBQkFTRV9QUk9DRVNTIGVuYWJsZWQsIHRoaXMgcmVzdWx0ZWQgaW4g
YnVpbGQKKyAgICAgICAgZmFpbHVyZXMuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0RhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL0RhdGFi
YXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIEFk
ZCBtaXNzaW5nIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSBndWFyZHMgYW5kIG1vdmVkIHRoZQor
ICAgICAgICBtaXNwbGFjZWQgb25lcy4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRh
YmFzZVByb2Nlc3MuaDoKKyAgICAgICAgRGl0dG8sIGFuZCBhbHNvIGFkZCBhIGZvcndhcmQgZGVj
bGFyYXRpb24gZm9yIFNlY3VyaXR5T3JpZ2luRGF0YSBzaW5jZQorICAgICAgICB3aXRoIElOREVY
RURfREFUQUJBU0Ugb2ZmIFNlY3VyaXR5T3JpZ2luRGF0YS5oIGlzIG5vIGxvbmdlciBpbmNsdWRl
ZAorICAgICAgICBieSB3YXkgb2YgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmguCisKIDIw
MTUtMDctMjEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbTWFjXSAiT3BlbiBJbWFnZSBJbiBOZXcgV2luZG93IiBjb250ZXh0
IG1lbnUgaXRlbSBkb2VzIG5vdGhpbmcgb24gYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggNjE2NTNjYWMxNzhk
MzRmYWE0NjlmZjEwNmU1MDU0ZjdkNzc5MDNmMi4uOTJmYzU0NzI4ZDZlZDk0NTIwNmMyNGU1YjE0
NGMyZDg4ZDA5ZWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nl
c3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmUKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogfQogCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vz
czo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lkYkRhdGFi
YXNlcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CkBAIC0xMTQsOSArMTE1LDExIEBAIHZvaWQg
RGF0YWJhc2VQcm9jZXNzOjpyZW1vdmVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJE
YXRhYmFzZSYgZGF0YWJhc2UpCiAKICAgICBtX2lkYkRhdGFiYXNlcy5yZW1vdmUoaWRlbnRpZmll
cik7CiB9CisjZW5kaWYKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRpYWxpemVEYXRhYmFz
ZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIC8vICoqKioqKioqKgog
ICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBm
b3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSBy
ZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoq
KioqKioqKgpAQCAtMTI1LDEyICsxMjgsMTUgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRp
YWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXIKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5pbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgZW5zdXJlSW5kZXhlZERh
dGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKFN0cmluZ0ltcGw6OmVtcHR5KCkpOworI2VuZGlmCiB9
CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpl
bnN1cmVJbmRleGVkRGF0YWJhc2VSZWxhdGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVBhdGgpCiB7CiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGFic29sdXRlSW5kZXhlZERhdGFi
YXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpKSk7CiB9CisjZW5k
aWYKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewpAQCAtMTQwLDEyICsxNDYsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmVu
c3VyZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBtYWtlIGFsbCBkaXJlY3RvcmllcyBmb3IgcGF0aCAnJXMnIiwgcGF0aC51dGY4KCku
ZGF0YSgpKTsKIH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogU3RyaW5nIERhdGFi
YXNlUHJvY2Vzczo6YWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFiYXNlUmVsYXRp
dmVQYXRoKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewogICAgIC8vIEZJWE1FOiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoKSB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCB0byBhcHBlbmQg
aW5kaXZpZHVhbCBhdG9taWMgY29tcG9uZW50cy4KICAgICAvLyBXZSBkb24ndCBoYXZlIGEgZnVu
Y3Rpb24gZGVzaWduZWQgdG8gYXBwZW5kIGEgbXVsdGktY29tcG9uZW50IHN1YnBhdGgsIGJ1dCB3
ZSBzaG91bGQuCiAgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2luZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeSwgcmVsYXRpdmVQYXRoKTsKIH0KKyNlbmRpZgogCiB2b2lkIERhdGFi
YXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0
YXNrKQogewpAQCAtMjI0LDYgKzIzMiw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgdWluCiAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQsIHdlYnNpdGVEYXRhKSwg
MCk7CiAgICAgfSkpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMpIHsKICAg
ICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRo
ZSBzZXNzaW9uIElELgogICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
QXN5bmNUYXNrPihbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7
CkBAIC0yMzYsNiArMjQ1LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoU2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW4KICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KSk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNp
dGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTI2MCw2ICsyNzAsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCB3ZWJzaXRlRGF0YQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2Fs
bGJhY2tJRCksIDApOwogICAgIH0pKTsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJh
c2VzKSB7CiAgICAgICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rh
c2s+KFt0aGlzLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKIApAQCAtMjY3
LDYgKzI3OCw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJD
b3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhCiAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgfSkp
OwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFU
eXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2luRGF0
YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0yOTEsNiArMzAzLDcgQEAgdm9pZCBEYXRhYmFz
ZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHcKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhjYWxsYmFja0lEKSwgMCk7CiAgICAgfSkpOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJE
YXRhYmFzZXMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+IHNlY3VyaXR5T3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9y
aWdpbkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQpAQCAtMzAyLDggKzMxNSwxMCBAQCB2b2lk
IERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNl
c3Npb25JRCwgdWludDY0X3QgdwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0pKTsKICAgICB9CisjZW5kaWYK
IH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IERhdGFiYXNlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lu
cygpCiB7CiAgICAgaWYgKG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTMxOSw3ICszMzQsOSBAQCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
RGF0YWJhc2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKAogCiAgICAgcmV0dXJuIHNl
Y3VyaXR5T3JpZ2luczsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBjbG9zZS9pbnZhbGlk
YXRlIGFueSBsaXZlIGhhbmRsZXMgdG8gdGhlIGRhdGFiYXNlIGZpbGVzIHdlIGFyZSBhYm91dCB0
byBkZWxldGUuCkBAIC0zNzMsNiArMzkwLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0
ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXMKICAg
ICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmllZFNpbmNlKTsKIH0KKyNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgK
aW5kZXggNDdjNjkyNTg2Y2ZmOWQzMGU5Y2Q3MTg2MzQ0Y2I5MzdmMGZlZjY0MC4uZmZhY2RmNmIz
MjI1MzE4MjY5ZWUyNDhjYTg0Yjg1MzA0MTA4YWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFz
ZTsKIAogc3RydWN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKK3N0cnVjdCBT
ZWN1cml0eU9yaWdpbkRhdGE7CiAKIGNsYXNzIERhdGFiYXNlUHJvY2VzcyA6IHB1YmxpYyBDaGls
ZFByb2Nlc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNlUHJvY2Vzcyk7CkBA
IC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRGF0YWJhc2VQcm9jZXNzJiBzaW5n
bGV0b24oKTsKICAgICB+RGF0YWJhc2VQcm9jZXNzKCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKICAgICBSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2U+IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5p
cXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZW5zdXJlSW5kZXhlZERhdGFiYXNlUmVsYXRpdmVQYXRoRXhpc3RzKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBhYnNvbHV0ZUluZGV4ZWREYXRhYmFzZVBhdGhGcm9tRGF0YWJh
c2VSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKIAogICAgIFdvcmtRdWV1ZSYg
cXVldWUoKSB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9CiAKQEAgLTg5LDkgKzkyLDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJz
aXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywg
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gaW5kZXhlZERhdGFiYXNl
T3JpZ2lucygpOwogICAgIHZvaWQgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdp
bnMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAg
dm9pZCBkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworI2VuZGlmCiAKICAg
ICAvLyBGb3IgZXhlY3V0aW9uIG9uIHdvcmsgcXVldWUgdGhyZWFkIG9ubHkKICAgICB2b2lkIHBl
cmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7CkBAIC0xMDEsOSArMTA2LDExIEBAIHByaXZhdGU6CiAK
ICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAgICAgU3RyaW5nIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogCiAgICAgSGFzaE1h
cDxVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIsIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4+
IG1faWRiRGF0YWJhc2VzOworI2VuZGlmCiAKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXN5
bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwogICAgIE11dGV4IG1fZGF0YWJhc2VUYXNrTXV0ZXg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGU3NjQ2NzAxOTk1YjY4Yzg3
ODM2YTNmZjk3MDk1MWYzNzRkOWI2NDMuLjk4OGMzMTgyNDdlZmVkNjZhYWVkMDNkYWIyNjE4YTE4
OTcxMTZkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01OSwzMyAr
NTksMzkgQEAgdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIElEQkNvbm5lY3Rpb25NYXA6Oml0ZXJh
dG9yIGJhY2tlbmRJdGVyYXRvciA9IG1faWRiQ29ubmVjdGlvbnMuZmluZChkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CiAgICAgICAgIGlmIChiYWNrZW5kSXRlcmF0b3IgIT0gbV9pZGJDb25uZWN0
aW9ucy5lbmQoKSkKICAgICAgICAgICAgIGJhY2tlbmRJdGVyYXRvci0+dmFsdWUtPmRpZFJlY2Vp
dmVEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mIHJl
cGx5KQogeworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIElEQkNvbm5lY3Rpb25NYXA6
Oml0ZXJhdG9yIGJhY2tlbmRJdGVyYXRvciA9IG1faWRiQ29ubmVjdGlvbnMuZmluZChkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIGlmIChiYWNrZW5kSXRlcmF0b3IgIT0gbV9pZGJD
b25uZWN0aW9ucy5lbmQoKSkKICAgICAgICAgICAgIGJhY2tlbmRJdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVTeW5jRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiB7CisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAgICAgLy8gVGhlIFdlYlByb2Nlc3MgaGFzIGRpc2Nvbm5lY3RlZCwgY2xv
c2UgYWxsIG9mIHRoZSBjb25uZWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggaXQKICAgICB3aGlsZSAo
IW1faWRiQ29ubmVjdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZW1vdmVEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uKG1faWRiQ29ubmVjdGlvbnMuYmVnaW4oKS0+a2V5KTsKKyNlbmRpZgog
fQogCiB2b2lkIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQpAQCAtOTMsNiAr
OTksNyBAQCB2b2lkIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsCiAKIH0KIAorI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlz
aElEQkNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAg
ICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGlkYkNvbm5lY3Rpb24gPSBE
YXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKTsKQEAgLTEwNiw2ICsxMTMsNyBAQCB2b2lkIERhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6cmVtb3ZlRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbih1aW50NjRf
dAogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBpZGJDb25uZWN0aW9u
ID0gbV9pZGJDb25uZWN0aW9ucy50YWtlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAg
ICBpZGJDb25uZWN0aW9uLT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogfQorI2VuZGlm
CiAKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggMWJhMzk3NjdiN2NhZWQ3MjIzZmFlOTU2ZTcwMTRiNzQ4ZjBiMjIw
Ni4uMmFhZjJjMmQyOTRhY2Y4MmUwNDBhNmQxM2I4ZGZlNTQ0NjZiOWM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKIApAQCAtMzgsMjAgKzM4LDI0IEBAIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6RGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKIAogdm9pZCBE
YXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBlbmNvZGVyIDw8IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNlbmRpZgogfQogCiBib29s
IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJlc3Vs
dCkKIHsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5k
aWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBiMTA0NGZhOTJlODliMjhiNjc5ZGFmOWY0ZjQ3YjBjYzEyOWRjNTNj
Li4wYWM0YTM2ZTZmOTE3MmRhMGZjZjQ0ZDE3OGYxYzY0MDA4NmRlZGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQXJn
dW1lbnREZWNvZGVyOwpAQCAtNDUsMTEgKzQ1LDEzIEBAIHN0cnVjdCBEYXRhYmFzZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVy
JikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwg
RGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKICAgICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQorI2Vu
ZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogI2VuZGlmIC8vIERhdGFiYXNlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAxNTBjZDEyYzNkODUwYThiODM1NjBiNGUxNzQwOGUxYjI2N2MxYmIw
Li5jNjFlZDc5Yzg5MWRjNGM1NTkwNTFlZTc0MjA2ZGY3OTQ0NjdlZTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQ2NSwxNSArNDY1LDE2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2VzcygpCiAKICAgICBtX2Rh
dGFiYXNlUHJvY2VzcyA9IERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CiAKLSAg
ICBBU1NFUlQoIW1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKS5p
c0VtcHR5KCkpOwotCiAgICAgLy8gKioqKioqKioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3Qg
Y2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBk
aXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFy
Oi8vcHJvYmxlbS8xNzQ1NDcxMj4pCiAgICAgLy8gKioqKioqKioqCiAgICAgRGF0YWJhc2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisgICAgQVNTRVJUKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkuaXNFbXB0eSgpKTsKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworI2VuZGlmCiAKICAgICBtX2RhdGFiYXNl
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzOjpJbml0aWFsaXplRGF0YWJh
c2VQcm9jZXNzKHBhcmFtZXRlcnMpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IGZjMzM2ZjM5NDBlZjY3Mzk0NzJlMDg2YjJjNDVkOTJkNTJk
NzQ1ZmYuLjAwNTlhZTEzNGE4ODJkNDMwM2ZiZTllMjY1MmEyM2ExYmEzYWM4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0jaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MSwxMiArNTEsMTQgQEAgV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjp+V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkK
IAogdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rl
cikKIHsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uKj46Oml0ZXJhdG9yIGNvbm5lY3Rpb25JdGVyYXRvciA9IG1fd2ViSURC
U2VydmVyQ29ubmVjdGlvbnMuZmluZChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAg
IGlmIChjb25uZWN0aW9uSXRlcmF0b3IgIT0gbV93ZWJJREJTZXJ2ZXJDb25uZWN0aW9ucy5lbmQo
KSkKICAgICAgICAgICAgIGNvbm5lY3Rpb25JdGVyYXRvci0+dmFsdWUtPmRpZFJlY2VpdmVXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyNlbmRpZgogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQpAQCAtNzAsNiArNzIsNyBAQCB2b2lkIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsCiB7CiB9CiAKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uOjpyZWdpc3RlcldlYklEQlNlcnZlckNvbm5lY3Rpb24oV2ViSURCU2VydmVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fd2ViSURCU2VydmVyQ29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbi5tZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKSk7CkBAIC04
NSw3ICs4OCw4IEBAIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uKFdlYklEQlNlcnZlckNvCiAKICAgICBtX3dlYklEQlNlcnZl
ckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGMwNTE1ODVjNzAy
NzQ3MzEzYzVhZmY1N2M0NGYxZmFlYTM3ZWJkYmEuLjYxYTdjYTQxODNmOTkyNDMyYTZhNWNmMzhj
MDcyOTkyZWM3OGVkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5o
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpZiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ4LDgg
KzQ4LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAorI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogICAgIHZvaWQgcmVnaXN0ZXJXZWJJREJTZXJ2ZXJDb25uZWN0aW9uKFdl
YklEQlNlcnZlckNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHJlbW92ZVdlYklEQlNlcnZlckNvbm5l
Y3Rpb24oV2ViSURCU2VydmVyQ29ubmVjdGlvbiYpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CkBAIC02NywxMCArNjksMTIgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
IEhhc2hNYXA8dWludDY0X3QsIFdlYklEQlNlcnZlckNvbm5lY3Rpb24qPiBtX3dlYklEQlNlcnZl
ckNvbm5lY3Rpb25zOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogI2VuZGlmIC8vIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>