<?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>42834</bug_id>
          
          <creation_ts>2010-07-22 10:05:52 -0700</creation_ts>
          <short_desc>Clients for optional features should be passed to Page constructor via structure of pointers</short_desc>
          <delta_ts>2010-08-06 13:21:41 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39589</blocked>
    
    <blocked>42865</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>jorlow</cc>
    
    <cc>satish</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254863</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-22 10:05:52 -0700</bug_when>
    <thetext>Several of the client arguments to the Page constructor are for optional features, for which most platforms pass 0. The use of a structure of pointers would reduce the number of arguments required. The members of the structure would default to 0, so adding a new optional feature would not require updates to the call sites for platforms not using the feature.

Note that this approach is preferred to a setter for each client, as it avoids the time window where no client is provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255006</commentid>
    <comment_count>1</comment_count>
      <attachid>62346</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-22 15:01:27 -0700</bug_when>
    <thetext>Created attachment 62346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255017</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-22 15:14:39 -0700</bug_when>
    <thetext>This patch moves the following clients from Page constructor arguments to the new OptionalClients structure.
 - ContextMenuClient
 - DragClient
 - InspectorClient
 - GeolocationControllerClient
 - DeviceOrientationClient

It also changes the SpeechInputClient from being set via a setter method to being passed as part of the structure, to avoid there being a period of time where the client is not set.

It seems that some platforms pass null for the PluginHalterClient and BackForwardControllerClient, but these features do not seem to be controlled by an ENABLE flag, so I chose not to count them as optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255020</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-22 15:18:18 -0700</bug_when>
    <thetext>Attachment 62346 did not build on qt:
Build output: http://queues.webkit.org/results/3605223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255036</commentid>
    <comment_count>4</comment_count>
      <attachid>62353</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-22 16:03:40 -0700</bug_when>
    <thetext>Created attachment 62353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255193</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-22 21:08:08 -0700</bug_when>
    <thetext>Attachment 62353 did not build on win:
Build output: http://queues.webkit.org/results/3591378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255272</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-23 02:29:27 -0700</bug_when>
    <thetext> Bug 42635(In reply to comment #4)
&gt; Created an attachment (id=62353) [details]
&gt; Patch

I think this seems like a good approach. 

This certainly feels like it makes things simpler:
&gt; -        Page(ChromeClient*, ContextMenuClient*, EditorClient*, DragClient*, InspectorClient*, PluginHalterClient*, GeolocationControllerClient*, DeviceOrientationClient*, BackForwardControllerClient*);
&gt; +        Page(ChromeClient*, EditorClient*, PluginHalterClient*, BackForwardControllerClient*, const OptionalClients&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256048</commentid>
    <comment_count>7</comment_count>
      <attachid>62576</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 08:18:32 -0700</bug_when>
    <thetext>Created attachment 62576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256049</commentid>
    <comment_count>8</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 08:19:38 -0700</bug_when>
    <thetext>Updated patch to reflect new use of Page::setSpeechClient() in Bug 42367

Still having trouble with the Windows build for unknown reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256054</commentid>
    <comment_count>9</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-26 08:41:14 -0700</bug_when>
    <thetext>I like the idea.

WebCore/page/Page.h:93
 +          // Clients for optional features. If the feature is enabled, a non-null client is required.
IIRC in the webkit-dev thread Darin and Eric suggested not to zero initialize the pointers, and that we should perhaps make sure all the clients are valid when passed in. That is perhaps going to be a much larger change. Are you consciously deciding not to go that route and support null client pointers as it is now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256060</commentid>
    <comment_count>10</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 09:03:34 -0700</bug_when>
    <thetext>&gt; IIRC in the webkit-dev thread Darin and Eric suggested not to zero initialize
&gt; the pointers,
It&apos;s true that Eric suggested this, but to do so would erase come of the benefits of this approach. Without zero initialisation, for every new feature, all ports would have to explicitly set the client, even when setting the client to null when the feature is not enabled.

&gt; and that we should perhaps make sure all the clients are valid
&gt; when passed in.
Sure, that seems like a good idea, but I think it&apos;s independent of this change. Currently, platforms pass many null clients for features that are not enabled. We only require clients to be non-null if the feature is enabled, as mentioned in the comment in Page.h. This patch doesn&apos;t change anything with regard to the need to check that clients for enabled features are non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256125</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-26 11:20:27 -0700</bug_when>
    <thetext>Attachment 62576 did not build on win:
Build output: http://queues.webkit.org/results/3585581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256558</commentid>
    <comment_count>12</comment_count>
      <attachid>62576</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-27 07:13:16 -0700</bug_when>
    <thetext>Comment on attachment 62576
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256563</commentid>
    <comment_count>13</comment_count>
      <attachid>62576</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 07:16:26 -0700</bug_when>
    <thetext>Comment on attachment 62576
Patch

I&apos;m still having problems with the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256641</commentid>
    <comment_count>14</comment_count>
      <attachid>62698</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 09:20:35 -0700</bug_when>
    <thetext>Created attachment 62698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256642</commentid>
    <comment_count>15</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 09:21:20 -0700</bug_when>
    <thetext>Updated patch with missing change to WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257044</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-27 23:39:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This patch moves the following clients from Page constructor arguments to the 
&gt; new OptionalClients structure.

Why not just create a PageClients structure and place all clients in there?  Some of the clients are not needed by Chromium, yet you have not included them in the optional set (e.g., PluginHalterClient and BackForwardControllerClient).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257054</commentid>
    <comment_count>17</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 00:30:39 -0700</bug_when>
    <thetext>&gt; Why not just create a PageClients structure and place all clients in there?  Some of the clients are not
&gt; needed by Chromium, yet you have not included them in the optional set (e.g., PluginHalterClient and
&gt; BackForwardControllerClient).
My reasoning was to use the new OptionalClients structure only for clients for optional features, ie those guarded by an ENABLE flag. In this case, the client must be non-null when the feature is enabled, otherwise it can be null. This keeps the meaning of &apos;optional&apos; very clear.  If a platform does not enable the feature, it can use the default null value from the structure. 

In the case of PluginHalterClient and BackForwardControllerClient, these features are not guarded by ENABLE flags and I&apos;m not sure of the precise conditions under which it&apos;s safe to pass a null client. Keeping them out of the optional set means that platforms must make an explicit decision to pass null, which seems safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257065</commentid>
    <comment_count>18</comment_count>
      <attachid>62802</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 01:37:34 -0700</bug_when>
    <thetext>Created attachment 62802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257067</commentid>
    <comment_count>19</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 01:42:16 -0700</bug_when>
    <thetext>Updated patch in response to fishd&apos;s comments. We now pass all clients through the structure for simplicity. All clients default to null, so attempts to use any uninitialized clients will result in a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257080</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-28 02:28:53 -0700</bug_when>
    <thetext>Attachment 62802 did not build on mac:
Build output: http://queues.webkit.org/results/3628165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257085</commentid>
    <comment_count>21</comment_count>
      <attachid>62802</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-28 03:17:02 -0700</bug_when>
    <thetext>Comment on attachment 62802
Patch

r=me

looks nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257087</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 03:30:49 -0700</bug_when>
    <thetext>Attachment 62802 did not build on chromium:
Build output: http://queues.webkit.org/results/3597522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257121</commentid>
    <comment_count>23</comment_count>
      <attachid>62816</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 05:35:55 -0700</bug_when>
    <thetext>Created attachment 62816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257190</commentid>
    <comment_count>24</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 09:14:32 -0700</bug_when>
    <thetext>Committed r64208: &lt;http://trac.webkit.org/changeset/64208&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62346</attachid>
            <date>2010-07-22 15:01:27 -0700</date>
            <delta_ts>2010-07-22 16:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100722230124.patch</filename>
            <type>text/plain</type>
            <size>21830</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMjIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgIFRoZSBsaXN0IG9m
IGNsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIGlzIGFzIGZvbGxvd3MuCisgICAgICAgIC0g
Q29udGV4dE1lbnVDbGllbnQKKyAgICAgICAgLSBEcmFnQ2xpZW50CisgICAgICAgIC0gSW5zcGVj
dG9yQ2xpZW50CisgICAgICAgIC0gR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50CisgICAgICAg
IC0gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICAgICAgLSBTcGVlY2hJbnB1dENsaWVudAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Ok9wdGlvbmFsQ2xpZW50czo6T3B0aW9uYWxDbGllbnRzKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxMC0wNy0yMiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1zemVnZWQu
aHU+CiAKICAgICAgICAgVXJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
NjM4ODEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MjYs
NyArNTI2LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTRQYWdl
OGdvVG9JdGVtRVBOU18xMUhpc3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUKIF9fWk43V2Vi
Q29yZTRQYWdlOWdvRm9yd2FyZEV2CiBfX1pON1dlYkNvcmU0UGFnZTlpbml0R3JvdXBFdgotX19a
TjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRFUE5TXzE3Q29udGV4dE1lbnVDbGll
bnRFUE5TXzEyRWRpdG9yQ2xpZW50RVBOU18xMERyYWdDbGllbnRFUE5TXzE1SW5zcGVjdG9yQ2xp
ZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnRFUE5TXzIzRGV2aWNlT3JpZW50YXRpb25DbGllbnRFUE5TXzI3QmFja0ZvcndhcmRDb250
cm9sbGVyQ2xpZW50RQorX19aTjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRFUE5T
XzEyRWRpdG9yQ2xpZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdCYWNrRm9yd2Fy
ZENvbnRyb2xsZXJDbGllbnRFUktOUzBfMTVPcHRpb25hbENsaWVudHNFCiBfX1pON1dlYkNvcmU0
UGFnZUQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVjdGlvblNwYWNlCiBfX1pO
N1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBO
U18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdl
YkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDI3ICsxMjMsMjcgQEAg
c3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGZyYW1lc1tpXS0+ZG9j
dW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKLVBhZ2U6OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQs
IENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCwgRWRpdG9yQ2xpZW50KiBlZGl0
b3JDbGllbnQsIERyYWdDbGllbnQqIGRyYWdDbGllbnQsIEluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50LCBQbHVnaW5IYWx0ZXJDbGllbnQqIHBsdWdpbkhhbHRlckNsaWVudCwgR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCwgQmFja0ZvcndhcmRD
b250cm9sbGVyQ2xpZW50KiBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQpCitQYWdlOjpQYWdl
KENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCwg
UGx1Z2luSGFsdGVyQ2xpZW50KiBwbHVnaW5IYWx0ZXJDbGllbnQsIEJhY2tGb3J3YXJkQ29udHJv
bGxlckNsaWVudCogYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LCBjb25zdCBPcHRpb25hbENs
aWVudHMmIG9wdGlvbmFsQ2xpZW50cykKICAgICA6IG1fY2hyb21lKG5ldyBDaHJvbWUodGhpcywg
Y2hyb21lQ2xpZW50KSkKICAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihuZXcgU2VsZWN0aW9u
Q29udHJvbGxlcigwLCB0cnVlKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9k
cmFnQ29udHJvbGxlcihuZXcgRHJhZ0NvbnRyb2xsZXIodGhpcywgZHJhZ0NsaWVudCkpCisgICAg
LCBtX2RyYWdDb250cm9sbGVyKG5ldyBEcmFnQ29udHJvbGxlcih0aGlzLCBvcHRpb25hbENsaWVu
dHMubV9kcmFnQ2xpZW50KSkKICNlbmRpZgogICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobmV3IEZv
Y3VzQ29udHJvbGxlcih0aGlzKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1f
Y29udGV4dE1lbnVDb250cm9sbGVyKG5ldyBDb250ZXh0TWVudUNvbnRyb2xsZXIodGhpcywgY29u
dGV4dE1lbnVDbGllbnQpKQorICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIobmV3IENvbnRl
eHRNZW51Q29udHJvbGxlcih0aGlzLCBvcHRpb25hbENsaWVudHMubV9jb250ZXh0TWVudUNsaWVu
dCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JDb250
cm9sbGVyKG5ldyBJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMsIGluc3BlY3RvckNsaWVudCkpCisg
ICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobmV3IEluc3BlY3RvckNvbnRyb2xsZXIodGhpcywg
b3B0aW9uYWxDbGllbnRzLm1faW5zcGVjdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShD
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihu
ZXcgR2VvbG9jYXRpb25Db250cm9sbGVyKHRoaXMsIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCkpCisgICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRpb25Db250cm9s
bGVyKHRoaXMsIG9wdGlvbmFsQ2xpZW50cy5tX2dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCkp
CiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50
YXRpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHRoaXMsIGRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQo
KSA/IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIodGhpcywgb3B0aW9uYWxDbGllbnRz
Lm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpIDogMCkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KDApCisgICAgLCBtX3NwZWVjaElu
cHV0Q2xpZW50KG9wdGlvbmFsQ2xpZW50cy5tX3NwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCiAg
ICAgLCBtX3NldHRpbmdzKG5ldyBTZXR0aW5ncyh0aGlzKSkKICAgICAsIG1fcHJvZ3Jlc3MobmV3
IFByb2dyZXNzVHJhY2tlcikKQEAgLTE2NywyMCArMTY3LDggQEAgUGFnZTo6UGFnZShDaHJvbWVD
bGllbnQqIGNocm9tZUNsaWVudCwgQwogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtT
aXplKC0xKQogICAgICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiB7Ci0jaWYgIUVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0TWVudUNsaWVudCk7Ci0jZW5kaWYK
LSNpZiAhRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBVTlVTRURfUEFSQU0oZHJhZ0NsaWVudCk7
Ci0jZW5kaWYKLSNpZiAhRU5BQkxFKElOU1BFQ1RPUikKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVj
dG9yQ2xpZW50KTsKLSNlbmRpZgotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KQotICAgIFVOVVNFRF9QQVJBTShnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpOwotI2VuZGlm
Ci0jaWYgIUVOQUJMRShDTElFTlRfREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFVOVVNFRF9QQVJB
TShkZXZpY2VPcmllbnRhdGlvbkNsaWVudCk7CisjaWYgIUVOQUJMRShDT05URVhUX01FTlVTKSAm
JiAhRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgIUVOQUJMRShJTlNQRUNUT1IpICYmICFFTkFCTEUo
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAmJiAhRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikg
JiYgIUVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbmFsQ2xpZW50
cyk7CiAjZW5kaWYKIAogICAgIGlmICghYWxsUGFnZXMpIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNjM4ODEp
CisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCwyNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBz
ZXROZWVkc1JlYXBwbHlTdHlsZXMoKTsKIAotICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENv
bnRleHRNZW51Q2xpZW50KiwgRWRpdG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNs
aWVudCosIFBsdWdpbkhhbHRlckNsaWVudCosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCos
IERldmljZU9yaWVudGF0aW9uQ2xpZW50KiwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50Kik7
CisgICAgICAgIC8vIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzLiBJZiB0aGUgZmVhdHVy
ZSBpcyBlbmFibGVkLCBhIG5vbi1udWxsIGNsaWVudCBpcyByZXF1aXJlZC4KKyAgICAgICAgc3Ry
dWN0IE9wdGlvbmFsQ2xpZW50cyB7CisgICAgICAgICAgICBPcHRpb25hbENsaWVudHMoKQorICAg
ICAgICAgICAgICAgIDogbV9jb250ZXh0TWVudUNsaWVudCgwKQorICAgICAgICAgICAgICAgICwg
bV9kcmFnQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQor
ICAgICAgICAgICAgICAgICwgbV9nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQoMCkKKyAgICAg
ICAgICAgICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQoMCkKKyAgICAgICAgICAgICAg
ICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAg
ICBDb250ZXh0TWVudUNsaWVudCogbV9jb250ZXh0TWVudUNsaWVudDsKKyAgICAgICAgICAgIERy
YWdDbGllbnQqIG1fZHJhZ0NsaWVudDsKKyAgICAgICAgICAgIEluc3BlY3RvckNsaWVudCogbV9p
bnNwZWN0b3JDbGllbnQ7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQq
IG1fZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OworICAgICAgICAgICAgRGV2aWNlT3JpZW50
YXRpb25DbGllbnQqIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CisgICAgICAgICAgICBTcGVl
Y2hJbnB1dENsaWVudCogbV9zcGVlY2hJbnB1dENsaWVudDsKKyAgICAgICAgfTsKKworICAgICAg
ICBQYWdlKENocm9tZUNsaWVudCosIEVkaXRvckNsaWVudCosIFBsdWdpbkhhbHRlckNsaWVudCos
IEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCosIGNvbnN0IE9wdGlvbmFsQ2xpZW50cyYpOwog
ICAgICAgICB+UGFnZSgpOwogCiAgICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07CkBAIC0xNTQsNyArMTczLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICAg
ICB2b2lkIHNldFNwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50KiBjbGllbnQpIHsg
bV9zcGVlY2hJbnB1dENsaWVudCA9IGNsaWVudDsgfQogICAgICAgICBTcGVlY2hJbnB1dENsaWVu
dCogc3BlZWNoSW5wdXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaElucHV0Q2xpZW50
OyB9CiAjZW5kaWYKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV9zZXR0aW5ncy5nZXQoKTsgfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gNjM4ODEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzOCwyNCArMjM4LDI1IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KGJvb2wgYWxsRGF0YVIKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIHN0YXRp
YyBGcmFtZUxvYWRlckNsaWVudCogZHVtbXlGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDsKICAgICAgICAgc3RhdGljIEVkaXRvckNsaWVudCogZHVtbXlFZGl0
b3JDbGllbnQgPSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7CisgICAgICAgIFBhZ2U6Ok9wdGlvbmFs
Q2xpZW50cyBvcHRpb25hbENsaWVudHM7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
ICAgIHN0YXRpYyBDb250ZXh0TWVudUNsaWVudCogZHVtbXlDb250ZXh0TWVudUNsaWVudCA9IG5l
dyBFbXB0eUNvbnRleHRNZW51Q2xpZW50OwotI2Vsc2UKLSAgICAgICAgc3RhdGljIENvbnRleHRN
ZW51Q2xpZW50KiBkdW1teUNvbnRleHRNZW51Q2xpZW50ID0gMDsKKyAgICAgICAgb3B0aW9uYWxD
bGllbnRzLm1fY29udGV4dE1lbnVDbGllbnQgPSBkdW1teUNvbnRleHRNZW51Q2xpZW50OwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAgICAgc3RhdGljIERyYWdDbGllbnQq
IGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdDbGllbnQ7Ci0jZWxzZQotICAgICAgICBz
dGF0aWMgRHJhZ0NsaWVudCogZHVtbXlEcmFnQ2xpZW50ID0gMDsKKyAgICAgICAgb3B0aW9uYWxD
bGllbnRzLm1fZHJhZ0NsaWVudCA9IGR1bW15RHJhZ0NsaWVudDsKICNlbmRpZgogICAgICAgICBz
dGF0aWMgSW5zcGVjdG9yQ2xpZW50KiBkdW1teUluc3BlY3RvckNsaWVudCA9IG5ldyBFbXB0eUlu
c3BlY3RvckNsaWVudDsKKyAgICAgICAgb3B0aW9uYWxDbGllbnRzLm1faW5zcGVjdG9yQ2xpZW50
ID0gZHVtbXlJbnNwZWN0b3JDbGllbnQ7CisgICAgICAgIAogCiAgICAgICAgIG1fY2hyb21lQ2xp
ZW50LnNldChuZXcgU1ZHSW1hZ2VDaHJvbWVDbGllbnQodGhpcykpOwogICAgICAgICAKICAgICAg
ICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1pZ2h0
IGxlYWsgdGhlIHdvcmxkLgogICAgICAgICAvLyBUaGUgY29tbWVudCBzYWlkIHRoYXQgdGhlIENh
Y2hlIGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMKICAgICAgICAgLy8gaG9s
ZGluZyBGcmFtZXMgYW5kIHdvbid0IGtub3cgdG8gYnJlYWsgdGhlIGN5Y2xlLiBCdXQgCi0gICAg
ICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQuZ2V0KCksIGR1bW15Q29udGV4
dE1lbnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5z
cGVjdG9yQ2xpZW50LCAwLCAwLCAwLCAwKSk7CisgICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2Uo
bV9jaHJvbWVDbGllbnQuZ2V0KCksIGR1bW15RWRpdG9yQ2xpZW50LCAwLCAwLCBvcHRpb25hbENs
aWVudHMpKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRNZWRpYUVuYWJsZWQoZmFs
c2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKGZh
bHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQbHVnaW5zRW5hYmxlZChmYWxz
ZSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTIyICBT
dGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJl
cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBw
b2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDI4MzQKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisKIDIwMTAtMDctMjIgIERhcmluIEZpc2hlciAg
PGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4K
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzIsNyArMjcyLDExIEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiAK
ICAgICBpZiAoZGV2VG9vbHNDbGllbnQpCiAgICAgICAgIG1fZGV2VG9vbHNBZ2VudCA9IG5ldyBX
ZWJEZXZUb29sc0FnZW50SW1wbCh0aGlzLCBkZXZUb29sc0NsaWVudCk7CiAKLSAgICBtX3BhZ2Uu
c2V0KG5ldyBQYWdlKCZtX2Nocm9tZUNsaWVudEltcGwsICZtX2NvbnRleHRNZW51Q2xpZW50SW1w
bCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgJm1fZHJhZ0NsaWVudEltcGwsICZtX2luc3BlY3RvckNs
aWVudEltcGwsIDAsIDAsIDAsIDApKTsKKyAgICBQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9u
YWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5tX2NvbnRleHRNZW51Q2xpZW50ID0gJm1f
Y29udGV4dE1lbnVDbGllbnRJbXBsOworICAgIG9wdGlvbmFsQ2xpZW50cy5tX2RyYWdDbGllbnQg
PSAmbV9kcmFnQ2xpZW50SW1wbDsKKyAgICBvcHRpb25hbENsaWVudHMubV9pbnNwZWN0b3JDbGll
bnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOworICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1f
Y2hyb21lQ2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgMCwgMCwgb3B0aW9uYWxDbGll
bnRzKSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJp
b3VzIGNsaWVudHMKIApJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysgV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0yMiAgU3RldmUg
QmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50cyBmb3Igb3B0aW9uYWwgZmVhdHVyZXMgc2hv
dWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODM0
CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKKwogMjAxMC0wNy0xNiAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24u
bW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4
OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDE2ICs1MjUsMTcgQEAgc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90
IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CisKKyAgICBXZWJDb3JlOjpQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRz
OworICAgIG9wdGlvbmFsQ2xpZW50cy5tX2NvbnRleHRNZW51Q2xpZW50ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQqPihuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGll
bnRFZmwoc2QtPnNlbGYpKTsKKyAgICBvcHRpb25hbENsaWVudHMubV9kcmFnQ2xpZW50ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0NsaWVudCo+KG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50RWZs
KTsKKyAgICBvcHRpb25hbENsaWVudHMubV9pbnNwZWN0b3JDbGllbnQgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZs
KTsKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UoCiAgICAgICAgIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNocm9tZUNsaWVudCo+KG5ldyBXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmwo
c2QtPnNlbGYpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVDbGll
bnQqPihuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmwoc2QtPnNlbGYpKSwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6OkVkaXRv
ckNsaWVudEVmbChzZC0+c2VsZikpLAotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
Q2xpZW50Kj4obmV3IFdlYkNvcmU6OkRyYWdDbGllbnRFZmwpLAotICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsKSwKLSAgICAgICAgMCwKICAgICAgICAgMCwKICAgICAgICAgMCwKLSAgICAgICAgMCk7Cisg
ICAgICAgIG9wdGlvbmFsQ2xpZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAgICAg
IENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CiAgICAgICAgIGdvdG8g
ZXJyb3JfcGFnZTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYktpdC9ndGsvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjIgIFN0ZXZlIEJs
b2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3Vs
ZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAor
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2luaXQpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNjM4ODEpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0MSw4ICszMDQxLDExIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFcKIAogICAgIHByaXYtPmltQ29u
dGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7CiAKLSAgICBXZWJLaXQ6Okluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KHdl
YlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21l
Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwg
bmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50
KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAsIDApOworICAgIFBhZ2U6Ok9wdGlv
bmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGllbnRzLm1fY29udGV4
dE1lbnVDbGllbnQgPSBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KTsKKyAg
ICBvcHRpb25hbENsaWVudHMubV9kcmFnQ2xpZW50ID0gbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3
ZWJWaWV3KTsKKyAgICBvcHRpb25hbENsaWVudHMubV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcg
UGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRv
ckNsaWVudCh3ZWJWaWV3KSwgMCwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAgIC8vIFdlIGFs
c28gYWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAg
Ly8gaW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KSW5kZXg6IFdlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2Mzkw
MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMDctMjIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9y
IG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2
aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3Jv
dXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorCiAyMDEwLTA3LTIxICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsMTIgKzY3MiwxNCBA
QCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGRpZE9u
ZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQogCisgICAgUGFnZTo6T3B0aW9uYWxD
bGllbnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25hbENsaWVudHMubV9jb250ZXh0TWVu
dUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKKyAgICBvcHRpb25hbENs
aWVudHMubV9kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQoc2VsZik7CisgICAgb3B0aW9u
YWxDbGllbnRzLm1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxm
KTsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIFdlYkdlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50ID0gbmV3IFdl
Ykdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudChzZWxmKTsKLSNlbHNlCi0gICAgV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSAwOwor
ICAgIG9wdGlvbmFsQ2xpZW50cy5tX2dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQoc2VsZik7CiAjZW5kaWYKLSAgICBfcHJpdmF0
ZS0+cGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZiksIG5ldyBXZWJDb250
ZXh0TWVudUNsaWVudChzZWxmKSwgbmV3IFdlYkVkaXRvckNsaWVudChzZWxmKSwgbmV3IFdlYkRy
YWdDbGllbnQoc2VsZiksIG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZiksIG5ldyBXZWJQbHVn
aW5IYWx0ZXJDbGllbnQoc2VsZiksIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwgMCwgMCk7
CisgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYp
LCBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNl
bGYpLCAwLCBvcHRpb25hbENsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0
YXJ0TWVkaWEoW3NlbGYgd2luZG93XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkt
PnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVyZW5jZXNdIF9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGhdKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNjM5MDApCisrKyBXZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjIgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVz
IHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBv
aW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjgzNAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKwogMjAxMC0wNy0yMiAgSmFtZXkgSGlja3MgIDxqYW1l
eS5oaWNrc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNjM4ODEpCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDEwICsyNzAsMTMg
QEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZwogI2VuZGlmCiAKICAg
ICBjaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQocSk7Ci0gICAgY29udGV4dE1lbnVD
bGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwogICAgIGVkaXRvckNsaWVudCA9IG5l
dyBFZGl0b3JDbGllbnRRdChxKTsKLSAgICBwYWdlID0gbmV3IFBhZ2UoY2hyb21lQ2xpZW50LCBj
b250ZXh0TWVudUNsaWVudCwgZWRpdG9yQ2xpZW50LAotICAgICAgICAgICAgICAgICAgICBuZXcg
RHJhZ0NsaWVudFF0KHEpLCBuZXcgSW5zcGVjdG9yQ2xpZW50UXQocSksIDAsIDAsIDAsIDApOwor
CisgICAgUGFnZTo6T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25h
bENsaWVudHMubV9jb250ZXh0TWVudUNsaWVudCA9IG5ldyBDb250ZXh0TWVudUNsaWVudFF0KCk7
CisgICAgb3B0aW9uYWxDbGllbnRzLm1fZHJhZ0NsaWVudCA9IG5ldyBEcmFnQ2xpZW50UXQocSk7
CisgICAgb3B0aW9uYWxDbGllbnRzLm1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNs
aWVudFF0KHEpOworICAgIHBhZ2UgPSBuZXcgUGFnZShjaHJvbWVDbGllbnQsIGVkaXRvckNsaWVu
dCwgLCAwLCAwLCBvcHRpb25hbENsaWVudHMpOwogCiAgICAgc2V0dGluZ3MgPSBuZXcgUVdlYlNl
dHRpbmdzKHBhZ2UtPnNldHRpbmdzKCkpOwogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjM5MDApCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTA3LTIyICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBvcHRpb25h
bCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVj
dHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMTAtMDctMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDog
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NjMsMTcgKzI1NjMsMTkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojppbml0VwogICAgICAgICBTZXR0aW5nczo6c2V0U2hvdWxkUGFpbnROYXRpdmVDb250
cm9scyhzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKTsKICNlbmRpZgogCisgICAgUGFnZTo6T3B0
aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dF
T0xPQ0FUSU9OKQotICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCogZ2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCh0
aGlzKTsKLSNlbHNlCi0gICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQgPSAwOworICAgIG9wdGlvbmFsQ2xpZW50cy5tX2dlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQo
dGhpcyk7CiAjZW5kaWYKIAogICAgIEJPT0wgdXNlSGlnaFJlc29sdXRpb25UaW1lcjsKICAgICBp
ZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMtPnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
KCZ1c2VIaWdoUmVzb2x1dGlvblRpbWVyKSkpCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRV
c2VIaWdoUmVzb2x1dGlvblRpbWVycyh1c2VIaWdoUmVzb2x1dGlvblRpbWVyKTsKIAotICAgIG1f
cGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyksIG5ldyBXZWJDb250ZXh0
TWVudUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3IFdlYkRyYWdD
bGllbnQodGhpcyksIG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyksIG5ldyBXZWJQbHVnaW5I
YWx0ZXJDbGllbnQodGhpcyksIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwgMCwgMCk7Cisg
ICAgb3B0aW9uYWxDbGllbnRzLm1fY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1l
bnVDbGllbnQodGhpcyk7CisgICAgb3B0aW9uYWxDbGllbnRzLm1fZHJhZ0NsaWVudCA9IG5ldyBX
ZWJEcmFnQ2xpZW50KHRoaXMpOworICAgIG9wdGlvbmFsQ2xpZW50cy5tX2luc3BlY3RvckNsaWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgbV9wYWdlID0gbmV3IFBhZ2Uo
bmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3
IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKSwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAg
IEJTVFIgbG9jYWxTdG9yYWdlUGF0aDsKICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMt
PmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgmbG9jYWxTdG9yYWdlUGF0aCkpKSB7CkluZGV4OiBX
ZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYzOTAwKQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA3LTIyICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
bGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29u
c3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxz
dXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBXZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDExICszMzIsMTYgQEAgYm9vbCB3eFdlYlZpZXc6OkNyZWF0ZSh3eFdp
bmRvdyogcGFyZW50LAogICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogcGFyZW50
RnJhbWUgPSAwOwogCiAgICAgV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3gqIGVkaXRvckNsaWVudCA9
IG5ldyBXZWJDb3JlOjpFZGl0b3JDbGllbnRXeCgpOworCisgICAgV2ViQ29yZTo6UGFnZTo6T3B0
aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25hbENsaWVudHMubV9jb250
ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFd4KCk7CisgICAg
b3B0aW9uYWxDbGllbnRzLm1fZHJhZ0NsaWVudCA9IG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50V3go
KTsKKyAgICBvcHRpb25hbENsaWVudHMubV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50V3goKTsKICAgICBtX2ltcGwtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFn
ZShuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3godGhpcyksIAotICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3goKSwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBlZGl0b3JDbGllbnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdl
YkNvcmU6OkRyYWdDbGllbnRXeCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRXeCgpLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWxDbGllbnRzKTsKICAgICBlZGl0b3JDbGllbnQtPnNldFBhZ2UobV9pbXBs
LT5wYWdlKTsKICAgICAKICAgICBtX21haW5GcmFtZSA9IG5ldyB3eFdlYkZyYW1lKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62353</attachid>
            <date>2010-07-22 16:03:40 -0700</date>
            <delta_ts>2010-07-26 08:18:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100723000337.patch</filename>
            <type>text/plain</type>
            <size>21740</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMjIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgIFRoZSBsaXN0IG9m
IGNsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIGlzIGFzIGZvbGxvd3MuCisgICAgICAgIC0g
Q29udGV4dE1lbnVDbGllbnQKKyAgICAgICAgLSBEcmFnQ2xpZW50CisgICAgICAgIC0gSW5zcGVj
dG9yQ2xpZW50CisgICAgICAgIC0gR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50CisgICAgICAg
IC0gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICAgICAgLSBTcGVlY2hJbnB1dENsaWVudAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Ok9wdGlvbmFsQ2xpZW50czo6T3B0aW9uYWxDbGllbnRzKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxMC0wNy0yMiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1zemVnZWQu
aHU+CiAKICAgICAgICAgVXJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
NjM4ODEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MjYs
NyArNTI2LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTRQYWdl
OGdvVG9JdGVtRVBOU18xMUhpc3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUKIF9fWk43V2Vi
Q29yZTRQYWdlOWdvRm9yd2FyZEV2CiBfX1pON1dlYkNvcmU0UGFnZTlpbml0R3JvdXBFdgotX19a
TjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRFUE5TXzE3Q29udGV4dE1lbnVDbGll
bnRFUE5TXzEyRWRpdG9yQ2xpZW50RVBOU18xMERyYWdDbGllbnRFUE5TXzE1SW5zcGVjdG9yQ2xp
ZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnRFUE5TXzIzRGV2aWNlT3JpZW50YXRpb25DbGllbnRFUE5TXzI3QmFja0ZvcndhcmRDb250
cm9sbGVyQ2xpZW50RQorX19aTjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRFUE5T
XzEyRWRpdG9yQ2xpZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdCYWNrRm9yd2Fy
ZENvbnRyb2xsZXJDbGllbnRFUktOUzBfMTVPcHRpb25hbENsaWVudHNFCiBfX1pON1dlYkNvcmU0
UGFnZUQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVjdGlvblNwYWNlCiBfX1pO
N1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBO
U18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdl
YkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDI3ICsxMjMsMjcgQEAg
c3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGZyYW1lc1tpXS0+ZG9j
dW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKLVBhZ2U6OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQs
IENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCwgRWRpdG9yQ2xpZW50KiBlZGl0
b3JDbGllbnQsIERyYWdDbGllbnQqIGRyYWdDbGllbnQsIEluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50LCBQbHVnaW5IYWx0ZXJDbGllbnQqIHBsdWdpbkhhbHRlckNsaWVudCwgR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCwgQmFja0ZvcndhcmRD
b250cm9sbGVyQ2xpZW50KiBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQpCitQYWdlOjpQYWdl
KENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCwg
UGx1Z2luSGFsdGVyQ2xpZW50KiBwbHVnaW5IYWx0ZXJDbGllbnQsIEJhY2tGb3J3YXJkQ29udHJv
bGxlckNsaWVudCogYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LCBjb25zdCBPcHRpb25hbENs
aWVudHMmIG9wdGlvbmFsQ2xpZW50cykKICAgICA6IG1fY2hyb21lKG5ldyBDaHJvbWUodGhpcywg
Y2hyb21lQ2xpZW50KSkKICAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihuZXcgU2VsZWN0aW9u
Q29udHJvbGxlcigwLCB0cnVlKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9k
cmFnQ29udHJvbGxlcihuZXcgRHJhZ0NvbnRyb2xsZXIodGhpcywgZHJhZ0NsaWVudCkpCisgICAg
LCBtX2RyYWdDb250cm9sbGVyKG5ldyBEcmFnQ29udHJvbGxlcih0aGlzLCBvcHRpb25hbENsaWVu
dHMuZHJhZ0NsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fZm9jdXNDb250cm9sbGVyKG5ldyBGb2N1
c0NvbnRyb2xsZXIodGhpcykpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2Nv
bnRleHRNZW51Q29udHJvbGxlcihuZXcgQ29udGV4dE1lbnVDb250cm9sbGVyKHRoaXMsIGNvbnRl
eHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG5ldyBDb250ZXh0
TWVudUNvbnRyb2xsZXIodGhpcywgb3B0aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50KSkK
ICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xs
ZXIobmV3IEluc3BlY3RvckNvbnRyb2xsZXIodGhpcywgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAs
IG1faW5zcGVjdG9yQ29udHJvbGxlcihuZXcgSW5zcGVjdG9yQ29udHJvbGxlcih0aGlzLCBvcHRp
b25hbENsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2Vv
bG9jYXRpb25Db250cm9sbGVyKHRoaXMsIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCkpCisg
ICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRpb25Db250cm9sbGVyKHRo
aXMsIG9wdGlvbmFsQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpKQogI2VuZGlm
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9uRW5h
YmxlZCgpID8gbmV3IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcih0aGlzLCBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudCkgOiAwKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBuZXcg
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHRoaXMsIG9wdGlvbmFsQ2xpZW50cy5kZXZpY2VP
cmllbnRhdGlvbkNsaWVudCkgOiAwKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
LSAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQo
b3B0aW9uYWxDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCiAgICAgLCBtX3NldHRp
bmdzKG5ldyBTZXR0aW5ncyh0aGlzKSkKICAgICAsIG1fcHJvZ3Jlc3MobmV3IFByb2dyZXNzVHJh
Y2tlcikKQEAgLTE2NywyMCArMTY3LDggQEAgUGFnZTo6UGFnZShDaHJvbWVDbGllbnQqIGNocm9t
ZUNsaWVudCwgQwogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKC0xKQogICAg
ICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiB7Ci0jaWYgIUVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0TWVudUNsaWVudCk7Ci0jZW5kaWYKLSNpZiAhRU5BQkxF
KERSQUdfU1VQUE9SVCkKLSAgICBVTlVTRURfUEFSQU0oZHJhZ0NsaWVudCk7Ci0jZW5kaWYKLSNp
ZiAhRU5BQkxFKElOU1BFQ1RPUikKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yQ2xpZW50KTsK
LSNlbmRpZgotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIFVOVVNF
RF9QQVJBTShnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpOwotI2VuZGlmCi0jaWYgIUVOQUJM
RShDTElFTlRfREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFVOVVNFRF9QQVJBTShkZXZpY2VPcmll
bnRhdGlvbkNsaWVudCk7CisjaWYgIUVOQUJMRShDT05URVhUX01FTlVTKSAmJiAhRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgIUVOQUJMRShJTlNQRUNUT1IpICYmICFFTkFCTEUoQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKSAmJiAhRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgIUVOQUJMRShJ
TlBVVF9TUEVFQ0gpCisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbmFsQ2xpZW50cyk7CiAjZW5kaWYK
IAogICAgIGlmICghYWxsUGFnZXMpIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNjM4ODEpCisrKyBXZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCwyNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzZXROZWVkc1JlYXBw
bHlTdHlsZXMoKTsKIAotICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51Q2xp
ZW50KiwgRWRpdG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCosIFBsdWdp
bkhhbHRlckNsaWVudCosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCosIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50KiwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50Kik7CisgICAgICAgIC8v
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzLiBJZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVk
LCBhIG5vbi1udWxsIGNsaWVudCBpcyByZXF1aXJlZC4KKyAgICAgICAgc3RydWN0IE9wdGlvbmFs
Q2xpZW50cyB7CisgICAgICAgICAgICBPcHRpb25hbENsaWVudHMoKQorICAgICAgICAgICAgICAg
IDogY29udGV4dE1lbnVDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGRyYWdDbGllbnQoMCkK
KyAgICAgICAgICAgICAgICAsIGluc3BlY3RvckNsaWVudCgwKQorICAgICAgICAgICAgICAgICwg
Z2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgwKQorICAgICAgICAgICAgICAgICwgc3BlZWNoSW5wdXRDbGllbnQo
MCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBDb250ZXh0TWVudUNsaWVudCogY29u
dGV4dE1lbnVDbGllbnQ7CisgICAgICAgICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50OworICAg
ICAgICAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQ7CisgICAgICAgICAgICBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudDsK
KyAgICAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNs
aWVudDsKKyAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsK
KyAgICAgICAgfTsKKworICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIEVkaXRvckNsaWVudCos
IFBsdWdpbkhhbHRlckNsaWVudCosIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCosIGNvbnN0
IE9wdGlvbmFsQ2xpZW50cyYpOwogICAgICAgICB+UGFnZSgpOwogCiAgICAgICAgIFJlbmRlclRo
ZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07CkBAIC0xNTQsNyAr
MTczLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIqIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQotICAgICAgICB2b2lkIHNldFNwZWVjaElucHV0Q2xpZW50KFNwZWVjaElu
cHV0Q2xpZW50KiBjbGllbnQpIHsgbV9zcGVlY2hJbnB1dENsaWVudCA9IGNsaWVudDsgfQogICAg
ICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNoSW5wdXRDbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX3NwZWVjaElucHV0Q2xpZW50OyB9CiAjZW5kaWYKICAgICAgICAgU2V0dGluZ3MqIHNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gNjM4ODEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwyNCArMjM4LDI1IEBAIGJvb2wg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVIKICAgICBpZiAoYWxsRGF0YVJlY2Vp
dmVkKSB7CiAgICAgICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCogZHVtbXlGcmFtZUxvYWRl
ckNsaWVudCA9ICBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKICAgICAgICAgc3RhdGljIEVk
aXRvckNsaWVudCogZHVtbXlFZGl0b3JDbGllbnQgPSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7Cisg
ICAgICAgIFBhZ2U6Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCiAgICAgICAgIHN0YXRpYyBDb250ZXh0TWVudUNsaWVudCogZHVtbXlD
b250ZXh0TWVudUNsaWVudCA9IG5ldyBFbXB0eUNvbnRleHRNZW51Q2xpZW50OwotI2Vsc2UKLSAg
ICAgICAgc3RhdGljIENvbnRleHRNZW51Q2xpZW50KiBkdW1teUNvbnRleHRNZW51Q2xpZW50ID0g
MDsKKyAgICAgICAgb3B0aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gZHVtbXlDb250
ZXh0TWVudUNsaWVudDsKICNlbmRpZgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgICAg
IHN0YXRpYyBEcmFnQ2xpZW50KiBkdW1teURyYWdDbGllbnQgPSBuZXcgRW1wdHlEcmFnQ2xpZW50
OwotI2Vsc2UKLSAgICAgICAgc3RhdGljIERyYWdDbGllbnQqIGR1bW15RHJhZ0NsaWVudCA9IDA7
CisgICAgICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gZHVtbXlEcmFnQ2xpZW50Owog
I2VuZGlmCiAgICAgICAgIHN0YXRpYyBJbnNwZWN0b3JDbGllbnQqIGR1bW15SW5zcGVjdG9yQ2xp
ZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAgICAgICBvcHRpb25hbENsaWVudHMu
aW5zcGVjdG9yQ2xpZW50ID0gZHVtbXlJbnNwZWN0b3JDbGllbnQ7CisgICAgICAgIAogCiAgICAg
ICAgIG1fY2hyb21lQ2xpZW50LnNldChuZXcgU1ZHSW1hZ2VDaHJvbWVDbGllbnQodGhpcykpOwog
ICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBp
dHNlbGYsIHdlIG1pZ2h0IGxlYWsgdGhlIHdvcmxkLgogICAgICAgICAvLyBUaGUgY29tbWVudCBz
YWlkIHRoYXQgdGhlIENhY2hlIGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMK
ICAgICAgICAgLy8gaG9sZGluZyBGcmFtZXMgYW5kIHdvbid0IGtub3cgdG8gYnJlYWsgdGhlIGN5
Y2xlLiBCdXQgCi0gICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQuZ2V0
KCksIGR1bW15Q29udGV4dE1lbnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdD
bGllbnQsIGR1bW15SW5zcGVjdG9yQ2xpZW50LCAwLCAwLCAwLCAwKSk7CisgICAgICAgIG1fcGFn
ZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQuZ2V0KCksIGR1bW15RWRpdG9yQ2xpZW50LCAw
LCAwLCBvcHRpb25hbENsaWVudHMpKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRN
ZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFT
Y3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQbHVn
aW5zRW5hYmxlZChmYWxzZSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysg
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDEwLTA3LTIyICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBv
cHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3Igdmlh
IHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisKIDIwMTAtMDctMjIg
IERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW50IFRhbXVyYS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZp
c2lvbiA2Mzg4MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDExIEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChX
ZWJWaWV3Q2xpZW50KiAKICAgICBpZiAoZGV2VG9vbHNDbGllbnQpCiAgICAgICAgIG1fZGV2VG9v
bHNBZ2VudCA9IG5ldyBXZWJEZXZUb29sc0FnZW50SW1wbCh0aGlzLCBkZXZUb29sc0NsaWVudCk7
CiAKLSAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKCZtX2Nocm9tZUNsaWVudEltcGwsICZtX2NvbnRl
eHRNZW51Q2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgJm1fZHJhZ0NsaWVudEltcGws
ICZtX2luc3BlY3RvckNsaWVudEltcGwsIDAsIDAsIDAsIDApKTsKKyAgICBQYWdlOjpPcHRpb25h
bENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5jb250ZXh0TWVu
dUNsaWVudCA9ICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsKKyAgICBvcHRpb25hbENsaWVudHMu
ZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNw
ZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOworICAgIG1fcGFnZS5zZXQobmV3
IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgMCwgMCwgb3B0
aW9uYWxDbGllbnRzKSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9m
IHRoZSB2YXJpb3VzIGNsaWVudHMKIApJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysgV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0y
MiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50cyBmb3Igb3B0aW9uYWwgZmVh
dHVyZXMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUg
b2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyODM0CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKwogMjAxMC0wNy0xNiAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bw
cm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEuCkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDE2ICs1MjUsMTcgQEAgc3Rh
dGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgICAgICBDUklUSUNBTCgi
Y291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CisKKyAgICBXZWJDb3JlOjpQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9u
YWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50Kj4obmV3IFdlYkNvcmU6OkNvbnRleHRN
ZW51Q2xpZW50RWZsKHNkLT5zZWxmKSk7CisgICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnQ2xpZW50Kj4obmV3IFdlYkNvcmU6OkRyYWdDbGll
bnRFZmwpOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsKTsKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UoCiAgICAgICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNocm9tZUNsaWVudCo+KG5ldyBXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmwoc2QtPnNlbGYpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnQqPihuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmwoc2QtPnNlbGYpKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbChzZC0+c2VsZikpLAotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnQ2xpZW50Kj4obmV3IFdlYkNvcmU6OkRyYWdDbGllbnRFZmwpLAotICAgICAgICBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50RWZsKSwKLSAgICAgICAgMCwKICAgICAgICAgMCwKICAgICAgICAgMCwKLSAgICAgICAgMCk7
CisgICAgICAgIG9wdGlvbmFsQ2xpZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAg
ICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CiAgICAgICAgIGdv
dG8gZXJyb3JfcGFnZTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjIgIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNo
b3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjgz
NAorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2luaXQpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNjM4ODEpCisrKyBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0MSw4ICszMDQxLDExIEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFcKIAogICAgIHByaXYtPmlt
Q29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7CiAKLSAgICBXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50
KHdlYlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hy
b21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3
KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xp
ZW50KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAsIDApOworICAgIFBhZ2U6Ok9w
dGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGllbnRzLmNvbnRl
eHRNZW51Q2xpZW50ID0gbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyk7Cisg
ICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdl
YlZpZXcpOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0
OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFn
ZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNs
aWVudCh3ZWJWaWV3KSwgMCwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAgIC8vIFdlIGFsc28g
YWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAgLy8g
aW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzkwMCkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDctMjIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9w
dGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEg
c3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBO
YW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorCiAyMDEwLTA3LTIxICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2Mzg4MSkKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsMTIgKzY3MiwxNCBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGRpZE9uZVRp
bWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQogCisgICAgUGFnZTo6T3B0aW9uYWxDbGll
bnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGll
bnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZik7CisgICAgb3B0aW9uYWxDbGllbnRz
LmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKTsKKyAgICBvcHRpb25hbENsaWVu
dHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICNpZiBF
TkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIFdlYkdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudChzZWxmKTsKLSNlbHNlCi0gICAgV2ViR2VvbG9jYXRpb25Db250
cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSAwOworICAgIG9wdGlv
bmFsQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50KHNlbGYpOwogI2VuZGlmCi0gICAgX3ByaXZhdGUtPnBhZ2UgPSBu
ZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpLCBuZXcgV2ViQ29udGV4dE1lbnVDbGll
bnQoc2VsZiksIG5ldyBXZWJFZGl0b3JDbGllbnQoc2VsZiksIG5ldyBXZWJEcmFnQ2xpZW50KHNl
bGYpLCBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVyQ2xp
ZW50KHNlbGYpLCBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIDAsIDApOworICAgIF9wcml2
YXRlLT5wYWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudChzZWxmKSwgbmV3IFdlYkVk
aXRvckNsaWVudChzZWxmKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudChzZWxmKSwgMCwgb3B0
aW9uYWxDbGllbnRzKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtz
ZWxmIHdpbmRvd10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGgoW1tzZWxmIHByZWZlcmVuY2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoXSk7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTIyICBTdGV2ZSBCbG9jayAg
PHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUg
cGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQ
YWdlUHJpdmF0ZSk6CisKIDIwMTAtMDctMjIgIEphbWV5IEhpY2tzICA8amFtZXkuaGlja3NAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDYzODgxKQorKysgV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCwxMCArMjcwLDEzIEBAIFFXZWJQYWdl
UHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWcKICNlbmRpZgogCiAgICAgY2hyb21lQ2xp
ZW50ID0gbmV3IENocm9tZUNsaWVudFF0KHEpOwotICAgIGNvbnRleHRNZW51Q2xpZW50ID0gbmV3
IENvbnRleHRNZW51Q2xpZW50UXQoKTsKICAgICBlZGl0b3JDbGllbnQgPSBuZXcgRWRpdG9yQ2xp
ZW50UXQocSk7Ci0gICAgcGFnZSA9IG5ldyBQYWdlKGNocm9tZUNsaWVudCwgY29udGV4dE1lbnVD
bGllbnQsIGVkaXRvckNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgbmV3IERyYWdDbGllbnRR
dChxKSwgbmV3IEluc3BlY3RvckNsaWVudFF0KHEpLCAwLCAwLCAwLCAwKTsKKworICAgIFBhZ2U6
Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGllbnRzLmNv
bnRleHRNZW51Q2xpZW50ID0gbmV3IENvbnRleHRNZW51Q2xpZW50UXQoKTsKKyAgICBvcHRpb25h
bENsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBEcmFnQ2xpZW50UXQocSk7CisgICAgb3B0aW9uYWxD
bGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRRdChxKTsKKyAgICBw
YWdlID0gbmV3IFBhZ2UoY2hyb21lQ2xpZW50LCBlZGl0b3JDbGllbnQsIDAsIDAsIG9wdGlvbmFs
Q2xpZW50cyk7CiAKICAgICBzZXR0aW5ncyA9IG5ldyBRV2ViU2V0dGluZ3MocGFnZS0+c2V0dGlu
Z3MoKSk7CiAKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzkwMCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjIgIFN0ZXZlIEJsb2Nr
ICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBi
ZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisg
ICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToK
KwogMjAxMC0wNy0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDYzODgx
KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2MywxNyAr
MjU2MywxOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAgICAg
ICAgIFNldHRpbmdzOjpzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKHNob3VsZFBhaW50TmF0
aXZlQ29udHJvbHMpOwogI2VuZGlmCiAKKyAgICBQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9u
YWxDbGllbnRzOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQg
PSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHRoaXMpOwotI2Vsc2UKLSAgICBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCA9IDA7CisgICAgb3B0aW9uYWxDbGllbnRzLmdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9
IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQodGhpcyk7CiAjZW5kaWYKIAogICAg
IEJPT0wgdXNlSGlnaFJlc29sdXRpb25UaW1lcjsKICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVy
ZW5jZXMtPnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCZ1c2VIaWdoUmVzb2x1dGlvblRp
bWVyKSkpCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVy
cyh1c2VIaWdoUmVzb2x1dGlvblRpbWVyKTsKIAotICAgIG1fcGFnZSA9IG5ldyBQYWdlKG5ldyBX
ZWJDaHJvbWVDbGllbnQodGhpcyksIG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKSwgbmV3
IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3IFdlYkRyYWdDbGllbnQodGhpcyksIG5ldyBXZWJJ
bnNwZWN0b3JDbGllbnQodGhpcyksIG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQodGhpcyksIGdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwgMCwgMCk7CisgICAgb3B0aW9uYWxDbGllbnRzLmNv
bnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOworICAgIG9w
dGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CisgICAg
b3B0aW9uYWxDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQo
dGhpcyk7CisgICAgbV9wYWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwg
bmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlz
KSwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAgIEJTVFIgbG9jYWxTdG9yYWdlUGF0aDsKICAg
ICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMtPmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgm
bG9jYWxTdG9yYWdlUGF0aCkpKSB7CkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAwKQorKysgV2ViS2l0L3d4
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTIyICBT
dGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJl
cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBw
b2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDI4MzQKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAod3hXZWJWaWV3OjpDcmVh
dGUpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvd3gvV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2Mzg4MSkKKysr
IFdlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDExICszMzIsMTYg
QEAgYm9vbCB3eFdlYlZpZXc6OkNyZWF0ZSh3eFdpbmRvdyogcGFyZW50LAogICAgIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCogcGFyZW50RnJhbWUgPSAwOwogCiAgICAgV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3gqIGVkaXRvckNsaWVudCA9IG5ldyBXZWJDb3JlOjpFZGl0b3JDbGllbnRX
eCgpOworCisgICAgV2ViQ29yZTo6UGFnZTo6T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50
czsKKyAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29yZTo6
Q29udGV4dE1lbnVDbGllbnRXeCgpOworICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0g
bmV3IFdlYkNvcmU6OkRyYWdDbGllbnRXeCgpOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0
b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3goKTsKICAgICBtX2ltcGwt
PnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3godGhp
cyksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50V3goKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JDbGllbnQsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFdlYkNvcmU6OkRyYWdDbGllbnRXeCgpLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeCgpLCAwLCAwLCAw
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxDbGllbnRzKTsKICAgICBlZGl0
b3JDbGllbnQtPnNldFBhZ2UobV9pbXBsLT5wYWdlKTsKICAgICAKICAgICBtX21haW5GcmFtZSA9
IG5ldyB3eFdlYkZyYW1lKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62576</attachid>
            <date>2010-07-26 08:18:32 -0700</date>
            <delta_ts>2010-07-27 09:20:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100726161829.patch</filename>
            <type>text/plain</type>
            <size>22109</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDA0MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgIFRoZSBsaXN0IG9m
IGNsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIGlzIGFzIGZvbGxvd3MuCisgICAgICAgIC0g
Q29udGV4dE1lbnVDbGllbnQKKyAgICAgICAgLSBEcmFnQ2xpZW50CisgICAgICAgIC0gSW5zcGVj
dG9yQ2xpZW50CisgICAgICAgIC0gR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50CisgICAgICAg
IC0gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICAgICAgLSBTcGVlY2hJbnB1dENsaWVudAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Ok9wdGlvbmFsQ2xpZW50czo6T3B0aW9uYWxDbGllbnRzKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxMC0wNy0yNiAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiA2NDA0MykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTU2Myw3ICs1NjMsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTZnb0JhY2tFdgogX19aTjdXZWJDb3Jl
NFBhZ2U4Z29Ub0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FTlNfMTNGcmFtZUxvYWRUeXBlRQogX19a
TjdXZWJDb3JlNFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWluaXRHcm91cEV2
Ci1fX1pON1dlYkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVudEVQTlNfMTdDb250ZXh0TWVu
dUNsaWVudEVQTlNfMTJFZGl0b3JDbGllbnRFUE5TXzEwRHJhZ0NsaWVudEVQTlNfMTVJbnNwZWN0
b3JDbGllbnRFUE5TXzE4UGx1Z2luSGFsdGVyQ2xpZW50RVBOU18yN0dlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudEVQTlNfMjNEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVQTlNfMjdCYWNrRm9yd2Fy
ZENvbnRyb2xsZXJDbGllbnRFCitfX1pON1dlYkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVu
dEVQTlNfMTJFZGl0b3JDbGllbnRFUE5TXzE4UGx1Z2luSGFsdGVyQ2xpZW50RVBOU18yN0JhY2tG
b3J3YXJkQ29udHJvbGxlckNsaWVudEVSS05TMF8xNU9wdGlvbmFsQ2xpZW50c0UKIF9fWk43V2Vi
Q29yZTRQYWdlRDFFdgogX19aTjdXZWJDb3JlNGNvcmVFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UK
IF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkUKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDY0MDQzKQor
KysgV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMjcgKzEyMywy
NyBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZnJhbWVzW2ld
LT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAotUGFnZTo6UGFnZShDaHJvbWVDbGllbnQqIGNocm9tZUNs
aWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBFZGl0b3JDbGllbnQq
IGVkaXRvckNsaWVudCwgRHJhZ0NsaWVudCogZHJhZ0NsaWVudCwgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDbGllbnQsIFBsdWdpbkhhbHRlckNsaWVudCogcGx1Z2luSGFsdGVyQ2xpZW50LCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50LCBCYWNrRm9y
d2FyZENvbnRyb2xsZXJDbGllbnQqIGJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCkKK1BhZ2U6
OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIEVkaXRvckNsaWVudCogZWRpdG9yQ2xp
ZW50LCBQbHVnaW5IYWx0ZXJDbGllbnQqIHBsdWdpbkhhbHRlckNsaWVudCwgQmFja0ZvcndhcmRD
b250cm9sbGVyQ2xpZW50KiBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQsIGNvbnN0IE9wdGlv
bmFsQ2xpZW50cyYgb3B0aW9uYWxDbGllbnRzKQogICAgIDogbV9jaHJvbWUobmV3IENocm9tZSh0
aGlzLCBjaHJvbWVDbGllbnQpKQogICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG5ldyBTZWxl
Y3Rpb25Db250cm9sbGVyKDAsIHRydWUpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
LCBtX2RyYWdDb250cm9sbGVyKG5ldyBEcmFnQ29udHJvbGxlcih0aGlzLCBkcmFnQ2xpZW50KSkK
KyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobmV3IERyYWdDb250cm9sbGVyKHRoaXMsIG9wdGlvbmFs
Q2xpZW50cy5kcmFnQ2xpZW50KSkKICNlbmRpZgogICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobmV3
IEZvY3VzQ29udHJvbGxlcih0aGlzKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAs
IG1fY29udGV4dE1lbnVDb250cm9sbGVyKG5ldyBDb250ZXh0TWVudUNvbnRyb2xsZXIodGhpcywg
Y29udGV4dE1lbnVDbGllbnQpKQorICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIobmV3IENv
bnRleHRNZW51Q29udHJvbGxlcih0aGlzLCBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGll
bnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yQ29u
dHJvbGxlcihuZXcgSW5zcGVjdG9yQ29udHJvbGxlcih0aGlzLCBpbnNwZWN0b3JDbGllbnQpKQor
ICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG5ldyBJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMs
IG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKENM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAsIG1fZ2VvbG9jYXRpb25Db250cm9sbGVyKG5l
dyBHZW9sb2NhdGlvbkNvbnRyb2xsZXIodGhpcywgZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
KSkKKyAgICAsIG1fZ2VvbG9jYXRpb25Db250cm9sbGVyKG5ldyBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIodGhpcywgb3B0aW9uYWxDbGllbnRzLmdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCkpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRp
b25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHRoaXMsIGRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSA/
IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIodGhpcywgb3B0aW9uYWxDbGllbnRzLmRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudCgwKQorICAgICwgbV9zcGVlY2hJbnB1dENs
aWVudChvcHRpb25hbENsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQpCiAjZW5kaWYKICAgICAsIG1f
c2V0dGluZ3MobmV3IFNldHRpbmdzKHRoaXMpKQogICAgICwgbV9wcm9ncmVzcyhuZXcgUHJvZ3Jl
c3NUcmFja2VyKQpAQCAtMTY3LDIwICsxNjcsOCBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCog
Y2hyb21lQ2xpZW50LCBDCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEp
CiAgICAgLCBtX2NhblN0YXJ0TWVkaWEodHJ1ZSkKIHsKLSNpZiAhRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRNZW51Q2xpZW50KTsKLSNlbmRpZgotI2lmICFF
TkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFVOVVNFRF9QQVJBTShkcmFnQ2xpZW50KTsKLSNlbmRp
ZgotI2lmICFFTkFCTEUoSU5TUEVDVE9SKQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JDbGll
bnQpOwotI2VuZGlmCi0jaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAg
VU5VU0VEX1BBUkFNKGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCk7Ci0jZW5kaWYKLSNpZiAh
RU5BQkxFKENMSUVOVF9ERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgVU5VU0VEX1BBUkFNKGRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KTsKKyNpZiAhRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmICFFTkFC
TEUoRFJBR19TVVBQT1JUKSAmJiAhRU5BQkxFKElOU1BFQ1RPUikgJiYgIUVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pICYmICFFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiAhRU5B
QkxFKElOUFVUX1NQRUVDSCkKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9uYWxDbGllbnRzKTsKICNl
bmRpZgogCiAgICAgaWYgKCFhbGxQYWdlcykgewpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiA2NDA0MykKKysrIFdl
YkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDI2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE5lZWRz
UmVhcHBseVN0eWxlcygpOwogCi0gICAgICAgIFBhZ2UoQ2hyb21lQ2xpZW50KiwgQ29udGV4dE1l
bnVDbGllbnQqLCBFZGl0b3JDbGllbnQqLCBEcmFnQ2xpZW50KiwgSW5zcGVjdG9yQ2xpZW50Kiwg
UGx1Z2luSGFsdGVyQ2xpZW50KiwgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiwgRGV2aWNl
T3JpZW50YXRpb25DbGllbnQqLCBCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQqKTsKKyAgICAg
ICAgLy8gQ2xpZW50cyBmb3Igb3B0aW9uYWwgZmVhdHVyZXMuIElmIHRoZSBmZWF0dXJlIGlzIGVu
YWJsZWQsIGEgbm9uLW51bGwgY2xpZW50IGlzIHJlcXVpcmVkLgorICAgICAgICBzdHJ1Y3QgT3B0
aW9uYWxDbGllbnRzIHsKKyAgICAgICAgICAgIE9wdGlvbmFsQ2xpZW50cygpCisgICAgICAgICAg
ICAgICAgOiBjb250ZXh0TWVudUNsaWVudCgwKQorICAgICAgICAgICAgICAgICwgZHJhZ0NsaWVu
dCgwKQorICAgICAgICAgICAgICAgICwgaW5zcGVjdG9yQ2xpZW50KDApCisgICAgICAgICAgICAg
ICAgLCBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBzcGVlY2hJbnB1dENs
aWVudCgwKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIENvbnRleHRNZW51Q2xpZW50
KiBjb250ZXh0TWVudUNsaWVudDsKKyAgICAgICAgICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQ7
CisgICAgICAgICAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudDsKKyAgICAgICAg
ICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50OworICAgICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0
aW9uQ2xpZW50OworICAgICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xp
ZW50OworICAgICAgICB9OworCisgICAgICAgIFBhZ2UoQ2hyb21lQ2xpZW50KiwgRWRpdG9yQ2xp
ZW50KiwgUGx1Z2luSGFsdGVyQ2xpZW50KiwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50Kiwg
Y29uc3QgT3B0aW9uYWxDbGllbnRzJik7CiAgICAgICAgIH5QYWdlKCk7CiAKICAgICAgICAgUmVu
ZGVyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZS5nZXQoKTsgfTsKQEAgLTE1
NCw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlciogZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgICAgIHZvaWQgc2V0U3BlZWNoSW5wdXRDbGllbnQoU3Bl
ZWNoSW5wdXRDbGllbnQqIGNsaWVudCkgeyBtX3NwZWVjaElucHV0Q2xpZW50ID0gY2xpZW50OyB9
CiAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlZWNoSW5wdXRDbGllbnQ7IH0KICNlbmRpZgogICAgICAgICBTZXR0aW5ncyog
c2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA2NDA0MykKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI0ICsyMzgsMjUgQEAg
Ym9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgIGlmIChhbGxEYXRh
UmVjZWl2ZWQpIHsKICAgICAgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBkdW1teUZyYW1l
TG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OwogICAgICAgICBzdGF0
aWMgRWRpdG9yQ2xpZW50KiBkdW1teUVkaXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVu
dDsKKyAgICAgICAgUGFnZTo6T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgc3RhdGljIENvbnRleHRNZW51Q2xpZW50KiBk
dW1teUNvbnRleHRNZW51Q2xpZW50ID0gbmV3IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ7Ci0jZWxz
ZQotICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1lbnVDbGll
bnQgPSAwOworICAgICAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBkdW1t
eUNvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICAgICAgc3RhdGljIERyYWdDbGllbnQqIGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdD
bGllbnQ7Ci0jZWxzZQotICAgICAgICBzdGF0aWMgRHJhZ0NsaWVudCogZHVtbXlEcmFnQ2xpZW50
ID0gMDsKKyAgICAgICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQgPSBkdW1teURyYWdDbGll
bnQ7CiAjZW5kaWYKICAgICAgICAgc3RhdGljIEluc3BlY3RvckNsaWVudCogZHVtbXlJbnNwZWN0
b3JDbGllbnQgPSBuZXcgRW1wdHlJbnNwZWN0b3JDbGllbnQ7CisgICAgICAgIG9wdGlvbmFsQ2xp
ZW50cy5pbnNwZWN0b3JDbGllbnQgPSBkdW1teUluc3BlY3RvckNsaWVudDsKKyAgICAgICAgCiAK
ICAgICAgICAgbV9jaHJvbWVDbGllbnQuc2V0KG5ldyBTVkdJbWFnZUNocm9tZUNsaWVudCh0aGlz
KSk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2Fk
aW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCiAgICAgICAgIC8vIFRoZSBjb21t
ZW50IHNhaWQgdGhhdCB0aGUgQ2FjaGUgY29kZSBkb2VzIG5vdCBrbm93IGFib3V0IENhY2hlZElt
YWdlcwogICAgICAgICAvLyBob2xkaW5nIEZyYW1lcyBhbmQgd29uJ3Qga25vdyB0byBicmVhayB0
aGUgY3ljbGUuIEJ1dCAKLSAgICAgICAgbV9wYWdlLnNldChuZXcgUGFnZShtX2Nocm9tZUNsaWVu
dC5nZXQoKSwgZHVtbXlDb250ZXh0TWVudUNsaWVudCwgZHVtbXlFZGl0b3JDbGllbnQsIGR1bW15
RHJhZ0NsaWVudCwgZHVtbXlJbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAsIDApKTsKKyAgICAgICAg
bV9wYWdlLnNldChuZXcgUGFnZShtX2Nocm9tZUNsaWVudC5nZXQoKSwgZHVtbXlFZGl0b3JDbGll
bnQsIDAsIDAsIG9wdGlvbmFsQ2xpZW50cykpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkt
PnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0
SmF2YVNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNl
dFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjQwNDMp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMg
Zm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3Rv
ciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKwogMjAxMC0w
Ny0yNiAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAJKHJldmlzaW9uIDY0MDQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSwxNSArMjc1LDE5IEBAIFdlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbChXZWJWaWV3Q2xpZW50KiAKICAgICBpZiAoZGV2VG9vbHNDbGllbnQpCiAgICAgICAg
IG1fZGV2VG9vbHNBZ2VudCA9IG5ldyBXZWJEZXZUb29sc0FnZW50SW1wbCh0aGlzLCBkZXZUb29s
c0NsaWVudCk7CiAKLSAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKCZtX2Nocm9tZUNsaWVudEltcGws
ICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgJm1fZHJhZ0Ns
aWVudEltcGwsICZtX2luc3BlY3RvckNsaWVudEltcGwsIDAsIDAsIDAsIDApKTsKKyAgICBQYWdl
OjpPcHRpb25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5j
b250ZXh0TWVudUNsaWVudCA9ICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsKKyAgICBvcHRpb25h
bENsaWVudHMuZHJhZ0NsaWVudCA9ICZtX2RyYWdDbGllbnRJbXBsOworICAgIG9wdGlvbmFsQ2xp
ZW50cy5pbnNwZWN0b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOworI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCisgICAgb3B0aW9uYWxDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0g
Jm1fc3BlZWNoSW5wdXRDbGllbnQ7CisjZW5kaWYKKyAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKCZt
X2Nocm9tZUNsaWVudEltcGwsICZtX2VkaXRvckNsaWVudEltcGwsIDAsIDAsIG9wdGlvbmFsQ2xp
ZW50cykpOwogCiAgICAgLy8gdGhlIHBhZ2Ugd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgdmFy
aW91cyBjbGllbnRzCiAKICAgICBtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRDbGllbnQo
Jm1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCk7CiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUo
cGFnZUdyb3VwTmFtZSk7Ci0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBtX3BhZ2UtPnNl
dFNwZWVjaElucHV0Q2xpZW50KCZtX3NwZWVjaElucHV0Q2xpZW50KTsKLSNlbmRpZgogCiAgICAg
bV9pbnNwZWN0b3JTZXR0aW5nc01hcC5zZXQobmV3IFNldHRpbmdzTWFwKTsKIH0KSW5kZXg6IFdl
YktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2NDA0MykKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTAtMDctMjMgIFJh
ZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkocmV2aXNpb24g
NjQwNDMpCisrKyBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyOSwxNiArNTI5LDE3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d18KICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19Qcml2YXRl
X0RhdGEiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgV2ViQ29yZTo6UGFnZTo6
T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25hbENsaWVudHMuY29u
dGV4dE1lbnVDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCo+
KG5ldyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEVmbChzZC0+c2VsZikpOworICAgIG9wdGlv
bmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0NsaWVudCo+
KG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50RWZsKTsKKyAgICBvcHRpb25hbENsaWVudHMuaW5zcGVj
dG9yQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3IFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudEVmbCk7CiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3Jl
OjpQYWdlKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaHJvbWVDbGllbnQqPihuZXcg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsKHNkLT5zZWxmKSksCi0gICAgICAgIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50Kj4obmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50RWZsKHNkLT5zZWxmKSksCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkVkaXRvckNs
aWVudCo+KG5ldyBXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmwoc2QtPnNlbGYpKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0NsaWVudCo+KG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50
RWZsKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3
IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbCksCi0gICAgICAgIDAsCiAgICAgICAgIDAsCiAg
ICAgICAgIDAsCi0gICAgICAgIDApOworICAgICAgICBvcHRpb25hbENsaWVudHMpOwogICAgIGlm
ICghcHJpdi0+cGFnZSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJL
aXQgUGFnZSIpOwogICAgICAgICBnb3RvIGVycm9yX3BhZ2U7CkluZGV4OiBXZWJLaXQvZ3RrL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNjQw
NDMpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZv
ciBvcHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3Ig
dmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKwogMjAxMC0wNy0xNiAgWmhl
IFN1ICA8c3V6aGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDY0MDQz
KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwNDEsOCArMzA0MSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChX
ZWJLaXRXCiAKICAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygp
OwogCi0gICAgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IG5ldyBX
ZWJLaXQ6Okluc3BlY3RvckNsaWVudCh3ZWJWaWV3KTsKLSAgICBwcml2LT5jb3JlUGFnZSA9IG5l
dyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29u
dGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3
KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3KSwgaW5zcGVjdG9yQ2xpZW50LCAwLCAw
LCAwLCAwKTsKKyAgICBQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAg
IG9wdGlvbmFsQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNvbnRleHRN
ZW51Q2xpZW50KHdlYlZpZXcpOworICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3
IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3KTsKKyAgICBvcHRpb25hbENsaWVudHMuaW5zcGVj
dG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZpZXcpOworICAgIHBy
aXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcp
LCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIDAsIDAsIG9wdGlvbmFsQ2xpZW50
cyk7CiAKICAgICAvLyBXZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3Zp
ZGUgdGhlIHB1YmxpYwogICAgIC8vIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjQwNDMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxv
Y2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDbGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRv
IFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTp1c2VzRG9jdW1lbnRWaWV3czpdKToKKwogMjAxMC0w
Ny0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDY0
MDQzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY3MiwxMiArNjcyLDE0IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1l
TmEKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAKKyAg
ICBQYWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xp
ZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsK
KyAgICBvcHRpb25hbENsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYp
OworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9y
Q2xpZW50KHNlbGYpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAg
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHNlbGYpOwotI2Vsc2UKLSAg
ICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudCA9IDA7CisgICAgb3B0aW9uYWxDbGllbnRzLmdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQoc2VsZik7CiAjZW5kaWYKLSAg
ICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZiksIG5l
dyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKSwgbmV3IFdlYkVkaXRvckNsaWVudChzZWxmKSwg
bmV3IFdlYkRyYWdDbGllbnQoc2VsZiksIG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZiksIG5l
dyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoc2VsZiksIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCwgMCwgMCk7CisgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xp
ZW50KHNlbGYpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVy
Q2xpZW50KHNlbGYpLCAwLCBvcHRpb25hbENsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldENhblN0YXJ0TWVkaWEoW3NlbGYgd2luZG93XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCktPnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVyZW5jZXNd
IF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNjQwNDMpCisrKyBX
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFs
IGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0
dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjgzNAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKwogMjAwOS0xMC0zMCAgVG9yIEFybmUg
VmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNp
b24gNjQwNDMpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcwLDEwICsyNzAsMTMgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdl
YlBhZwogI2VuZGlmCiAKICAgICBjaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQocSk7
Ci0gICAgY29udGV4dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwogICAg
IGVkaXRvckNsaWVudCA9IG5ldyBFZGl0b3JDbGllbnRRdChxKTsKLSAgICBwYWdlID0gbmV3IFBh
Z2UoY2hyb21lQ2xpZW50LCBjb250ZXh0TWVudUNsaWVudCwgZWRpdG9yQ2xpZW50LAotICAgICAg
ICAgICAgICAgICAgICBuZXcgRHJhZ0NsaWVudFF0KHEpLCBuZXcgSW5zcGVjdG9yQ2xpZW50UXQo
cSksIDAsIDAsIDAsIDApOworCisgICAgUGFnZTo6T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xp
ZW50czsKKyAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4
dE1lbnVDbGllbnRRdCgpOworICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IERy
YWdDbGllbnRRdChxKTsKKyAgICBvcHRpb25hbENsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3
IEluc3BlY3RvckNsaWVudFF0KHEpOworICAgIHBhZ2UgPSBuZXcgUGFnZShjaHJvbWVDbGllbnQs
IGVkaXRvckNsaWVudCwgMCwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAgIHNldHRpbmdzID0g
bmV3IFFXZWJTZXR0aW5ncyhwYWdlLT5zZXR0aW5ncygpKTsKIApJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0
MDQzKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50cyBm
b3Igb3B0aW9uYWwgZmVhdHVyZXMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9y
IHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODM0CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgorCiAyMDEwLTA3LTIyICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDY0MDQzKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU2MywxNyArMjU2MywxOSBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OmluaXRXCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRQYWludE5h
dGl2ZUNvbnRyb2xzKHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpOwogI2VuZGlmCiAKKyAgICBQ
YWdlOjpPcHRpb25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRzOwogI2lmIEVOQUJMRShDTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pCi0gICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBn
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50KHRoaXMpOwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQq
IGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IDA7CisgICAgb3B0aW9uYWxDbGllbnRzLmdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQodGhpcyk7CiAjZW5kaWYKIAogICAgIEJPT0wgdXNlSGlnaFJlc29sdXRpb25UaW1lcjsK
ICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMtPnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9u
VGltZXJzKCZ1c2VIaWdoUmVzb2x1dGlvblRpbWVyKSkpCiAgICAgICAgIFNldHRpbmdzOjpzZXRT
aG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyh1c2VIaWdoUmVzb2x1dGlvblRpbWVyKTsKIAot
ICAgIG1fcGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyksIG5ldyBXZWJD
b250ZXh0TWVudUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3IFdl
YkRyYWdDbGllbnQodGhpcyksIG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyksIG5ldyBXZWJQ
bHVnaW5IYWx0ZXJDbGllbnQodGhpcyksIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwgMCwg
MCk7CisgICAgb3B0aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRl
eHRNZW51Q2xpZW50KHRoaXMpOworICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3
IFdlYkRyYWdDbGllbnQodGhpcyk7CisgICAgb3B0aW9uYWxDbGllbnRzLmluc3BlY3RvckNsaWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgbV9wYWdlID0gbmV3IFBhZ2Uo
bmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNsaWVudCh0aGlzKSwgbmV3
IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKSwgMCwgb3B0aW9uYWxDbGllbnRzKTsKIAogICAg
IEJTVFIgbG9jYWxTdG9yYWdlUGF0aDsKICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMt
PmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgmbG9jYWxTdG9yYWdlUGF0aCkpKSB7CkluZGV4OiBX
ZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDY0MDQzKQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
bGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29u
c3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxz
dXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBXZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA2NDA0MykKKysrIFdlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDExICszMzIsMTYgQEAgYm9vbCB3eFdlYlZpZXc6OkNyZWF0ZSh3eFdp
bmRvdyogcGFyZW50LAogICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogcGFyZW50
RnJhbWUgPSAwOwogCiAgICAgV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3gqIGVkaXRvckNsaWVudCA9
IG5ldyBXZWJDb3JlOjpFZGl0b3JDbGllbnRXeCgpOworCisgICAgV2ViQ29yZTo6UGFnZTo6T3B0
aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsKKyAgICBvcHRpb25hbENsaWVudHMuY29udGV4
dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRXeCgpOworICAgIG9w
dGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRyYWdDbGllbnRXeCgpOwor
ICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50V3goKTsKICAgICBtX2ltcGwtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShuZXcg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50V3godGhpcyksIAotICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3goKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBlZGl0b3JDbGllbnQsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYkNvcmU6
OkRyYWdDbGllbnRXeCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRXeCgpLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9uYWxDbGllbnRzKTsKICAgICBlZGl0b3JDbGllbnQtPnNldFBhZ2UobV9pbXBsLT5wYWdl
KTsKICAgICAKICAgICBtX21haW5GcmFtZSA9IG5ldyB3eFdlYkZyYW1lKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62698</attachid>
            <date>2010-07-27 09:20:35 -0700</date>
            <delta_ts>2010-07-28 01:37:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100727172033.patch</filename>
            <type>text/plain</type>
            <size>24100</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgIFRoZSBsaXN0IG9m
IGNsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIGlzIGFzIGZvbGxvd3MuCisgICAgICAgIC0g
Q29udGV4dE1lbnVDbGllbnQKKyAgICAgICAgLSBEcmFnQ2xpZW50CisgICAgICAgIC0gSW5zcGVj
dG9yQ2xpZW50CisgICAgICAgIC0gR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50CisgICAgICAg
IC0gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICAgICAgLSBTcGVlY2hJbnB1dENsaWVudAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Ok9wdGlvbmFsQ2xpZW50czo6T3B0aW9uYWxDbGllbnRzKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxMC0wNy0yNyAgUHJhbmF2IEtlZGlhICA8cHJhbmF2a0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gNjQxMzApCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01
NjUsNyArNTY1LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTRQ
YWdlOGdvVG9JdGVtRVBOU18xMUhpc3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUKIF9fWk43
V2ViQ29yZTRQYWdlOWdvRm9yd2FyZEV2CiBfX1pON1dlYkNvcmU0UGFnZTlpbml0R3JvdXBFdgot
X19aTjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRFUE5TXzE3Q29udGV4dE1lbnVD
bGllbnRFUE5TXzEyRWRpdG9yQ2xpZW50RVBOU18xMERyYWdDbGllbnRFUE5TXzE1SW5zcGVjdG9y
Q2xpZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnRFUE5TXzIzRGV2aWNlT3JpZW50YXRpb25DbGllbnRFUE5TXzI3QmFja0ZvcndhcmRD
b250cm9sbGVyQ2xpZW50RQorX19aTjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRF
UE5TXzEyRWRpdG9yQ2xpZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdCYWNrRm9y
d2FyZENvbnRyb2xsZXJDbGllbnRFUktOUzBfMTVPcHRpb25hbENsaWVudHNFCiBfX1pON1dlYkNv
cmU0UGFnZUQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVjdGlvblNwYWNlCiBf
X1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysr
IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDI3ICsxMjQsMjcg
QEAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGZyYW1lc1tpXS0+
ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwg
ZmFsc2UsIGZhbHNlKSk7CiB9CiAKLVBhZ2U6OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGll
bnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCwgRWRpdG9yQ2xpZW50KiBl
ZGl0b3JDbGllbnQsIERyYWdDbGllbnQqIGRyYWdDbGllbnQsIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50LCBQbHVnaW5IYWx0ZXJDbGllbnQqIHBsdWdpbkhhbHRlckNsaWVudCwgR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCwgQmFja0Zvcndh
cmRDb250cm9sbGVyQ2xpZW50KiBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQpCitQYWdlOjpQ
YWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVu
dCwgUGx1Z2luSGFsdGVyQ2xpZW50KiBwbHVnaW5IYWx0ZXJDbGllbnQsIEJhY2tGb3J3YXJkQ29u
dHJvbGxlckNsaWVudCogYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LCBjb25zdCBPcHRpb25h
bENsaWVudHMmIG9wdGlvbmFsQ2xpZW50cykKICAgICA6IG1fY2hyb21lKG5ldyBDaHJvbWUodGhp
cywgY2hyb21lQ2xpZW50KSkKICAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihuZXcgU2VsZWN0
aW9uQ29udHJvbGxlcigwLCB0cnVlKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwg
bV9kcmFnQ29udHJvbGxlcihuZXcgRHJhZ0NvbnRyb2xsZXIodGhpcywgZHJhZ0NsaWVudCkpCisg
ICAgLCBtX2RyYWdDb250cm9sbGVyKG5ldyBEcmFnQ29udHJvbGxlcih0aGlzLCBvcHRpb25hbENs
aWVudHMuZHJhZ0NsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fZm9jdXNDb250cm9sbGVyKG5ldyBG
b2N1c0NvbnRyb2xsZXIodGhpcykpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBt
X2NvbnRleHRNZW51Q29udHJvbGxlcihuZXcgQ29udGV4dE1lbnVDb250cm9sbGVyKHRoaXMsIGNv
bnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG5ldyBDb250
ZXh0TWVudUNvbnRyb2xsZXIodGhpcywgb3B0aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50
KSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckNvbnRy
b2xsZXIobmV3IEluc3BlY3RvckNvbnRyb2xsZXIodGhpcywgaW5zcGVjdG9yQ2xpZW50KSkKKyAg
ICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihuZXcgSW5zcGVjdG9yQ29udHJvbGxlcih0aGlzLCBv
cHRpb25hbENsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShDTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcg
R2VvbG9jYXRpb25Db250cm9sbGVyKHRoaXMsIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCkp
CisgICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRpb25Db250cm9sbGVy
KHRoaXMsIG9wdGlvbmFsQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9u
RW5hYmxlZCgpID8gbmV3IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcih0aGlzLCBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudCkgOiAwKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBu
ZXcgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHRoaXMsIG9wdGlvbmFsQ2xpZW50cy5kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCkgOiAwKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKLSAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAsIG1fc3BlZWNoSW5wdXRDbGll
bnQob3B0aW9uYWxDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCiAgICAgLCBtX3Nl
dHRpbmdzKG5ldyBTZXR0aW5ncyh0aGlzKSkKICAgICAsIG1fcHJvZ3Jlc3MobmV3IFByb2dyZXNz
VHJhY2tlcikKQEAgLTE2OCwyMCArMTY4LDggQEAgUGFnZTo6UGFnZShDaHJvbWVDbGllbnQqIGNo
cm9tZUNsaWVudCwgQwogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKC0xKQog
ICAgICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiB7Ci0jaWYgIUVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0TWVudUNsaWVudCk7Ci0jZW5kaWYKLSNpZiAhRU5B
QkxFKERSQUdfU1VQUE9SVCkKLSAgICBVTlVTRURfUEFSQU0oZHJhZ0NsaWVudCk7Ci0jZW5kaWYK
LSNpZiAhRU5BQkxFKElOU1BFQ1RPUikKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yQ2xpZW50
KTsKLSNlbmRpZgotI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAgIFVO
VVNFRF9QQVJBTShnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpOwotI2VuZGlmCi0jaWYgIUVO
QUJMRShDTElFTlRfREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFVOVVNFRF9QQVJBTShkZXZpY2VP
cmllbnRhdGlvbkNsaWVudCk7CisjaWYgIUVOQUJMRShDT05URVhUX01FTlVTKSAmJiAhRU5BQkxF
KERSQUdfU1VQUE9SVCkgJiYgIUVOQUJMRShJTlNQRUNUT1IpICYmICFFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKSAmJiAhRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgIUVOQUJM
RShJTlBVVF9TUEVFQ0gpCisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbmFsQ2xpZW50cyk7CiAjZW5k
aWYKIAogICAgIGlmICghYWxsUGFnZXMpIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNjQxMzApCisrKyBXZWJD
b3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSwyNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzZXROZWVkc1Jl
YXBwbHlTdHlsZXMoKTsKIAotICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51
Q2xpZW50KiwgRWRpdG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCosIFBs
dWdpbkhhbHRlckNsaWVudCosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCosIERldmljZU9y
aWVudGF0aW9uQ2xpZW50KiwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50Kik7CisgICAgICAg
IC8vIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzLiBJZiB0aGUgZmVhdHVyZSBpcyBlbmFi
bGVkLCBhIG5vbi1udWxsIGNsaWVudCBpcyByZXF1aXJlZC4KKyAgICAgICAgc3RydWN0IE9wdGlv
bmFsQ2xpZW50cyB7CisgICAgICAgICAgICBPcHRpb25hbENsaWVudHMoKQorICAgICAgICAgICAg
ICAgIDogY29udGV4dE1lbnVDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGRyYWdDbGllbnQo
MCkKKyAgICAgICAgICAgICAgICAsIGluc3BlY3RvckNsaWVudCgwKQorICAgICAgICAgICAgICAg
ICwgZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBkZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCgwKQorICAgICAgICAgICAgICAgICwgc3BlZWNoSW5wdXRDbGll
bnQoMCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBDb250ZXh0TWVudUNsaWVudCog
Y29udGV4dE1lbnVDbGllbnQ7CisgICAgICAgICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50Owor
ICAgICAgICAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQ7CisgICAgICAgICAg
ICBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dDsKKyAgICAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlv
bkNsaWVudDsKKyAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVu
dDsKKyAgICAgICAgfTsKKworICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIEVkaXRvckNsaWVu
dCosIFBsdWdpbkhhbHRlckNsaWVudCosIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCosIGNv
bnN0IE9wdGlvbmFsQ2xpZW50cyYpOwogICAgICAgICB+UGFnZSgpOwogCiAgICAgICAgIFJlbmRl
clRoZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07CkBAIC0xNTUs
NyArMTc0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIqIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoSU5QVVRfU1BFRUNIKQotICAgICAgICB2b2lkIHNldFNwZWVjaElucHV0Q2xpZW50KFNwZWVj
aElucHV0Q2xpZW50KiBjbGllbnQpIHsgbV9zcGVlY2hJbnB1dENsaWVudCA9IGNsaWVudDsgfQog
ICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgogICAgICAgICBTZXR0
aW5ncyogc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI0ICsyMzgs
MjUgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgIGlmIChh
bGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBkdW1t
eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OwogICAgICAg
ICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBkdW1teUVkaXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRv
ckNsaWVudDsKKyAgICAgICAgUGFnZTo6T3B0aW9uYWxDbGllbnRzIG9wdGlvbmFsQ2xpZW50czsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgc3RhdGljIENvbnRleHRNZW51Q2xp
ZW50KiBkdW1teUNvbnRleHRNZW51Q2xpZW50ID0gbmV3IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ7
Ci0jZWxzZQotICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1l
bnVDbGllbnQgPSAwOworICAgICAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGllbnQg
PSBkdW1teUNvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKICAgICAgICAgc3RhdGljIERyYWdDbGllbnQqIGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0
eURyYWdDbGllbnQ7Ci0jZWxzZQotICAgICAgICBzdGF0aWMgRHJhZ0NsaWVudCogZHVtbXlEcmFn
Q2xpZW50ID0gMDsKKyAgICAgICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQgPSBkdW1teURy
YWdDbGllbnQ7CiAjZW5kaWYKICAgICAgICAgc3RhdGljIEluc3BlY3RvckNsaWVudCogZHVtbXlJ
bnNwZWN0b3JDbGllbnQgPSBuZXcgRW1wdHlJbnNwZWN0b3JDbGllbnQ7CisgICAgICAgIG9wdGlv
bmFsQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBkdW1teUluc3BlY3RvckNsaWVudDsKKyAgICAg
ICAgCiAKICAgICAgICAgbV9jaHJvbWVDbGllbnQuc2V0KG5ldyBTVkdJbWFnZUNocm9tZUNsaWVu
dCh0aGlzKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1
cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCiAgICAgICAgIC8vIFRo
ZSBjb21tZW50IHNhaWQgdGhhdCB0aGUgQ2FjaGUgY29kZSBkb2VzIG5vdCBrbm93IGFib3V0IENh
Y2hlZEltYWdlcwogICAgICAgICAvLyBob2xkaW5nIEZyYW1lcyBhbmQgd29uJ3Qga25vdyB0byBi
cmVhayB0aGUgY3ljbGUuIEJ1dCAKLSAgICAgICAgbV9wYWdlLnNldChuZXcgUGFnZShtX2Nocm9t
ZUNsaWVudC5nZXQoKSwgZHVtbXlDb250ZXh0TWVudUNsaWVudCwgZHVtbXlFZGl0b3JDbGllbnQs
IGR1bW15RHJhZ0NsaWVudCwgZHVtbXlJbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAsIDApKTsKKyAg
ICAgICAgbV9wYWdlLnNldChuZXcgUGFnZShtX2Nocm9tZUNsaWVudC5nZXQoKSwgZHVtbXlFZGl0
b3JDbGllbnQsIDAsIDAsIG9wdGlvbmFsQ2xpZW50cykpOwogICAgICAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjYg
IFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICBDbGllbnRzIGZvciBvcHRpb25hbCBmZWF0dXJl
cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBw
b2ludGVycworICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjgzNAorCisgICAgICAgKiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAoV2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTAtMDctMjcgIEFuZHJhcyBCZWNzaSAg
PGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDY0MTMwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEzICs4MCwxOCBAQCBQYXNzUmVmUHRyPFdlYlBhZ2U+
IFdlYlBhZ2U6OmNyZWF0ZSh1aW50CiB9CiAKIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUsIERyYXdpbmdBcmVhOjpUeXBlIGRyYXdpbmdBcmVhVHlwZSkKLSAgICA6IG1fcGFnZShu
ZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpLCBuZXcgV2ViQ29udGV4dE1lbnVDbGll
bnQodGhpcyksIG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyksIG5ldyBXZWJEcmFnQ2xpZW50KHRo
aXMpLCBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpLCAwLCAwLCAwLCBuZXcgV2ViQmFja0Zv
cndhcmRDb250cm9sbGVyQ2xpZW50KHRoaXMpKSkKLSAgICAsIG1fdmlld1NpemUodmlld1NpemUp
CisgICAgOiBtX3ZpZXdTaXplKHZpZXdTaXplKQogICAgICwgbV9kcmF3aW5nQXJlYShEcmF3aW5n
QXJlYTo6Y3JlYXRlKGRyYXdpbmdBcmVhVHlwZSwgdGhpcykpCiAgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZUlEKTsKIAorICAgIFBhZ2U6Ok9wdGlvbmFsQ2xpZW50
cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50
ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOworICAgIG9wdGlvbmFsQ2xpZW50cy5k
cmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CisgICAgb3B0aW9uYWxDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgbV9w
YWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNs
aWVudCh0aGlzKSwgMCwgbmV3IFdlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCh0aGlzKSwg
b3B0aW9uYWxDbGllbnRzKTsKKwogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlw
dEVuYWJsZWQoc3RvcmUuamF2YVNjcmlwdEVuYWJsZWQpOwogICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHN0b3JlLmxvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQbHVnaW5zRW5hYmxlZChzdG9yZS5w
bHVnaW5zRW5hYmxlZCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MTMwKQorKysgV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGllbnRzIGZvciBvcHRp
b25hbCBmZWF0dXJlcyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0
cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisKIDIwMTAtMDctMjcgIEls
eWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gNjQxMzApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc1LDE1ICsyNzUsMTkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIAogICAgIGlmIChkZXZUb29sc0NsaWVudCkKICAgICAgICAgbV9k
ZXZUb29sc0FnZW50ID0gbmV3IFdlYkRldlRvb2xzQWdlbnRJbXBsKHRoaXMsIGRldlRvb2xzQ2xp
ZW50KTsKIAotICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1f
Y29udGV4dE1lbnVDbGllbnRJbXBsLCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50
SW1wbCwgJm1faW5zcGVjdG9yQ2xpZW50SW1wbCwgMCwgMCwgMCwgMCkpOworICAgIFBhZ2U6Ok9w
dGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGllbnRzLmNvbnRl
eHRNZW51Q2xpZW50ID0gJm1fY29udGV4dE1lbnVDbGllbnRJbXBsOworICAgIG9wdGlvbmFsQ2xp
ZW50cy5kcmFnQ2xpZW50ID0gJm1fZHJhZ0NsaWVudEltcGw7CisgICAgb3B0aW9uYWxDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9ICZtX2luc3BlY3RvckNsaWVudEltcGw7CisjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKKyAgICBvcHRpb25hbENsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9z
cGVlY2hJbnB1dENsaWVudDsKKyNlbmRpZgorICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hy
b21lQ2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgMCwgMCwgb3B0aW9uYWxDbGllbnRz
KSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3Vz
IGNsaWVudHMKIAogICAgIG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPnNldENsaWVudCgmbV9i
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKTsKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShwYWdl
R3JvdXBOYW1lKTsKLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgIG1fcGFnZS0+c2V0U3Bl
ZWNoSW5wdXRDbGllbnQoJm1fc3BlZWNoSW5wdXRDbGllbnQpOwotI2VuZGlmCiAKICAgICBtX2lu
c3BlY3RvclNldHRpbmdzTWFwLnNldChuZXcgU2V0dGluZ3NNYXApOwogfQpJbmRleDogV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY0MTMwKQorKysgV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xp
ZW50cyBmb3Igb3B0aW9uYWwgZmVhdHVyZXMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0
cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODM0CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMC0wNy0yNiAgUmFmYWVs
IEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA2NDEz
MCkKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5
LDE2ICs1MjksMTcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3Xwog
ICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBXZWJDb3JlOjpQYWdlOjpPcHRp
b25hbENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5jb250ZXh0
TWVudUNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50Kj4obmV3
IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsKHNkLT5zZWxmKSk7CisgICAgb3B0aW9uYWxD
bGllbnRzLmRyYWdDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnQ2xpZW50Kj4obmV3
IFdlYkNvcmU6OkRyYWdDbGllbnRFZmwpOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JD
bGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50RWZsKTsKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBh
Z2UoCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNocm9tZUNsaWVudCo+KG5ldyBXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmwoc2QtPnNlbGYpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Q29udGV4dE1lbnVDbGllbnQqPihuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRF
Zmwoc2QtPnNlbGYpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdG9yQ2xpZW50
Kj4obmV3IFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbChzZC0+c2VsZikpLAotICAgICAgICBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnQ2xpZW50Kj4obmV3IFdlYkNvcmU6OkRyYWdDbGllbnRFZmwp
LAotICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQqPihuZXcgV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsKSwKLSAgICAgICAgMCwKICAgICAgICAgMCwKICAgICAg
ICAgMCwKLSAgICAgICAgMCk7CisgICAgICAgIG9wdGlvbmFsQ2xpZW50cyk7CiAgICAgaWYgKCFw
cml2LT5wYWdlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQ
YWdlIik7CiAgICAgICAgIGdvdG8gZXJyb3JfcGFnZTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDEzMCkK
KysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9w
dGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEg
c3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3Ug
IDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNjQxMzApCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA0MSw4ICszMDQxLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktp
dFcKIAogICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7CiAK
LSAgICBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktp
dDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBh
Z2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBu
ZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAs
IDApOworICAgIFBhZ2U6Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0
aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYktpdDo6Q29udGV4dE1lbnVD
bGllbnQod2ViVmlldyk7CisgICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2Vi
S2l0OjpEcmFnQ2xpZW50KHdlYlZpZXcpOworICAgIG9wdGlvbmFsQ2xpZW50cy5pbnNwZWN0b3JD
bGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+
Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5l
dyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgMCwgMCwgb3B0aW9uYWxDbGllbnRzKTsK
IAogICAgIC8vIFdlIGFsc28gYWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0
aGUgcHVibGljCiAgICAgLy8gaW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KSW5kZXg6
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFn
ZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorCiAyMDEwLTA3LTI3
ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNjQx
MzApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjcyLDEyICs2NzIsMTQgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVO
YQogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIH0KIAorICAg
IFBhZ2U6Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0aW9uYWxDbGll
bnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwor
ICAgIG9wdGlvbmFsQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQoc2VsZik7
CisgICAgb3B0aW9uYWxDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JD
bGllbnQoc2VsZik7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICBX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQoc2VsZik7Ci0jZWxzZQotICAg
IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50ID0gMDsKKyAgICBvcHRpb25hbENsaWVudHMuZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudChzZWxmKTsKICNlbmRpZgotICAg
IF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudChzZWxmKSwgbmV3
IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpLCBu
ZXcgV2ViRHJhZ0NsaWVudChzZWxmKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKSwgbmV3
IFdlYlBsdWdpbkhhbHRlckNsaWVudChzZWxmKSwgZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
LCAwLCAwKTsKKyAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGll
bnQoc2VsZiksIG5ldyBXZWJFZGl0b3JDbGllbnQoc2VsZiksIG5ldyBXZWJQbHVnaW5IYWx0ZXJD
bGllbnQoc2VsZiksIDAsIG9wdGlvbmFsQ2xpZW50cyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0
dGluZ3MoKS0+c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNlc10g
X2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDEzMCkKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0w
Ny0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50cyBmb3Igb3B0aW9uYWwg
ZmVhdHVyZXMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1
cmUgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyODM0CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCiAyMDEwLTA3LTI3ICBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
b3IgQXJuZSBWZXN0YsO4LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDY0MTMwKQorKysg
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCwxMCArMjcw
LDEzIEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWcKICNlbmRpZgog
CiAgICAgY2hyb21lQ2xpZW50ID0gbmV3IENocm9tZUNsaWVudFF0KHEpOwotICAgIGNvbnRleHRN
ZW51Q2xpZW50ID0gbmV3IENvbnRleHRNZW51Q2xpZW50UXQoKTsKICAgICBlZGl0b3JDbGllbnQg
PSBuZXcgRWRpdG9yQ2xpZW50UXQocSk7Ci0gICAgcGFnZSA9IG5ldyBQYWdlKGNocm9tZUNsaWVu
dCwgY29udGV4dE1lbnVDbGllbnQsIGVkaXRvckNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAg
bmV3IERyYWdDbGllbnRRdChxKSwgbmV3IEluc3BlY3RvckNsaWVudFF0KHEpLCAwLCAwLCAwLCAw
KTsKKworICAgIFBhZ2U6Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CisgICAgb3B0
aW9uYWxDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IENvbnRleHRNZW51Q2xpZW50UXQo
KTsKKyAgICBvcHRpb25hbENsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBEcmFnQ2xpZW50UXQocSk7
CisgICAgb3B0aW9uYWxDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGll
bnRRdChxKTsKKyAgICBwYWdlID0gbmV3IFBhZ2UoY2hyb21lQ2xpZW50LCBlZGl0b3JDbGllbnQs
IDAsIDAsIG9wdGlvbmFsQ2xpZW50cyk7CiAKICAgICBzZXR0aW5ncyA9IG5ldyBRV2ViU2V0dGlu
Z3MocGFnZS0+c2V0dGluZ3MoKSk7CiAKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDct
MjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudHMgZm9yIG9wdGlvbmFsIGZl
YXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJl
IG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpp
bml0V2l0aEZyYW1lKToKKwogMjAxMC0wNy0yNyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gNjQxMzApCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYzLDE3ICsyNTYzLDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6aW5pdFcKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMoc2hvdWxkUGFpbnROYXRpdmVDb250cm9scyk7CiAjZW5kaWYKIAorICAgIFBhZ2U6
Ok9wdGlvbmFsQ2xpZW50cyBvcHRpb25hbENsaWVudHM7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xv
Y2F0aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnQodGhpcyk7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCogZ2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50ID0gMDsKKyAgICBvcHRpb25hbENsaWVudHMuZ2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCh0aGlzKTsKICNlbmRpZgogCiAgICAgQk9PTCB1c2VIaWdoUmVzb2x1dGlvblRpbWVyOwogICAg
IGlmIChTVUNDRUVERUQobV9wcmVmZXJlbmNlcy0+c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1l
cnMoJnVzZUhpZ2hSZXNvbHV0aW9uVGltZXIpKSkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3Vs
ZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKHVzZUhpZ2hSZXNvbHV0aW9uVGltZXIpOwogCi0gICAg
bV9wYWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkNvbnRl
eHRNZW51Q2xpZW50KHRoaXMpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViRHJh
Z0NsaWVudCh0aGlzKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKSwgbmV3IFdlYlBsdWdp
bkhhbHRlckNsaWVudCh0aGlzKSwgZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LCAwLCAwKTsK
KyAgICBvcHRpb25hbENsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1l
bnVDbGllbnQodGhpcyk7CisgICAgb3B0aW9uYWxDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2Vi
RHJhZ0NsaWVudCh0aGlzKTsKKyAgICBvcHRpb25hbENsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0g
bmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsKKyAgICBtX3BhZ2UgPSBuZXcgUGFnZShuZXcg
V2ViQ2hyb21lQ2xpZW50KHRoaXMpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50KHRoaXMpLCAwLCBvcHRpb25hbENsaWVudHMpOwogCiAgICAgQlNU
UiBsb2NhbFN0b3JhZ2VQYXRoOwogICAgIGlmIChTVUNDRUVERUQobV9wcmVmZXJlbmNlcy0+bG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKCZsb2NhbFN0b3JhZ2VQYXRoKSkpIHsKSW5kZXg6IFdlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNp
b24gNjQxMzApCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVu
dHMgZm9yIG9wdGlvbmFsIGZlYXR1cmVzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1
Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmlldy5jcHA6Cisg
ICAgICAgICh3eFdlYlZpZXc6OkNyZWF0ZSk6CisKIDIwMTAtMDctMTYgIFpoZSBTdSAgPHN1emhl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFdlYktpdC93eC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViVmlldy5j
cHAJKHJldmlzaW9uIDY0MTMwKQorKysgV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzIsMTEgKzMzMiwxNiBAQCBib29sIHd4V2ViVmlldzo6Q3JlYXRlKHd4V2luZG93
KiBwYXJlbnQsCiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBwYXJlbnRGcmFt
ZSA9IDA7CiAKICAgICBXZWJDb3JlOjpFZGl0b3JDbGllbnRXeCogZWRpdG9yQ2xpZW50ID0gbmV3
IFdlYkNvcmU6OkVkaXRvckNsaWVudFd4KCk7CisKKyAgICBXZWJDb3JlOjpQYWdlOjpPcHRpb25h
bENsaWVudHMgb3B0aW9uYWxDbGllbnRzOworICAgIG9wdGlvbmFsQ2xpZW50cy5jb250ZXh0TWVu
dUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFd4KCk7CisgICAgb3B0aW9u
YWxDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudFd4KCk7CisgICAg
b3B0aW9uYWxDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnRXeCgpOwogICAgIG1faW1wbC0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKG5ldyBXZWJD
b3JlOjpDaHJvbWVDbGllbnRXeCh0aGlzKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcg
V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRXeCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAg
IGVkaXRvckNsaWVudCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2ViQ29yZTo6RHJh
Z0NsaWVudFd4KCksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFd4KCksIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbENsaWVudHMpOwogICAgIGVkaXRvckNsaWVudC0+c2V0UGFnZShtX2ltcGwtPnBhZ2UpOwog
ICAgIAogICAgIG1fbWFpbkZyYW1lID0gbmV3IHd4V2ViRnJhbWUodGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62802</attachid>
            <date>2010-07-28 01:37:34 -0700</date>
            <delta_ts>2010-07-28 05:35:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100728093731.patch</filename>
            <type>text/plain</type>
            <size>25328</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhZ2UgY2xpZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0
cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9u
bHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAyMDEwLTA3LTI3ICBQcmFuYXYgS2VkaWEgIDxwcmFuYXZr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTU2NSw3ICs1NjUsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTZnb0JhY2tFdgogX19a
TjdXZWJDb3JlNFBhZ2U4Z29Ub0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FTlNfMTNGcmFtZUxvYWRU
eXBlRQogX19aTjdXZWJDb3JlNFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWlu
aXRHcm91cEV2Ci1fX1pON1dlYkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVudEVQTlNfMTdD
b250ZXh0TWVudUNsaWVudEVQTlNfMTJFZGl0b3JDbGllbnRFUE5TXzEwRHJhZ0NsaWVudEVQTlNf
MTVJbnNwZWN0b3JDbGllbnRFUE5TXzE4UGx1Z2luSGFsdGVyQ2xpZW50RVBOU18yN0dlb2xvY2F0
aW9uQ29udHJvbGxlckNsaWVudEVQTlNfMjNEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVQTlNfMjdC
YWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnRFCitfX1pON1dlYkNvcmU0UGFnZUMxRVJLTlMwXzE1
UGFnZUNsaWVudHNFCiBfX1pON1dlYkNvcmU0UGFnZUQxRXYKIF9fWk43V2ViQ29yZTRjb3JlRVAy
ME5TVVJMUHJvdGVjdGlvblNwYWNlCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCkluZGV4
OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDMzICsxMjQsMzMgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdl
ZCgpCiAgICAgICAgIGZyYW1lc1tpXS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLVBhZ2U6OlBhZ2Uo
Q2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVu
dUNsaWVudCwgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQsIERyYWdDbGllbnQqIGRyYWdDbGll
bnQsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50LCBQbHVnaW5IYWx0ZXJDbGllbnQq
IHBsdWdpbkhhbHRlckNsaWVudCwgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQsIERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudCwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50KiBiYWNrRm9yd2FyZENv
bnRyb2xsZXJDbGllbnQpCi0gICAgOiBtX2Nocm9tZShuZXcgQ2hyb21lKHRoaXMsIGNocm9tZUNs
aWVudCkpCitQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKKyAgICA6
IG1fY2hyb21lKG5ldyBDaHJvbWUodGhpcywgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50KSkKICAg
ICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihuZXcgU2VsZWN0aW9uQ29udHJvbGxlcigwLCB0cnVl
KSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFnQ29udHJvbGxlcihuZXcg
RHJhZ0NvbnRyb2xsZXIodGhpcywgZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVy
KG5ldyBEcmFnQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50KSkKICNlbmRp
ZgogICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobmV3IEZvY3VzQ29udHJvbGxlcih0aGlzKSkKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG5l
dyBDb250ZXh0TWVudUNvbnRyb2xsZXIodGhpcywgY29udGV4dE1lbnVDbGllbnQpKQorICAgICwg
bV9jb250ZXh0TWVudUNvbnRyb2xsZXIobmV3IENvbnRleHRNZW51Q29udHJvbGxlcih0aGlzLCBw
YWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG5ldyBJbnNwZWN0b3JDb250cm9sbGVy
KHRoaXMsIGluc3BlY3RvckNsaWVudCkpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobmV3
IEluc3BlY3RvckNvbnRyb2xsZXIodGhpcywgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkK
ICNlbmRpZgogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLCBtX2dl
b2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRpb25Db250cm9sbGVyKHRoaXMsIGdlb2xv
Y2F0aW9uQ29udHJvbGxlckNsaWVudCkpCisgICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihu
ZXcgR2VvbG9jYXRpb25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQot
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKHRoaXMsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCisgICAgLCBtX2Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmll
bnRhdGlvbkVuYWJsZWQoKSA/IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIodGhpcywg
cGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQpIDogMCkKICNlbmRpZgogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KDApCisgICAgLCBt
X3NwZWVjaElucHV0Q2xpZW50KHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlm
CiAgICAgLCBtX3NldHRpbmdzKG5ldyBTZXR0aW5ncyh0aGlzKSkKICAgICAsIG1fcHJvZ3Jlc3Mo
bmV3IFByb2dyZXNzVHJhY2tlcikKLSAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG5ldyBC
YWNrRm9yd2FyZENvbnRyb2xsZXIodGhpcywgYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50KSkK
KyAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG5ldyBCYWNrRm9yd2FyZENvbnRyb2xsZXIo
dGhpcywgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50KSkKICAgICAsIG1f
dGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKLSAgICAsIG1fZWRpdG9yQ2xp
ZW50KGVkaXRvckNsaWVudCkKKyAgICAsIG1fZWRpdG9yQ2xpZW50KHBhZ2VDbGllbnRzLmVkaXRv
ckNsaWVudCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogICAgICwgbV9vcGVuZWRCeURPTShmYWxz
ZSkKICAgICAsIG1fdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKHRydWUpCkBAIC0xNjgsMjIg
KzE2OCw2IEBAIFBhZ2U6OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIEMKICAgICAs
IG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgtMSkKICAgICAsIG1fY2FuU3RhcnRNZWRp
YSh0cnVlKQogewotI2lmICFFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dE1lbnVDbGllbnQpOwotI2VuZGlmCi0jaWYgIUVOQUJMRShEUkFHX1NVUFBPUlQpCi0g
ICAgVU5VU0VEX1BBUkFNKGRyYWdDbGllbnQpOwotI2VuZGlmCi0jaWYgIUVOQUJMRShJTlNQRUNU
T1IpCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvckNsaWVudCk7Ci0jZW5kaWYKLSNpZiAhRU5B
QkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICBVTlVTRURfUEFSQU0oZ2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50KTsKLSNlbmRpZgotI2lmICFFTkFCTEUoQ0xJRU5UX0RFVklDRV9P
UklFTlRBVElPTikKLSAgICBVTlVTRURfUEFSQU0oZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOwot
I2VuZGlmCi0KICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhh
c2hTZXQ8UGFnZSo+OwogICAgICAgICAKQEAgLTE5Myw4ICsxNzcsOCBAQCBQYWdlOjpQYWdlKENo
cm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDCiAgICAgQVNTRVJUKCFhbGxQYWdlcy0+Y29udGFp
bnModGhpcykpOwogICAgIGFsbFBhZ2VzLT5hZGQodGhpcyk7CiAKLSAgICBpZiAocGx1Z2luSGFs
dGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fcGx1Z2luSGFsdGVyLnNldChuZXcgUGx1Z2luSGFsdGVy
KHBsdWdpbkhhbHRlckNsaWVudCkpOworICAgIGlmIChwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJD
bGllbnQpIHsKKyAgICAgICAgbV9wbHVnaW5IYWx0ZXIuc2V0KG5ldyBQbHVnaW5IYWx0ZXIocGFn
ZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50KSk7CiAgICAgICAgIG1fcGx1Z2luSGFsdGVyLT5z
ZXRQbHVnaW5BbGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5wbHVnaW5BbGxvd2VkUnVuVGltZSgp
KTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNjQxMzApCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSwzNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzZXROZWVkc1JlYXBwbHlTdHlsZXMoKTsK
IAotICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51Q2xpZW50KiwgRWRpdG9y
Q2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCosIFBsdWdpbkhhbHRlckNsaWVu
dCosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCosIERldmljZU9yaWVudGF0aW9uQ2xpZW50
KiwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50Kik7CisgICAgICAgIC8vIEl0IGlzIHVwIHRv
IHRoZSBwbGF0Zm9ybSB0byBlbnN1cmUgdGhhdCBub24tbnVsbCBjbGllbnRzIGFyZSBwcm92aWRl
ZCB3aGVyZSByZXF1aXJlZC4KKyAgICAgICAgc3RydWN0IFBhZ2VDbGllbnRzIHsKKyAgICAgICAg
ICAgIFBhZ2VDbGllbnRzKCkKKyAgICAgICAgICAgICAgICA6IGNocm9tZUNsaWVudCgwKQorICAg
ICAgICAgICAgICAgICwgY29udGV4dE1lbnVDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGVk
aXRvckNsaWVudCgwKQorICAgICAgICAgICAgICAgICwgZHJhZ0NsaWVudCgwKQorICAgICAgICAg
ICAgICAgICwgaW5zcGVjdG9yQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBwbHVnaW5IYWx0
ZXJDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCgwKQorICAgICAgICAgICAgICAgICwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoMCkKKyAgICAg
ICAgICAgICAgICAsIGJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCgwKQorICAgICAgICAgICAg
ICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAg
ICBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudDsKKyAgICAgICAgICAgIENvbnRleHRNZW51Q2xp
ZW50KiBjb250ZXh0TWVudUNsaWVudDsKKyAgICAgICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9y
Q2xpZW50OworICAgICAgICAgICAgRHJhZ0NsaWVudCogZHJhZ0NsaWVudDsKKyAgICAgICAgICAg
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50OworICAgICAgICAgICAgUGx1Z2luSGFs
dGVyQ2xpZW50KiBwbHVnaW5IYWx0ZXJDbGllbnQ7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudDsKKyAgICAgICAgICAg
IERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKKyAgICAg
ICAgICAgIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCogYmFja0ZvcndhcmRDb250cm9sbGVy
Q2xpZW50OworICAgICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50
OworICAgICAgICB9OworCisgICAgICAgIFBhZ2UoY29uc3QgUGFnZUNsaWVudHMmKTsKICAgICAg
ICAgflBhZ2UoKTsKIAogICAgICAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVy
biBtX3RoZW1lLmdldCgpOyB9OwpAQCAtMTU1LDcgKzE4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5nZXQoKTsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICAgICAgdm9p
ZCBzZXRTcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudCogY2xpZW50KSB7IG1fc3Bl
ZWNoSW5wdXRDbGllbnQgPSBjbGllbnQ7IH0KICAgICAgICAgU3BlZWNoSW5wdXQqIHNwZWVjaElu
cHV0KCk7CiAjZW5kaWYKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAko
cmV2aXNpb24gNjQxMzApCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNywyNSArMjM3LDI3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVIKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAg
c3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBkdW1teUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OwotICAgICAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBkdW1t
eUVkaXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKworICAgICAgICBQYWdlOjpQ
YWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKKyAgICAgICAgbV9jaHJvbWVDbGllbnQuc2V0KG5ldyBT
VkdJbWFnZUNocm9tZUNsaWVudCh0aGlzKSk7CisgICAgICAgIHBhZ2VDbGllbnRzLmNocm9tZUNs
aWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQog
ICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1lbnVDbGllbnQg
PSBuZXcgRW1wdHlDb250ZXh0TWVudUNsaWVudDsKLSNlbHNlCi0gICAgICAgIHN0YXRpYyBDb250
ZXh0TWVudUNsaWVudCogZHVtbXlDb250ZXh0TWVudUNsaWVudCA9IDA7CisgICAgICAgIHBhZ2VD
bGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gZHVtbXlDb250ZXh0TWVudUNsaWVudDsKICNlbmRp
ZgorICAgICAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBkdW1teUVkaXRvckNsaWVudCA9IG5ldyBF
bXB0eUVkaXRvckNsaWVudDsKKyAgICAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZHVt
bXlFZGl0b3JDbGllbnQ7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAgICAgc3RhdGlj
IERyYWdDbGllbnQqIGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdDbGllbnQ7Ci0jZWxz
ZQotICAgICAgICBzdGF0aWMgRHJhZ0NsaWVudCogZHVtbXlEcmFnQ2xpZW50ID0gMDsKKyAgICAg
ICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IGR1bW15RHJhZ0NsaWVudDsKICNlbmRpZgogICAg
ICAgICBzdGF0aWMgSW5zcGVjdG9yQ2xpZW50KiBkdW1teUluc3BlY3RvckNsaWVudCA9IG5ldyBF
bXB0eUluc3BlY3RvckNsaWVudDsKLQotICAgICAgICBtX2Nocm9tZUNsaWVudC5zZXQobmV3IFNW
R0ltYWdlQ2hyb21lQ2xpZW50KHRoaXMpKTsKKyAgICAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9y
Q2xpZW50ID0gZHVtbXlJbnNwZWN0b3JDbGllbnQ7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhN
RTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUg
d29ybGQuCiAgICAgICAgIC8vIFRoZSBjb21tZW50IHNhaWQgdGhhdCB0aGUgQ2FjaGUgY29kZSBk
b2VzIG5vdCBrbm93IGFib3V0IENhY2hlZEltYWdlcwogICAgICAgICAvLyBob2xkaW5nIEZyYW1l
cyBhbmQgd29uJ3Qga25vdyB0byBicmVhayB0aGUgY3ljbGUuIEJ1dCAKLSAgICAgICAgbV9wYWdl
LnNldChuZXcgUGFnZShtX2Nocm9tZUNsaWVudC5nZXQoKSwgZHVtbXlDb250ZXh0TWVudUNsaWVu
dCwgZHVtbXlFZGl0b3JDbGllbnQsIGR1bW15RHJhZ0NsaWVudCwgZHVtbXlJbnNwZWN0b3JDbGll
bnQsIDAsIDAsIDAsIDApKTsKKyAgICAgICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xpZW50
cykpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldE1lZGlhRW5hYmxlZChmYWxzZSk7
CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoZmFsc2Up
OwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsK
SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICBQ
YWdlIGNsaWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1
Y3R1cmUgb2YgcG9pbnRlcnMKKyAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgKFdlYlBhZ2U6OldlYlBhZ2UpOgorCiAyMDEwLTA3LTI3ICBBbmRy
YXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMyArODAsMjEgQEAgUGFzc1JlZlB0
cjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludAogfQogCiBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlLCBEcmF3aW5nQXJlYTo6VHlwZSBkcmF3aW5nQXJlYVR5cGUpCi0gICAg
OiBtX3BhZ2UobmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkNvbnRl
eHRNZW51Q2xpZW50KHRoaXMpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViRHJh
Z0NsaWVudCh0aGlzKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKSwgMCwgMCwgMCwgbmV3
IFdlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCh0aGlzKSkpCi0gICAgLCBtX3ZpZXdTaXpl
KHZpZXdTaXplKQorICAgIDogbV92aWV3U2l6ZSh2aWV3U2l6ZSkKICAgICAsIG1fZHJhd2luZ0Fy
ZWEoRHJhd2luZ0FyZWE6OmNyZWF0ZShkcmF3aW5nQXJlYVR5cGUsIHRoaXMpKQogICAgICwgbV9w
YWdlSUQocGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAKKyAgICBQYWdlOjpQYWdl
Q2xpZW50cyBwYWdlQ2xpZW50czsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcg
V2ViQ2hyb21lQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50
ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmVkaXRv
ckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVudHMuZHJh
Z0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmluc3Bl
Y3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVu
dHMuYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkJhY2tGb3J3YXJkQ29udHJv
bGxlckNsaWVudCh0aGlzKTsKKyAgICBtX3BhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CisK
ICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHN0b3JlLmphdmFT
Y3JpcHRFbmFibGVkKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShzdG9yZS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwogICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQoc3RvcmUucGx1Z2luc0VuYWJsZWQpOwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxv
Y2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFnZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFn
ZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KToKKwogMjAxMC0wNy0yNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTUgKzI3NSwyMSBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogCiAgICAgaWYgKGRldlRvb2xz
Q2xpZW50KQogICAgICAgICBtX2RldlRvb2xzQWdlbnQgPSBuZXcgV2ViRGV2VG9vbHNBZ2VudElt
cGwodGhpcywgZGV2VG9vbHNDbGllbnQpOwogCi0gICAgbV9wYWdlLnNldChuZXcgUGFnZSgmbV9j
aHJvbWVDbGllbnRJbXBsLCAmbV9jb250ZXh0TWVudUNsaWVudEltcGwsICZtX2VkaXRvckNsaWVu
dEltcGwsICZtX2RyYWdDbGllbnRJbXBsLCAmbV9pbnNwZWN0b3JDbGllbnRJbXBsLCAwLCAwLCAw
LCAwKSk7CisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgcGFnZUNsaWVu
dHMuY2hvcm1lQ2xpZW50ID0gJm1fY2hyb21lQ2xpZW50SW1wbDsKKyAgICBwYWdlQ2xpZW50cy5j
b250ZXh0TWVudUNsaWVudCA9ICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsKKyAgICBwYWdlQ2xp
ZW50cy5lZGl0b3JDbGllbnQgPSAmbV9lZGl0b3JDbGllbnRJbXBsOworICAgIHBhZ2VDbGllbnRz
LmRyYWdDbGllbnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0
b3JDbGllbnQgPSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOworI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCisgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENs
aWVudDsKKyNlbmRpZgorICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIAog
ICAgIC8vIHRoZSBwYWdlIHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHZhcmlvdXMgY2xpZW50
cwogCiAgICAgbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0Q2xpZW50KCZtX2JhY2tGb3J3
YXJkTGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5h
bWUpOwotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgbV9wYWdlLT5zZXRTcGVlY2hJbnB1
dENsaWVudCgmbV9zcGVlY2hJbnB1dENsaWVudCk7Ci0jZW5kaWYKIAogICAgIG1faW5zcGVjdG9y
U2V0dGluZ3NNYXAuc2V0KG5ldyBTZXR0aW5nc01hcCk7CiB9CkluZGV4OiBXZWJLaXQvZWZsL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNjQx
MzApCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlIGNsaWVu
dHMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2Yg
cG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyODM0CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KToKKwogMjAxMC0wNy0yNiAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxp
QHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCklu
ZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDE2ICs1MjksMTQgQEAgc3RhdGljIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgICAgICBDUklUSUNBTCgiY291bGQg
bm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9Ci0gICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKAotICAgICAgICBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpDaHJvbWVDbGllbnQqPihuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsKHNkLT5zZWxmKSksCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51
Q2xpZW50Kj4obmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsKHNkLT5zZWxmKSksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkVkaXRvckNsaWVudCo+KG5ldyBXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmwoc2QtPnNlbGYpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RHJhZ0NsaWVudCo+KG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50RWZsKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudEVmbCksCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAp
OworCisgICAgV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgcGFn
ZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hyb21lQ2xpZW50
Kj4obmV3IFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbChzZC0+c2VsZikpOworICAgIHBhZ2VDbGll
bnRzLmNvbnRleHRNZW51Q2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnQqPihuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmwoc2QtPnNlbGYpKTsKKyAg
ICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFZGl0b3JD
bGllbnQqPihuZXcgV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsKHNkLT5zZWxmKSk7CisgICAgcGFn
ZUNsaWVudHMuZHJhZ0NsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdDbGllbnQqPihu
ZXcgV2ViQ29yZTo6RHJhZ0NsaWVudEVmbCk7CisgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xp
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudEVmbCk7CisgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdl
KHBhZ2VDbGllbnRzKTsKICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwo
IkNvdWxkIG5vdCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsKICAgICAgICAgZ290byBlcnJvcl9wYWdl
OwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0MTMwKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2
ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFnZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1
Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorCiAyMDEwLTA3LTE2
ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24g
NjQxMzApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzA0MSw4ICszMDQxLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19p
bml0KFdlYktpdFcKIAogICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRf
bmV3KCk7CiAKLSAgICBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0g
bmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdl
ID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0
OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdl
YlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQs
IDAsIDAsIDAsIDApOworICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIHBh
Z2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3
KTsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNvbnRl
eHRNZW51Q2xpZW50KHdlYlZpZXcpOworICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5l
dyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KTsKKyAgICBwYWdlQ2xpZW50cy5kcmFnQ2xp
ZW50ID0gbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3KTsKKyAgICBwYWdlQ2xpZW50cy5p
bnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7Cisg
ICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKICAgICAvLyBXZSBh
bHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAg
IC8vIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjQx
MzApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlIGNsaWVu
dHMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2Yg
cG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyODM0CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3Vt
ZW50Vmlld3M6XSk6CisKIDIwMTAtMDctMjcgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsMTIgKzY3MiwxNyBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXph
dGlvbiA9IHRydWU7CiAgICAgfQogCisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7
CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxm
KTsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVu
dUNsaWVudChzZWxmKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRp
dG9yQ2xpZW50KHNlbGYpOworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJh
Z0NsaWVudChzZWxmKTsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yQ2xpZW50KHNlbGYpOworICAgIHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVu
dCA9IG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoc2VsZik7CiAjaWYgRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQoc2VsZik7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCog
Z2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50ID0gMDsKKyAgICBwYWdlQ2xpZW50cy5nZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
KHNlbGYpOwogI2VuZGlmCi0gICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViQ2hy
b21lQ2xpZW50KHNlbGYpLCBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZiksIG5ldyBXZWJF
ZGl0b3JDbGllbnQoc2VsZiksIG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpLCBuZXcgV2ViSW5zcGVj
dG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYpLCBnZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQsIDAsIDApOworICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFBh
Z2UocGFnZUNsaWVudHMpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0TWVkaWEo
W3NlbGYgd2luZG93XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldExvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVyZW5jZXNdIF9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGhdKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNjQxMzApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2Nr
ICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhZ2UgY2xpZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2Ug
Y29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisK
IDIwMTAtMDctMjcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCkluZGV4OiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAkocmV2aXNpb24gNjQxMzApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY5LDExICsyNjksMTMgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVBy
aXZhdGUoUVdlYlBhZwogICAgIFdlYkNvcmU6OkZvbnQ6OnNldENvZGVQYXRoKFdlYkNvcmU6OkZv
bnQ6OkNvbXBsZXgpOwogI2VuZGlmCiAKLSAgICBjaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xp
ZW50UXQocSk7Ci0gICAgY29udGV4dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRR
dCgpOwotICAgIGVkaXRvckNsaWVudCA9IG5ldyBFZGl0b3JDbGllbnRRdChxKTsKLSAgICBwYWdl
ID0gbmV3IFBhZ2UoY2hyb21lQ2xpZW50LCBjb250ZXh0TWVudUNsaWVudCwgZWRpdG9yQ2xpZW50
LAotICAgICAgICAgICAgICAgICAgICBuZXcgRHJhZ0NsaWVudFF0KHEpLCBuZXcgSW5zcGVjdG9y
Q2xpZW50UXQocSksIDAsIDAsIDAsIDApOworICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGll
bnRzOworICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBDaHJvbWVDbGllbnRRdChx
KTsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBDb250ZXh0TWVudUNs
aWVudFF0KCk7CisgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IEVkaXRvckNsaWVu
dFF0KHEpOworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHEp
OworICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRR
dChxKTsKKyAgICBwYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOwogCiAgICAgc2V0dGluZ3Mg
PSBuZXcgUVdlYlNldHRpbmdzKHBhZ2UtPnNldHRpbmdzKCkpOwogCkluZGV4OiBXZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
NjQxMzApCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlIGNs
aWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUg
b2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyODM0CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Omlu
aXRXaXRoRnJhbWUpOgorCiAyMDEwLTA3LTI3ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA2NDEzMCkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1NjMsMTcgKzI1NjMsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3Ojppbml0VwogICAgICAgICBTZXR0aW5nczo6c2V0U2hvdWxkUGFpbnROYXRpdmVD
b250cm9scyhzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnQodGhpcyk7Ci0jZWxzZQotICAgIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50ID0gMDsKLSNlbmRpZgotCiAgICAg
Qk9PTCB1c2VIaWdoUmVzb2x1dGlvblRpbWVyOwogICAgIGlmIChTVUNDRUVERUQobV9wcmVmZXJl
bmNlcy0+c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoJnVzZUhpZ2hSZXNvbHV0aW9uVGlt
ZXIpKSkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJz
KHVzZUhpZ2hSZXNvbHV0aW9uVGltZXIpOwogCi0gICAgbV9wYWdlID0gbmV3IFBhZ2UobmV3IFdl
YkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpLCBuZXcg
V2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKSwgbmV3IFdlYklu
c3BlY3RvckNsaWVudCh0aGlzKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKSwgZ2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50LCAwLCAwKTsKKyAgICBQYWdlOjpQYWdlQ2xpZW50cyBw
YWdlQ2xpZW50czsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21l
Q2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdl
YkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9
IG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9
IG5ldyBXZWJEcmFnQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVudHMucGx1Z2lu
SGFsdGVyQ2xpZW50ID0gbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudCh0aGlzKTsKKyNpZiBFTkFC
TEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorICAgIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudCA9IG5ldyBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQodGhp
cyk7CisjZW5kaWYKKyAgICBtX3BhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKICAgICBC
U1RSIGxvY2FsU3RvcmFnZVBhdGg7CiAgICAgaWYgKFNVQ0NFRURFRChtX3ByZWZlcmVuY2VzLT5s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoJmxvY2FsU3RvcmFnZVBhdGgpKSkgewpJbmRleDogV2Vi
S2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2NDEzMCkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFn
ZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0
dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjgzNAorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh3eFdlYlZp
ZXc6OkNyZWF0ZSk6CisKIDIwMTAtMDctMTYgIFpoZSBTdSAgPHN1emhlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93eC9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDY0
MTMwKQorKysgV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsMTEg
KzMzMiwxNCBAQCBib29sIHd4V2ViVmlldzo6Q3JlYXRlKHd4V2luZG93KiBwYXJlbnQsCiAgICAg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBwYXJlbnRGcmFtZSA9IDA7CiAKICAgICBX
ZWJDb3JlOjpFZGl0b3JDbGllbnRXeCogZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkVkaXRv
ckNsaWVudFd4KCk7Ci0gICAgbV9pbXBsLT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UobmV3IFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4KHRoaXMpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5l
dyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFd4KCksIAotICAgICAgICAgICAgICAgICAgICAg
ICAgZWRpdG9yQ2xpZW50LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWJDb3JlOjpE
cmFnQ2xpZW50V3goKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50V3goKSwgMCwgMCwgMCwgMCk7CisKKyAgICBXZWJDb3JlOjpQYWdlOjpQYWdl
Q2xpZW50cyBwYWdlQ2xpZW50czsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50V3godGhpcyk7CisgICAgcGFnZUNsaWVudHMuY29udGV4dE1l
bnVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRXeCgpOworICAgIHBhZ2VD
bGllbnRzLmVkaXRvckNsaWVudCA9IGVkaXRvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5kcmFn
Q2xpZW50ID0gbmV3IFdlYkNvcmU6OkRyYWdDbGllbnRXeCgpOworICAgIHBhZ2VDbGllbnRzLmlu
c3BlY3RvckNsaWVudCA9IG5ldyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeCgpOworICAgIG1f
aW1wbC0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBlZGl0b3JD
bGllbnQtPnNldFBhZ2UobV9pbXBsLT5wYWdlKTsKICAgICAKICAgICBtX21haW5GcmFtZSA9IG5l
dyB3eFdlYkZyYW1lKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62816</attachid>
            <date>2010-07-28 05:35:55 -0700</date>
            <delta_ts>2010-08-06 13:21:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42834-20100728133552.patch</filename>
            <type>text/plain</type>
            <size>25317</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhZ2UgY2xpZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0
cnVjdHVyZSBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI4MzQKKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9u
bHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAyMDEwLTA3LTI4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gNjQxOTYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U2Z29CYWNr
RXYKIF9fWk43V2ViQ29yZTRQYWdlOGdvVG9JdGVtRVBOU18xMUhpc3RvcnlJdGVtRU5TXzEzRnJh
bWVMb2FkVHlwZUUKIF9fWk43V2ViQ29yZTRQYWdlOWdvRm9yd2FyZEV2CiBfX1pON1dlYkNvcmU0
UGFnZTlpbml0R3JvdXBFdgotX19aTjdXZWJDb3JlNFBhZ2VDMUVQTlNfMTJDaHJvbWVDbGllbnRF
UE5TXzE3Q29udGV4dE1lbnVDbGllbnRFUE5TXzEyRWRpdG9yQ2xpZW50RVBOU18xMERyYWdDbGll
bnRFUE5TXzE1SW5zcGVjdG9yQ2xpZW50RVBOU18xOFBsdWdpbkhhbHRlckNsaWVudEVQTlNfMjdH
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRFUE5TXzIzRGV2aWNlT3JpZW50YXRpb25DbGllbnRF
UE5TXzI3QmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50RQorX19aTjdXZWJDb3JlNFBhZ2VDMUVS
S05TMF8xMVBhZ2VDbGllbnRzRQogX19aTjdXZWJDb3JlNFBhZ2VEMUV2CiBfX1pON1dlYkNvcmU0
Y29yZUVQMjBOU1VSTFByb3RlY3Rpb25TcGFjZQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9u
RQpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gNjQxOTYpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCwzMyArMTI0LDMzIEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0
ZUNoYW5nZWQoKQogICAgICAgICBmcmFtZXNbaV0tPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOwogfQogCi1QYWdl
OjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDb250ZXh0TWVudUNsaWVudCogY29u
dGV4dE1lbnVDbGllbnQsIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50LCBEcmFnQ2xpZW50KiBk
cmFnQ2xpZW50LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCwgUGx1Z2luSGFsdGVy
Q2xpZW50KiBwbHVnaW5IYWx0ZXJDbGllbnQsIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCog
Z2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2
aWNlT3JpZW50YXRpb25DbGllbnQsIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCogYmFja0Zv
cndhcmRDb250cm9sbGVyQ2xpZW50KQotICAgIDogbV9jaHJvbWUobmV3IENocm9tZSh0aGlzLCBj
aHJvbWVDbGllbnQpKQorUGFnZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMp
CisgICAgOiBtX2Nocm9tZShuZXcgQ2hyb21lKHRoaXMsIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVu
dCkpCiAgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobmV3IFNlbGVjdGlvbkNvbnRyb2xsZXIo
MCwgdHJ1ZSkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xs
ZXIobmV3IERyYWdDb250cm9sbGVyKHRoaXMsIGRyYWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29u
dHJvbGxlcihuZXcgRHJhZ0NvbnRyb2xsZXIodGhpcywgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCkp
CiAjZW5kaWYKICAgICAsIG1fZm9jdXNDb250cm9sbGVyKG5ldyBGb2N1c0NvbnRyb2xsZXIodGhp
cykpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q29udHJv
bGxlcihuZXcgQ29udGV4dE1lbnVDb250cm9sbGVyKHRoaXMsIGNvbnRleHRNZW51Q2xpZW50KSkK
KyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG5ldyBDb250ZXh0TWVudUNvbnRyb2xsZXIo
dGhpcywgcGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihuZXcgSW5zcGVjdG9yQ29u
dHJvbGxlcih0aGlzLCBpbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKG5ldyBJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmluc3BlY3RvckNs
aWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQotICAg
ICwgbV9nZW9sb2NhdGlvbkNvbnRyb2xsZXIobmV3IEdlb2xvY2F0aW9uQ29udHJvbGxlcih0aGlz
LCBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQpKQorICAgICwgbV9nZW9sb2NhdGlvbkNvbnRy
b2xsZXIobmV3IEdlb2xvY2F0aW9uQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xpZW50cy5nZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpID8gbmV3IERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcih0aGlzLCBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCkgOiAwKQorICAgICwg
bV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2
aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
KHRoaXMsIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50KSA6IDApCiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQotICAgICwgbV9zcGVlY2hJbnB1dENsaWVudCgwKQor
ICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkK
ICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhuZXcgU2V0dGluZ3ModGhpcykpCiAgICAgLCBtX3By
b2dyZXNzKG5ldyBQcm9ncmVzc1RyYWNrZXIpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxl
cihuZXcgQmFja0ZvcndhcmRDb250cm9sbGVyKHRoaXMsIGJhY2tGb3J3YXJkQ29udHJvbGxlckNs
aWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihuZXcgQmFja0ZvcndhcmRDb250
cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCkpCiAg
ICAgLCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UodGhpcykpCi0gICAgLCBtX2Vk
aXRvckNsaWVudChlZGl0b3JDbGllbnQpCisgICAgLCBtX2VkaXRvckNsaWVudChwYWdlQ2xpZW50
cy5lZGl0b3JDbGllbnQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKICAgICAsIG1fb3BlbmVkQnlE
T00oZmFsc2UpCiAgICAgLCBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyh0cnVlKQpAQCAt
MTY4LDIyICsxNjgsNiBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBD
CiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0
YXJ0TWVkaWEodHJ1ZSkKIHsKLSNpZiAhRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgVU5VU0VE
X1BBUkFNKGNvbnRleHRNZW51Q2xpZW50KTsKLSNlbmRpZgotI2lmICFFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIFVOVVNFRF9QQVJBTShkcmFnQ2xpZW50KTsKLSNlbmRpZgotI2lmICFFTkFCTEUo
SU5TUEVDVE9SKQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JDbGllbnQpOwotI2VuZGlmCi0j
aWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgVU5VU0VEX1BBUkFNKGdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCk7Ci0jZW5kaWYKLSNpZiAhRU5BQkxFKENMSUVOVF9E
RVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgVU5VU0VEX1BBUkFNKGRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KTsKLSNlbmRpZgotCiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9
IG5ldyBIYXNoU2V0PFBhZ2UqPjsKICAgICAgICAgCkBAIC0xOTMsOCArMTc3LDggQEAgUGFnZTo6
UGFnZShDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCwgQwogICAgIEFTU0VSVCghYWxsUGFnZXMt
PmNvbnRhaW5zKHRoaXMpKTsKICAgICBhbGxQYWdlcy0+YWRkKHRoaXMpOwogCi0gICAgaWYgKHBs
dWdpbkhhbHRlckNsaWVudCkgewotICAgICAgICBtX3BsdWdpbkhhbHRlci5zZXQobmV3IFBsdWdp
bkhhbHRlcihwbHVnaW5IYWx0ZXJDbGllbnQpKTsKKyAgICBpZiAocGFnZUNsaWVudHMucGx1Z2lu
SGFsdGVyQ2xpZW50KSB7CisgICAgICAgIG1fcGx1Z2luSGFsdGVyLnNldChuZXcgUGx1Z2luSGFs
dGVyKHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVudCkpOwogICAgICAgICBtX3BsdWdpbkhh
bHRlci0+c2V0UGx1Z2luQWxsb3dlZFJ1blRpbWUobV9zZXR0aW5ncy0+cGx1Z2luQWxsb3dlZFJ1
blRpbWUoKSk7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDY0MTk2KQorKysgV2ViQ29yZS9wYWdl
L1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsMzQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgc2V0TmVlZHNSZWFwcGx5U3R5
bGVzKCk7CiAKLSAgICAgICAgUGFnZShDaHJvbWVDbGllbnQqLCBDb250ZXh0TWVudUNsaWVudCos
IEVkaXRvckNsaWVudCosIERyYWdDbGllbnQqLCBJbnNwZWN0b3JDbGllbnQqLCBQbHVnaW5IYWx0
ZXJDbGllbnQqLCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqLCBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCosIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCopOworICAgICAgICAvLyBJdCBp
cyB1cCB0byB0aGUgcGxhdGZvcm0gdG8gZW5zdXJlIHRoYXQgbm9uLW51bGwgY2xpZW50cyBhcmUg
cHJvdmlkZWQgd2hlcmUgcmVxdWlyZWQuCisgICAgICAgIHN0cnVjdCBQYWdlQ2xpZW50cyB7Cisg
ICAgICAgICAgICBQYWdlQ2xpZW50cygpCisgICAgICAgICAgICAgICAgOiBjaHJvbWVDbGllbnQo
MCkKKyAgICAgICAgICAgICAgICAsIGNvbnRleHRNZW51Q2xpZW50KDApCisgICAgICAgICAgICAg
ICAgLCBlZGl0b3JDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGRyYWdDbGllbnQoMCkKKyAg
ICAgICAgICAgICAgICAsIGluc3BlY3RvckNsaWVudCgwKQorICAgICAgICAgICAgICAgICwgcGx1
Z2luSGFsdGVyQ2xpZW50KDApCisgICAgICAgICAgICAgICAgLCBnZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnQoMCkKKyAgICAgICAgICAgICAgICAsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KDAp
CisgICAgICAgICAgICAgICAgLCBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQoMCkKKyAgICAg
ICAgICAgICAgICAsIHNwZWVjaElucHV0Q2xpZW50KDApCisgICAgICAgICAgICB7IH0KKworICAg
ICAgICAgICAgQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQ7CisgICAgICAgICAgICBDb250ZXh0
TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQ7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGVkaXRvckNsaWVudDsKKyAgICAgICAgICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQ7CisgICAg
ICAgICAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudDsKKyAgICAgICAgICAgIFBs
dWdpbkhhbHRlckNsaWVudCogcGx1Z2luSGFsdGVyQ2xpZW50OworICAgICAgICAgICAgR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQ7CisgICAg
ICAgICAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7
CisgICAgICAgICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQqIGJhY2tGb3J3YXJkQ29u
dHJvbGxlckNsaWVudDsKKyAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1
dENsaWVudDsKKyAgICAgICAgfTsKKworICAgICAgICBQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJik7
CiAgICAgICAgIH5QYWdlKCk7CiAKICAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90aGVtZS5nZXQoKTsgfTsKQEAgLTE1NSw3ICsxODIsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAg
ICAgIHZvaWQgc2V0U3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnQqIGNsaWVudCkg
eyBtX3NwZWVjaElucHV0Q2xpZW50ID0gY2xpZW50OyB9CiAgICAgICAgIFNwZWVjaElucHV0KiBz
cGVlY2hJbnB1dCgpOwogI2VuZGlmCiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAJKHJldmlzaW9uIDY0MTk2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsMjUgKzIzNywyNyBAQCBib29sIFNWR0ltYWdlOjpk
YXRhQ2hhbmdlZChib29sIGFsbERhdGFSCiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAg
ICAgICAgIHN0YXRpYyBGcmFtZUxvYWRlckNsaWVudCogZHVtbXlGcmFtZUxvYWRlckNsaWVudCA9
ICBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKLSAgICAgICAgc3RhdGljIEVkaXRvckNsaWVu
dCogZHVtbXlFZGl0b3JDbGllbnQgPSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7CisKKyAgICAgICAg
UGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgICAgIG1fY2hyb21lQ2xpZW50LnNl
dChuZXcgU1ZHSW1hZ2VDaHJvbWVDbGllbnQodGhpcykpOworICAgICAgICBwYWdlQ2xpZW50cy5j
aHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKICAgICAgICAgc3RhdGljIENvbnRleHRNZW51Q2xpZW50KiBkdW1teUNvbnRleHRNZW51
Q2xpZW50ID0gbmV3IEVtcHR5Q29udGV4dE1lbnVDbGllbnQ7Ci0jZWxzZQotICAgICAgICBzdGF0
aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1lbnVDbGllbnQgPSAwOworICAgICAg
ICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IGR1bW15Q29udGV4dE1lbnVDbGllbnQ7
CiAjZW5kaWYKKyAgICAgICAgc3RhdGljIEVkaXRvckNsaWVudCogZHVtbXlFZGl0b3JDbGllbnQg
PSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7CisgICAgICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVu
dCA9IGR1bW15RWRpdG9yQ2xpZW50OwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgICAg
IHN0YXRpYyBEcmFnQ2xpZW50KiBkdW1teURyYWdDbGllbnQgPSBuZXcgRW1wdHlEcmFnQ2xpZW50
OwotI2Vsc2UKLSAgICAgICAgc3RhdGljIERyYWdDbGllbnQqIGR1bW15RHJhZ0NsaWVudCA9IDA7
CisgICAgICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBkdW1teURyYWdDbGllbnQ7CiAjZW5k
aWYKICAgICAgICAgc3RhdGljIEluc3BlY3RvckNsaWVudCogZHVtbXlJbnNwZWN0b3JDbGllbnQg
PSBuZXcgRW1wdHlJbnNwZWN0b3JDbGllbnQ7Ci0KLSAgICAgICAgbV9jaHJvbWVDbGllbnQuc2V0
KG5ldyBTVkdJbWFnZUNocm9tZUNsaWVudCh0aGlzKSk7CisgICAgICAgIHBhZ2VDbGllbnRzLmlu
c3BlY3RvckNsaWVudCA9IGR1bW15SW5zcGVjdG9yQ2xpZW50OwogICAgICAgICAKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1pZ2h0IGxl
YWsgdGhlIHdvcmxkLgogICAgICAgICAvLyBUaGUgY29tbWVudCBzYWlkIHRoYXQgdGhlIENhY2hl
IGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMKICAgICAgICAgLy8gaG9sZGlu
ZyBGcmFtZXMgYW5kIHdvbid0IGtub3cgdG8gYnJlYWsgdGhlIGN5Y2xlLiBCdXQgCi0gICAgICAg
IG1fcGFnZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQuZ2V0KCksIGR1bW15Q29udGV4dE1l
bnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5zcGVj
dG9yQ2xpZW50LCAwLCAwLCAwLCAwKSk7CisgICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFn
ZUNsaWVudHMpKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRNZWRpYUVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVk
KGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQbHVnaW5zRW5hYmxlZChm
YWxzZSk7CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gNjQxOTYpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxv
Y2tAZ29vZ2xlLmNvbT4KKworICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgUGFnZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2
aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQyODM0CisKKyAgICAgICAqIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgIChXZWJQYWdlOjpXZWJQYWdlKToKKwogMjAxMC0wNy0y
OCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCB0cml2aWFsIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiA2NDE5NikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMyArODAsMjEgQEAgUGFzc1JlZlB0cjxX
ZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludAogfQogCiBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlLCBEcmF3aW5nQXJlYTo6VHlwZSBkcmF3aW5nQXJlYVR5cGUpCi0gICAgOiBt
X3BhZ2UobmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkNvbnRleHRN
ZW51Q2xpZW50KHRoaXMpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViRHJhZ0Ns
aWVudCh0aGlzKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKSwgMCwgMCwgMCwgbmV3IFdl
YkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCh0aGlzKSkpCi0gICAgLCBtX3ZpZXdTaXplKHZp
ZXdTaXplKQorICAgIDogbV92aWV3U2l6ZSh2aWV3U2l6ZSkKICAgICAsIG1fZHJhd2luZ0FyZWEo
RHJhd2luZ0FyZWE6OmNyZWF0ZShkcmF3aW5nQXJlYVR5cGUsIHRoaXMpKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAKKyAgICBQYWdlOjpQYWdlQ2xp
ZW50cyBwYWdlQ2xpZW50czsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgV2Vi
Q2hyb21lQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0g
bmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmVkaXRvckNs
aWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVudHMuZHJhZ0Ns
aWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmluc3BlY3Rv
ckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CisgICAgcGFnZUNsaWVudHMu
YmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50ID0gbmV3IFdlYkJhY2tGb3J3YXJkQ29udHJvbGxl
ckNsaWVudCh0aGlzKTsKKyAgICBtX3BhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CisKICAg
ICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHN0b3JlLmphdmFTY3Jp
cHRFbmFibGVkKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseShzdG9yZS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwogICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQoc3RvcmUucGx1Z2luc0VuYWJsZWQpOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA2NDE5NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFnZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBj
b25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToK
KwogMjAxMC0wNy0yNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCShyZXZpc2lvbiA2NDE5NikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTUgKzI3NSwyMSBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogCiAgICAgaWYgKGRldlRvb2xzQ2xpZW50KQog
ICAgICAgICBtX2RldlRvb2xzQWdlbnQgPSBuZXcgV2ViRGV2VG9vbHNBZ2VudEltcGwodGhpcywg
ZGV2VG9vbHNDbGllbnQpOwogCi0gICAgbV9wYWdlLnNldChuZXcgUGFnZSgmbV9jaHJvbWVDbGll
bnRJbXBsLCAmbV9jb250ZXh0TWVudUNsaWVudEltcGwsICZtX2VkaXRvckNsaWVudEltcGwsICZt
X2RyYWdDbGllbnRJbXBsLCAmbV9pbnNwZWN0b3JDbGllbnRJbXBsLCAwLCAwLCAwLCAwKSk7Cisg
ICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgcGFnZUNsaWVudHMuY2hyb21l
Q2xpZW50ID0gJm1fY2hyb21lQ2xpZW50SW1wbDsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVu
dUNsaWVudCA9ICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsKKyAgICBwYWdlQ2xpZW50cy5lZGl0
b3JDbGllbnQgPSAmbV9lZGl0b3JDbGllbnRJbXBsOworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGll
bnQgPSAmbV9kcmFnQ2xpZW50SW1wbDsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQg
PSAmbV9pbnNwZWN0b3JDbGllbnRJbXBsOworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAg
cGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKKyNl
bmRpZgorICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIAogICAgIC8vIHRo
ZSBwYWdlIHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHZhcmlvdXMgY2xpZW50cwogCiAgICAg
bV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0Q2xpZW50KCZtX2JhY2tGb3J3YXJkTGlzdENs
aWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUpOwotI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCi0gICAgbV9wYWdlLT5zZXRTcGVlY2hJbnB1dENsaWVudCgm
bV9zcGVlY2hJbnB1dENsaWVudCk7Ci0jZW5kaWYKIAogICAgIG1faW5zcGVjdG9yU2V0dGluZ3NN
YXAuc2V0KG5ldyBTZXR0aW5nc01hcCk7CiB9CkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNjQxOTYpCisrKyBX
ZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlIGNsaWVudHMgc2hvdWxk
IGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODM0CisK
KyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKKwogMjAxMC0wNy0yNiAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lv
bi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwCShyZXZpc2lvbiA2NDE5NikKKysrIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDE2ICs1MjksMTQgQEAgc3RhdGljIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKAotICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDaHJvbWVDbGllbnQqPihuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsKHNkLT5z
ZWxmKSksCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50Kj4o
bmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50RWZsKHNkLT5zZWxmKSksCi0gICAgICAgIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkVkaXRvckNsaWVudCo+KG5ldyBXZWJDb3JlOjpFZGl0b3JDbGll
bnRFZmwoc2QtPnNlbGYpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ0NsaWVu
dCo+KG5ldyBXZWJDb3JlOjpEcmFnQ2xpZW50RWZsKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbCks
Ci0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDApOworCisgICAg
V2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgcGFnZUNsaWVudHMu
Y2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hyb21lQ2xpZW50Kj4obmV3IFdl
YkNvcmU6OkNocm9tZUNsaWVudEVmbChzZC0+c2VsZikpOworICAgIHBhZ2VDbGllbnRzLmNvbnRl
eHRNZW51Q2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQqPihu
ZXcgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRFZmwoc2QtPnNlbGYpKTsKKyAgICBwYWdlQ2xp
ZW50cy5lZGl0b3JDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFZGl0b3JDbGllbnQqPihu
ZXcgV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsKHNkLT5zZWxmKSk7CisgICAgcGFnZUNsaWVudHMu
ZHJhZ0NsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdDbGllbnQqPihuZXcgV2ViQ29y
ZTo6RHJhZ0NsaWVudEVmbCk7CisgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Kj4obmV3IFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudEVmbCk7CisgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGll
bnRzKTsKICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5v
dCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsKICAgICAgICAgZ290byBlcnJvcl9wYWdlOwpJbmRleDog
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDY0MTk2KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFnZSBjbGllbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEg
c3RydWN0dXJlIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjgzNAorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorCiAyMDEwLTA3LTE2ICBaaGUgU3Ug
IDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNjQxOTYpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA0MSw4ICszMDQxLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktp
dFcKIAogICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7CiAK
LSAgICBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktp
dDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBh
Z2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBu
ZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQsIDAsIDAsIDAs
IDApOworICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIHBhZ2VDbGllbnRz
LmNocm9tZUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KTsKKyAgICBw
YWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xp
ZW50KHdlYlZpZXcpOworICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBXZWJLaXQ6
OkVkaXRvckNsaWVudCh3ZWJWaWV3KTsKKyAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3
IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3KTsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JD
bGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+
Y29yZVBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKICAgICAvLyBXZSBhbHNvIGFkZCBh
IHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGludGVy
ZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjQxOTYpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlIGNsaWVudHMgc2hvdWxk
IGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9yIHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODM0CisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmlld3M6
XSk6CisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkocmV2aXNpb24gNjQxOTYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjcyLDEyICs2NzIsMTcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVl
OwogICAgIH0KIAorICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIHBhZ2VD
bGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CisgICAgcGFn
ZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2Vs
Zik7CisgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudChz
ZWxmKTsKKyAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQoc2Vs
Zik7CisgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNs
aWVudChzZWxmKTsKKyAgICBwYWdlQ2xpZW50cy5wbHVnaW5IYWx0ZXJDbGllbnQgPSBuZXcgV2Vi
UGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYpOwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pCi0gICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHNlbGYp
OwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudCA9IDA7CisgICAgcGFnZUNsaWVudHMuZ2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50ID0gbmV3IFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudChzZWxmKTsKICNl
bmRpZgotICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudChz
ZWxmKSwgbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpLCBuZXcgV2ViRWRpdG9yQ2xpZW50
KHNlbGYpLCBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudChz
ZWxmKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudChzZWxmKSwgZ2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50LCAwLCAwKTsKKyAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGll
bnRzKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRv
d10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgoW1tzZWxmIHByZWZlcmVuY2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDY0MTk2KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxv
Y2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlIGNsaWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byBQYWdlIGNvbnN0cnVjdG9y
IHZpYSBzdHJ1Y3R1cmUgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODM0CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCiAyMDEwLTA3LTI3
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDY0MTk2KQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSwxMSArMjY5LDEzIEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQ
YWcKICAgICBXZWJDb3JlOjpGb250OjpzZXRDb2RlUGF0aChXZWJDb3JlOjpGb250OjpDb21wbGV4
KTsKICNlbmRpZgogCi0gICAgY2hyb21lQ2xpZW50ID0gbmV3IENocm9tZUNsaWVudFF0KHEpOwot
ICAgIGNvbnRleHRNZW51Q2xpZW50ID0gbmV3IENvbnRleHRNZW51Q2xpZW50UXQoKTsKLSAgICBl
ZGl0b3JDbGllbnQgPSBuZXcgRWRpdG9yQ2xpZW50UXQocSk7Ci0gICAgcGFnZSA9IG5ldyBQYWdl
KGNocm9tZUNsaWVudCwgY29udGV4dE1lbnVDbGllbnQsIGVkaXRvckNsaWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgbmV3IERyYWdDbGllbnRRdChxKSwgbmV3IEluc3BlY3RvckNsaWVudFF0KHEp
LCAwLCAwLCAwLCAwKTsKKyAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKKyAgICBw
YWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQocSk7CisgICAgcGFn
ZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwor
ICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBFZGl0b3JDbGllbnRRdChxKTsKKyAg
ICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IERyYWdDbGllbnRRdChxKTsKKyAgICBwYWdl
Q2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgSW5zcGVjdG9yQ2xpZW50UXQocSk7CisgICAg
cGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKIAogICAgIHNldHRpbmdzID0gbmV3IFFXZWJT
ZXR0aW5ncyhwYWdlLT5zZXR0aW5ncygpKTsKIApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MTk2KQorKysg
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFnZSBjbGllbnRzIHNob3Vs
ZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBvaW50ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgzNAor
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1l
KToKKwogMjAxMC0wNy0yNyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdlYktpdC93
aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2
aXNpb24gNjQxOTYpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTYzLDE3ICsyNTYzLDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
aW5pdFcKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoc2hv
dWxkUGFpbnROYXRpdmVDb250cm9scyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCi0gICAgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9s
b2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50KHRoaXMpOwotI2Vsc2UKLSAgICBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IDA7Ci0jZW5kaWYKLQogICAgIEJPT0wgdXNlSGln
aFJlc29sdXRpb25UaW1lcjsKICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMtPnNob3Vs
ZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCZ1c2VIaWdoUmVzb2x1dGlvblRpbWVyKSkpCiAgICAg
ICAgIFNldHRpbmdzOjpzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyh1c2VIaWdoUmVz
b2x1dGlvblRpbWVyKTsKIAotICAgIG1fcGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGll
bnQodGhpcyksIG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKSwgbmV3IFdlYkVkaXRvckNs
aWVudCh0aGlzKSwgbmV3IFdlYkRyYWdDbGllbnQodGhpcyksIG5ldyBXZWJJbnNwZWN0b3JDbGll
bnQodGhpcyksIG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQodGhpcyksIGdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudCwgMCwgMCk7CisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7
CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlz
KTsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVu
dUNsaWVudCh0aGlzKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRp
dG9yQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJh
Z0NsaWVudCh0aGlzKTsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yQ2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLnBsdWdpbkhhbHRlckNsaWVu
dCA9IG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQodGhpcyk7CisjaWYgRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKKyAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHRoaXMpOworI2VuZGlm
CisgICAgbV9wYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOwogCiAgICAgQlNUUiBsb2NhbFN0
b3JhZ2VQYXRoOwogICAgIGlmIChTVUNDRUVERUQobV9wcmVmZXJlbmNlcy0+bG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKCZsb2NhbFN0b3JhZ2VQYXRoKSkpIHsKSW5kZXg6IFdlYktpdC93eC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNjQxOTYp
CisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhZ2UgY2xpZW50cyBz
aG91bGQgYmUgcGFzc2VkIHRvIFBhZ2UgY29uc3RydWN0b3IgdmlhIHN0cnVjdHVyZSBvZiBwb2lu
dGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4
MzQKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAod3hXZWJWaWV3OjpDcmVhdGUp
OgorCiAyMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2NDE5NikKKysrIFdl
YktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDExICszMzIsMTQgQEAg
Ym9vbCB3eFdlYlZpZXc6OkNyZWF0ZSh3eFdpbmRvdyogcGFyZW50LAogICAgIFdlYkNvcmU6OkhU
TUxGcmFtZU93bmVyRWxlbWVudCogcGFyZW50RnJhbWUgPSAwOwogCiAgICAgV2ViQ29yZTo6RWRp
dG9yQ2xpZW50V3gqIGVkaXRvckNsaWVudCA9IG5ldyBXZWJDb3JlOjpFZGl0b3JDbGllbnRXeCgp
OwotICAgIG1faW1wbC0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKG5ldyBXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeCh0aGlzKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2ViQ29yZTo6
Q29udGV4dE1lbnVDbGllbnRXeCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvckNs
aWVudCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudFd4
KCksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFd4KCksIDAsIDAsIDAsIDApOworCisgICAgV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHMgcGFn
ZUNsaWVudHM7CisgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkNo
cm9tZUNsaWVudFd4KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0g
bmV3IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3goKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0
b3JDbGllbnQgPSBlZGl0b3JDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5l
dyBXZWJDb3JlOjpEcmFnQ2xpZW50V3goKTsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGll
bnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V3goKTsKKyAgICBtX2ltcGwtPnBhZ2Ug
PSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xpZW50cyk7CiAgICAgZWRpdG9yQ2xpZW50LT5zZXRQ
YWdlKG1faW1wbC0+cGFnZSk7CiAgICAgCiAgICAgbV9tYWluRnJhbWUgPSBuZXcgd3hXZWJGcmFt
ZSh0aGlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>